Giao thức vận chuyển - UDP. Sự khác biệt giữa TCP và UDP

Ở cấp độ liên kết dữ liệu và giao thức mạng Gói TCP/IP, liên quan đến cơ chế cơ bản để truyền các khối dữ liệu giữa các quốc gia và giữa các mạng, là những điều cơ bản TCP/IP. Chúng sử dụng ngăn xếp giao thức nhưng không được sử dụng trực tiếp trong các ứng dụng chạy trên giao thức TCP/IP. Trong bài viết này, chúng ta sẽ xem xét hai giao thức được các ứng dụng sử dụng: Giao thức gói dữ liệu người dùng (UDP) và Giao thức điều khiển truyền dẫn (TCP).

Giao thức gói dữ liệu người dùng
Giao thức gói dữ liệu người dùng là một giao thức rất đơn giản. Giống IP, nó là một giao thức không kết nối đáng tin cậy. Bạn không cần thiết lập kết nối với máy chủ để trao đổi dữ liệu với nó bằng cách sử dụng UDP, và không có cơ chế đảm bảo dữ liệu được truyền đi.
Khối dữ liệu được truyền bằng UDP gọi là datagram. UDP thêm bốn trường tiêu đề 16 bit (8 byte) vào dữ liệu được truyền. Các trường này là: trường độ dài, trường tổng kiểm tra, số cổng nguồn và đích. "Cổng", trong ngữ cảnh này, đại diện cho phần mềm của cổng chứ không phải cổng phần cứng.
Khái niệm số cổng là chung cho cả hai UDP và TCP. Số cổng xác định mô-đun giao thức nào chuyển tiếp (hoặc nhận) dữ liệu. Hầu hết các giao thức đều có cổng tiêu chuẩn thường được sử dụng cho việc này. Ví dụ: giao thức Telnet thường sử dụng cổng 23. Giao thức truyền thư đơn giản (SMTP), sử dụng cổng 25. Việc sử dụng số cổng tiêu chuẩn cho phép máy khách giao tiếp với máy chủ mà không cần phải quyết định sử dụng cổng nào trước.
Số cổng và giao thức trong trường tiêu đề IP trùng lặp lẫn nhau ở một mức độ nào đó, mặc dù các trường giao thức không có sẵn cho các giao thức cấp cao hơn. IP sử dụng trường giao thức để xác định nơi dữ liệu sẽ được gửi đến UDP hoặc TCP mô-đun. UDP hoặc TCP sử dụng số cổng để xác định giao thức lớp ứng dụng nào sẽ nhận dữ liệu.
Cho dù, UDP không thể đánh lừa được, nó vẫn là một lựa chọn phù hợp cho nhiều ứng dụng. Nó được sử dụng bởi các ứng dụng thời gian thực như truyền phát âm thanh và video, trong đó nếu dữ liệu bị mất, tốt hơn là không có dữ liệu đó hơn là gửi lại theo thứ tự. Nó cũng được sử dụng bởi các giao thức như Giao thức quản lý mạng đơn giản (SNMP).
Phát tin
UDP thích hợp cho việc phát sóng thông tin vì nó không yêu cầu kết nối kết nối mở. Mục tiêu của tin nhắn quảng bá được xác định bởi người gửi, tới địa chỉ IP đích được chỉ định. UDP các datagram có địa chỉ IP đích đều ở dạng nhị phân 255.255.255.255) và sẽ được mọi máy chủ trên mạng cục bộ nhận. Hãy chú ý đến từ cục bộ: các datagram có địa chỉ như vậy sẽ không được bộ định tuyến chấp nhận trên Internet.
Việc truyền tải có thể được chuyển hướng đến các mạng cụ thể. Gói dữ liệu UDP từ các phần máy chủ và mạng con của địa chỉ IP được đặt ở dạng nhị phân sẽ được phát đến tất cả các máy chủ trên tất cả các mạng con của mạng tương ứng với phần thuần túy của địa chỉ IP. Nếu chỉ đầu nhận (nói cách khác, tất cả các bit bằng 0 trong mặt nạ mạng con) được đặt thành nhị phân thì việc phát sóng sẽ bị hạn chế đối với tất cả các máy chủ trong mạng con khớp với phần còn lại của địa chỉ.
Multicast được sử dụng để truyền dữ liệu giữa một nhóm máy chủ bày tỏ mong muốn nhận được dữ liệu đó. Đa phương tiện UDP datagram có địa chỉ đích trong đó bốn bit đầu tiên là 1110, cung cấp các địa chỉ trong phạm vi 224.xxx đến 239.xxx. Các bit còn lại của địa chỉ được sử dụng để chỉ định nhóm multicast. Nó giống một kênh radio hoặc TV hơn. Vì vậy, ví dụ: 224.0.1.1 được sử dụng cho giao thức NTP. Nếu như TCP/IP các ứng dụng muốn nhận được một tin nhắn multicast, chúng phải tham gia vào nhóm multicast thích hợp bằng cách chuyển địa chỉ của nhóm vào ngăn xếp giao thức.
Các đài truyền hình về cơ bản lọc đường truyền. Multicaster không xem xét các tin nhắn riêng lẻ cho từng máy chủ tham gia nhóm. Thay vào đó, các tin nhắn sẽ được phát đi và trình điều khiển trên mỗi máy chủ sẽ quyết định xem có nên bỏ qua chúng hay chuyển nội dung vào ngăn xếp giao thức hay không.
Điều này có nghĩa là các tin nhắn multicast phải được quảng bá trên toàn bộ Internet, vì multicast không biết máy chủ nào muốn nhận tin nhắn. May mắn thay, điều này là không cần thiết. IP sử dụng giao thức có tên Giao thức quản lý nhóm Internet (IGMP) để thông báo cho bộ định tuyến biết máy chủ nào muốn nhận tin nhắn nhóm phát đa hướng để tin nhắn chỉ được gửi khi cần thiết.
Giao thức điều khiển truyền dẫn
Giao thức điều khiển truyền dẫn là giao thức lớp vận chuyển và được sử dụng bởi hầu hết các ứng dụng Internet như Telnet, FTP và HTTP. Đây là một giao thức hướng kết nối. Điều này có nghĩa là hai máy tính - một máy khách, máy kia là máy chủ - cần thiết lập kết nối giữa chúng trước khi dữ liệu có thể được truyền giữa chúng.
TCP cung cấp độ tin cậy. Ứng dụng sử dụng TCP biết rằng nó đang gửi dữ liệu nhận được ở đầu bên kia và nó đã nhận được dữ liệu đó một cách chính xác. TCP sử dụng tổng kiểm tra trên cả tiêu đề và dữ liệu. Khi nhận dữ liệu, TCP gửi xác nhận lại cho người gửi. Nếu người gửi không nhận được xác nhận trong một khoảng thời gian nhất định, dữ liệu sẽ được gửi lại.
TCP bao gồm các cơ chế để đảm bảo dữ liệu đến theo thứ tự ngược lại với thứ tự được gửi. Nó cũng thực hiện kiểm soát luồng để người gửi không thể áp đảo người nhận dữ liệu.
TCP truyền dữ liệu bằng IP trong các khối được gọi là phân đoạn. Độ dài của đoạn được xác định bởi giao thức. Ngoài tiêu đề IP, mỗi phân đoạn bao gồm 20 byte tiêu đề. Phần mở đầu TCP bắt đầu bằng trường số cổng nguồn và cổng đích 16 bit. Giống UDP, các trường này xác định cấp độ ứng dụng nhằm mục đích nhận dữ liệu. Địa chỉ IP và số cổng cùng nhau xác định duy nhất các dịch vụ đang chạy cho máy chủ và cặp được gọi là ổ cắm.
Tiếp theo trong tiêu đề là số thứ tự 32 bit. Số này chỉ định vị trí trong luồng dữ liệu mà byte dữ liệu đầu tiên trong phân đoạn sẽ chiếm giữ. Số seri TCP cho phép luồng dữ liệu được giữ theo đúng thứ tự, mặc dù các phân đoạn có thể được bắt nguồn từ một chuỗi.
Trường tiếp theo là trường 32 bit được sử dụng để truyền lại cho người gửi rằng dữ liệu đã được nhận chính xác. Nếu ACK là cờ như thường lệ thì trường này chứa vị trí của byte dữ liệu tiếp theo mà người gửi phân đoạn mong muốn nhận được.
TRONG TCP không cần phải nhận dạng mọi phân đoạn dữ liệu. Giá trị trong trường xác nhận được hiểu là “cho đến nay tất cả dữ liệu đều được nhận”. Điều này giúp tiết kiệm băng thông khi tất cả dữ liệu được định tuyến theo một hướng, giảm nhu cầu nhận dạng phân đoạn. Nếu dữ liệu được gửi đồng thời theo cả hai hướng, như trong giao tiếp song công hoàn toàn, thì tem không liên quan đến chi phí, vì phân đoạn dữ liệu một chiều có thể chứa xác nhận cho dữ liệu được gửi theo cách khác.
Tiếp theo trong tiêu đề là trường 16 bit chứa độ dài tiêu đề và cờ. TCP tiêu đề có thể chứa các trường bổ sung, do đó độ dài có thể thay đổi từ 20 đến 60 byte. Cờ: URG, ACK (mà chúng tôi đã đề cập), PSH, RST, SYN và FIN. Sau đó, chúng ta sẽ xem xét một số lá cờ khác.
Tiêu đề chứa một trường gọi là kích thước cửa sổ, cung cấp số byte mà người nhận có thể nhận được. Ngoài ra còn có tổng kiểm tra 16 bit bao gồm cả tiêu đề và dữ liệu. Cuối cùng (trước khi có dữ liệu bổ sung), có một trường được gọi là “chỉ báo khẩn cấp”. Khi cờ URG được đặt, giá trị này được hiểu là phần bù số thứ tự. Nó xác định điểm bắt đầu của dữ liệu trong luồng cần được xử lý khẩn cấp. Dữ liệu này thường được gọi là dữ liệu "ngoài nhóm". Một ví dụ về việc sử dụng nó là khi người dùng nhấn phím ngắt để dừng việc thoát khỏi chương trình trong phiên Telnet.

Khi nói về bảo mật thông tin, chúng tôi muốn nói đến tính bảo mật, tính toàn vẹn và tính sẵn có của thông tin tại bất kỳ thời điểm nào. Và nếu mọi thứ đều rõ ràng với tính bảo mật và sẵn sàng thì làm thế nào để đảm bảo tính toàn vẹn của thông tin khi truyền qua mạng? Để giải quyết vấn đề này, chúng ta sẽ cần có kiến ​​thức về các giao thức mạng. Trong bài này chúng ta sẽ xem xét các giao thức TCP và UDP. Chúng là một phần của ngăn xếp giao thức TCP/IP, thuộc lớp vận chuyển của mô hình OSI và được sử dụng để truyền thông tin từ nút này sang nút khác.

Mỗi giao thức này là gì, sự khác biệt của chúng là gì và khi nào nên sử dụng kết nối UDP và khi nào là TCP.

UDP

Giao thức UDP là giao thức cung cấp truyền dữ liệu (datagram) mà không cần tạo kết nối giữa các máy chủ trước. Khi gửi datagram, không có gì chắc chắn về sự tồn tại của người nhận và sự sẵn sàng trao đổi của người đó. Giao thức mạng UDP cũng không cung cấp thứ tự các datagram khi nhận được. Nó được sử dụng bởi các ứng dụng cần thời gian phân phối khi không có cách nào để chờ đợi các gói bị trì hoãn hoặc yêu cầu bị mất, chẳng hạn như trong các hệ thống thời gian thực. Các gói dữ liệu có thể được gửi không theo thứ tự, bị trùng lặp hoặc không được gửi đi chút nào. Đây là lý do tại sao UDP được gọi là “Giao thức gói dữ liệu không đáng tin cậy”.

Các ứng dụng sử dụng giao thức UDP không nhạy cảm với việc mất dữ liệu, gói dữ liệu không đúng thứ tự và trùng lặp. Đồng thời, họ có thể sử dụng các cơ chế tin cậy ở cấp độ ứng dụng.

TCP

Giao thức truyền dữ liệu TCP là một giao thức đảm bảo việc phân phối các gói dữ liệu một cách đáng tin cậy; nó đảm bảo thiết lập kết nối giữa hai máy chủ bằng phương pháp “bắt tay”, sau đó dữ liệu có thể được trao đổi.

Trước khi các gói được truyền qua kết nối TCP, một phiên được thiết lập với người nhận, trong đó dữ liệu sẽ được truyền. Điều này đảm bảo rằng người nhận tồn tại và sẵn sàng nhận dữ liệu. Sau khi quá trình chuyển hoàn tất, phiên sẽ đóng, người nhận được thông báo rằng sẽ không còn dữ liệu nữa và người gửi được thông báo rằng người nhận đã được thông báo.

Mỗi gói trong quá trình trao đổi đều có số sê-ri riêng. TCP tự động sắp xếp các gói bằng cách sử dụng số thứ tự và chuyển chúng đến lớp ứng dụng sau khi nối. Sau khi gửi một số gói, cần có xác nhận và số thứ tự của gói tiếp theo. Nếu không nhận được xác nhận, việc gửi sẽ được lặp lại; nếu nỗ lực không thành công, phiên sẽ kết thúc. Số lượng gói dữ liệu được yêu cầu xác nhận sẽ phụ thuộc vào độ tin cậy của mạng. Nếu dữ liệu bị mất, xác nhận sẽ tự động được yêu cầu thường xuyên hơn. Đây được gọi là cơ chế cửa sổ trượt, cho phép TCP hoạt động trên các mạng bất kể mức độ tin cậy của chúng.

Nên sử dụng TCP khi việc mất dữ liệu là không thể chấp nhận được, chẳng hạn như trong quá trình ủy quyền cũng như khi truyền thông tin được mã hóa.

Sự khác biệt giữa TCP và UDP

Điều này có nghĩa là không nên sử dụng UDP? Không có gì. Do thiếu “đảm bảo phân phối”, UDP cung cấp tốc độ truyền dữ liệu cao hơn TCP. Vì lý do này, UDP tối ưu cho các trò chơi mạng và trực tuyến, xem video phát trực tuyến, tổ chức liên lạc video và điện thoại IP.

Chia sẻ thông tin hữu ích tới những người thân yêu của bạn.

Giao thức UDP

Giao thức gói dữ liệu người dùng (UDP) là một giao thức đơn giản, không kết nối, hướng datagram, cung cấp dịch vụ truyền tải nhanh nhưng không nhất thiết phải đáng tin cậy. Nó hỗ trợ các tương tác một-nhiều và do đó thường được sử dụng để truyền các gói dữ liệu quảng bá và đa hướng.

Giao thức Internet (IP) là giao thức chính của Internet. Giao thức điều khiển truyền dẫn (TCP) và UDP là các giao thức lớp vận chuyển được xây dựng dựa trên giao thức cơ bản.

TCP/IP là một bộ giao thức, còn được gọi là Bộ giao thức Internet, bao gồm bốn lớp. Hãy nhớ rằng TCP/IP không chỉ là một giao thức mà còn là một họ hoặc một tập hợp các giao thức bao gồm các giao thức cấp thấp hơn khác như IP, TCP và UDP. UDP nằm ở lớp vận chuyển trên IP (giao thức lớp mạng). Lớp vận chuyển cung cấp liên lạc giữa các mạng thông qua các cổng. Nó sử dụng địa chỉ IP để gửi các gói dữ liệu qua Internet hoặc mạng khác bằng nhiều trình điều khiển thiết bị.

Trước khi bắt đầu tìm hiểu cách UDP hoạt động, chúng ta hãy xem xét một số thuật ngữ cơ bản mà bạn cần biết rõ. Dưới đây chúng tôi sẽ xác định ngắn gọn các thuật ngữ chính liên quan đến UDP:

Gói

Trong truyền thông dữ liệu, gói là một chuỗi các chữ số nhị phân biểu thị dữ liệu và tín hiệu điều khiển được truyền và chuyển mạch qua máy chủ. Bên trong gói, thông tin này được đặt theo một định dạng đặc biệt.

Datagram

Datagram là một gói dữ liệu độc lập, duy nhất mang đủ thông tin để truyền từ nguồn đến đích, do đó không cần lưu lượng bổ sung giữa nguồn, đích và mạng truyền tải.

MTU (Đơn vị truyền tối đa)

MTU đặc trưng cho lớp liên kết và tương ứng với số byte tối đa có thể được truyền trong một gói. Nói cách khác, MTU là gói lớn nhất mà môi trường mạng nhất định có thể mang theo. Ví dụ: Ethernet có MTU cố định là 1500 byte. Trong UDP, nếu kích thước gói dữ liệu lớn hơn MTU, giao thức IP sẽ thực hiện phân mảnh bằng cách chia gói dữ liệu thành các phần nhỏ hơn (đoạn) sao cho mỗi đoạn nhỏ hơn MTU.

Cổng

Để khớp dữ liệu đến với một quy trình cụ thể đang chạy trên máy tính, UDP sử dụng các cổng. UDP chuyển tiếp gói đến vị trí thích hợp bằng số cổng được chỉ định trong tiêu đề UDP của datagram. Các cổng được biểu thị bằng số 16 bit và do đó mang các giá trị từ 0 đến 65.535. Cổng, còn được gọi là điểm cuối kết nối logic, được chia thành ba loại:

    Các cổng nổi tiếng - từ 0 đến 1023

    Cổng đã đăng ký - từ 1024 đến 49151

    Cổng động/riêng - 49152 đến 65535

Lưu ý rằng các cổng UDP có thể nhận được nhiều tin nhắn tại bất kỳ thời điểm nào. Trong một số trường hợp, các dịch vụ TCP và UDP có thể sử dụng cùng số cổng, chẳng hạn như 7 (Echo) hoặc 23 (Telnet).

UDP sử dụng các cổng đã biết sau:

Danh sách các cổng UDP và TCP được duy trì bởi IANA (Cơ quan cấp số được gán Internet).

Các địa chỉ IP

Một datagram IP bao gồm địa chỉ IP nguồn và đích 32 bit. Địa chỉ IP đích chỉ định điểm cuối cho gói dữ liệu UDP và địa chỉ IP nguồn được sử dụng để lấy thông tin về người đã gửi tin nhắn. Tại đích, các gói được lọc và những gói có địa chỉ nguồn không có trong bộ địa chỉ hợp lệ sẽ bị loại bỏ mà không thông báo cho người gửi.

Địa chỉ IP unicast xác định duy nhất một máy chủ trên mạng, trong khi địa chỉ IP multicast xác định một nhóm địa chỉ cụ thể trên mạng. Địa chỉ IP quảng bá được tất cả các máy chủ trên mạng cục bộ hoặc mạng con cụ thể nhận và xử lý.

TTL

Giá trị thời gian tồn tại hoặc TTL (thời gian tồn tại) cho phép bạn đặt giới hạn trên cho số lượng bộ định tuyến mà gói dữ liệu có thể đi qua. Giá trị TTL ngăn chặn các gói bị vướng vào các vòng lặp vô tận. Nó được khởi tạo bởi người gửi và giảm đi một bởi mỗi bộ định tuyến xử lý datagram. Khi giá trị TTL bằng 0, datagram sẽ bị loại bỏ.

Gửi thư nhóm

Multicast là một phương pháp mở, dựa trên tiêu chuẩn để phân phối thông tin giống hệt nhau cho nhiều người dùng cùng một lúc. Multicast là tính năng chính của giao thức UDP; giao thức TCP không thể thực hiện được. Multicast cho phép tương tác một-nhiều, ví dụ như tạo ra các ứng dụng khả thi như gửi tin tức và thư đến nhiều người nhận, radio Internet hoặc các chương trình demo thời gian thực. Multicast không tải mạng nhiều như truyền phát quảng bá vì dữ liệu được gửi đến nhiều người dùng cùng một lúc:

UDP hoạt động như thế nào

Khi một ứng dụng dựa trên UDP gửi dữ liệu đến một máy chủ khác trên mạng, UDP sẽ gắn thêm nó với một tiêu đề 8 bit chứa số cổng đích và nguồn, tổng độ dài của dữ liệu và tổng kiểm tra. IP thêm tiêu đề của nó lên trên gói dữ liệu UDP, tạo thành gói dữ liệu IP:

Hình trước chỉ ra rằng tổng chiều dài của tiêu đề UDP là 8 byte. Kích thước tối đa theo lý thuyết của một datagram IP là 65.535 byte. Với 20 byte tiêu đề IP và 8 byte tiêu đề UDP, độ dài dữ liệu người dùng có thể lên tới 65.507 byte. Tuy nhiên, hầu hết các chương trình đều hoạt động với kích thước dữ liệu nhỏ hơn. Do đó, đối với hầu hết các ứng dụng, độ dài mặc định là khoảng 8192 byte, vì đây là lượng dữ liệu được đọc và ghi bởi Hệ thống tệp mạng (NFS). Bạn có thể đặt kích thước của bộ đệm đầu vào và đầu ra.

Tổng kiểm tra là cần thiết để kiểm tra xem dữ liệu có được gửi đến đích chính xác hay bị hỏng hay không. Nó bao gồm cả tiêu đề UDP và dữ liệu. Một byte phụ được sử dụng nếu tổng số octet trong datagram là số lẻ. Nếu tổng kiểm tra nhận được bằng 0, người nhận sẽ ghi lại lỗi tổng kiểm tra và loại bỏ gói dữ liệu. Mặc dù tổng kiểm tra là một tính năng tùy chọn nhưng bạn nên bao gồm nó.

Trong bước tiếp theo, lớp IP thêm 20 byte tiêu đề bao gồm TTL, địa chỉ IP nguồn và đích cũng như các thông tin khác. Hành động này được gọi là đóng gói IP.

Như đã đề cập trước đó, kích thước gói tối đa là 65.507 byte. Nếu một gói vượt quá kích thước MTU mặc định, lớp IP sẽ chia gói thành các phân đoạn. Các phân đoạn này được gọi là các đoạn và quá trình chia dữ liệu thành các phân đoạn được thực hiện sự phân mảnh. Tiêu đề IP chứa tất cả thông tin phân đoạn.

Khi ứng dụng gửi "ném" một datagram vào mạng, nó sẽ được định tuyến đến địa chỉ IP đích được chỉ định trong tiêu đề IP. Khi đi qua bộ định tuyến, giá trị thời gian tồn tại (TTL) trong tiêu đề IP sẽ giảm đi một.

Khi một datagram đến một đích và cổng nhất định, lớp IP sẽ kiểm tra tiêu đề của nó để xem liệu datagram có bị phân mảnh hay không. Nếu vậy, datagram được tập hợp theo thông tin trong tiêu đề. Cuối cùng, lớp ứng dụng lấy dữ liệu đã lọc bằng cách xóa tiêu đề.

Nhược điểm của UDP

So với TCP, UDP có những nhược điểm sau:

    Không có tín hiệu xác nhận. Trước khi gửi gói UDP, bên gửi không trao đổi tín hiệu bắt tay với bên nhận. Do đó, người gửi không có cách nào để biết liệu datagram đã đến được hệ thống đích hay chưa. Do đó, UDP không thể đảm bảo rằng dữ liệu sẽ thực sự được gửi đến đích (ví dụ: nếu hệ thống hoặc mạng cuối không hoạt động).

    Ngược lại, TCP hướng kết nối và cho phép liên lạc giữa các máy chủ được kết nối mạng bằng các gói. TCP sử dụng tín hiệu bắt tay để xác minh rằng dữ liệu đã được vận chuyển thành công.

    Sử dụng phiên. Bản chất hướng kết nối của TCP được hỗ trợ bởi các phiên giữa các máy chủ. TCP sử dụng mã định danh phiên để theo dõi các kết nối giữa hai máy chủ. UDP không hỗ trợ phiên do tính chất không kết nối của nó.

    độ tin cậy. UDP không đảm bảo rằng chỉ một bản sao dữ liệu sẽ được gửi đến người nhận. Để gửi một lượng lớn dữ liệu đến hệ thống cuối, UDP chia nó thành nhiều phần nhỏ. UDP không đảm bảo rằng các bộ phận này sẽ được chuyển đến đích theo đúng thứ tự mà chúng được tạo tại nguồn. Ngược lại, TCP sử dụng số thứ tự cùng với số cổng và gửi xác nhận thường xuyên để đảm bảo phân phối dữ liệu có trật tự.

    Sự an toàn. TCP an toàn hơn UDP. Trong nhiều tổ chức, tường lửa và bộ định tuyến không cho phép các gói UDP đi qua. Điều này là do tin tặc có thể lợi dụng các cổng UDP mà không thực hiện kết nối rõ ràng.

    Kiểm soát lưu lượng. UDP không có khả năng kiểm soát luồng và do đó, ứng dụng UDP được thiết kế kém có thể tiêu tốn một phần đáng kể băng thông mạng.

Lợi ích của UDP

So với TCP, UDP có những ưu điểm sau:

    Không có kết nối nào được thiết lập. UDP là giao thức không kết nối nên nó loại bỏ chi phí liên quan đến việc thiết lập kết nối. Vì UDP không sử dụng bắt tay nên cũng tránh được tình trạng trễ kết nối. Đây là lý do tại sao DNS ưu tiên UDP hơn TCP - DNS sẽ chậm hơn nhiều nếu chạy trên TCP.

    Tốc độ. UDP nhanh hơn TCP. Vì lý do này, nhiều ứng dụng thích UDP hơn TCP. Các tính năng tương tự giúp TCP mạnh mẽ hơn (chẳng hạn như tín hiệu bắt tay) cũng làm nó chậm lại.

    Đa dạng cấu trúc liên kết. UDP hỗ trợ liên lạc một-một và một-nhiều, trong khi TCP chỉ hỗ trợ liên lạc một-một.

    Chi phí chung. Làm việc với TCP có nghĩa là chi phí tăng lên, chi phí do UDP áp đặt thấp hơn đáng kể. TCP sử dụng nhiều tài nguyên hệ điều hành hơn UDP và kết quả là UDP được sử dụng rộng rãi trong các môi trường nơi máy chủ phục vụ nhiều máy khách cùng lúc.

    Kích thước tiêu đề. Đối với mỗi gói, tiêu đề UDP chỉ dài 8 byte, trong khi TCP có tiêu đề 20 byte và do đó UDP tiêu thụ ít băng thông mạng hơn.

Tôi thực sự thích cả loạt bài viết, hơn nữa tôi luôn muốn thử sức mình với vai trò một dịch giả. Có lẽ bài viết có vẻ quá rõ ràng đối với các nhà phát triển có kinh nghiệm, nhưng đối với tôi, có vẻ như nó sẽ hữu ích trong mọi trường hợp.

Xin chào, tên tôi là Glenn Fiedler và chào mừng bạn đến với bài viết đầu tiên trong cuốn sách trực tuyến của tôi, Lập trình mạng dành cho nhà phát triển trò chơi.

Trong bài viết này, chúng ta sẽ bắt đầu với những khía cạnh cơ bản nhất của lập trình mạng - nhận và truyền dữ liệu qua mạng. Nhận và truyền dữ liệu là phần cơ bản và đơn giản nhất trong toàn bộ nhiệm vụ mà các nhà lập trình mạng thực hiện, nhưng thường rất khó để xác định cách nào là tốt nhất để tiến hành. Hãy chú ý đầy đủ đến phần này - nếu bạn hiểu lầm, nó có thể dẫn đến hậu quả nghiêm trọng cho trò chơi nhiều người chơi của bạn sau này!

Rất có thể bạn đã nghe điều gì đó về socket và bạn có thể biết rằng chúng có hai loại chính - TCP và UDP. Điều đầu tiên bạn cần quyết định khi phát triển trò chơi nhiều người chơi là sử dụng loại ổ cắm nào - TCP, UDP hay cả hai?

Việc lựa chọn loại ổ cắm phụ thuộc hoàn toàn vào thể loại trò chơi bạn đang phát triển. Trong loạt bài viết này, tôi giả định rằng bạn đang viết một trò chơi hành động - như Halo, Battlefield 1942, Quake, Unreal, CounterStrike, Team Fortress, v.v.

Bây giờ chúng ta sẽ xem xét kỹ hơn các thuộc tính của từng loại ổ cắm (có tính đến thực tế là chúng tôi đang phát triển một trò chơi theo phong cách hành động) và đi sâu hơn một chút vào chi tiết về cách hoạt động của Internet. Sau khi xem xét chi tiết, lựa chọn phù hợp sẽ trở nên rõ ràng!

TCP là viết tắt của “giao thức điều khiển truyền tải” và IP là viết tắt của “giao thức internet”. Chúng cùng nhau củng cố hầu hết mọi việc bạn thực hiện trực tuyến, từ duyệt web đến IRC và liên lạc qua email - tất cả đều chạy trên TCP/IP.

Nếu bạn đã từng sử dụng TCP socket thì bạn nên biết rằng TCP là giao thức sử dụng nguyên tắc kết nối đáng tin cậy. Điều này có nghĩa là bạn thiết lập kết nối giữa hai máy tính, sau đó gửi dữ liệu giữa chúng, giống như thể bạn đang ghi thông tin vào một tệp trên một máy tính và đọc nó từ cùng một tệp trên một máy tính khác.

Trong trường hợp này, kết nối được coi là đáng tin cậy và nhất quán - nghĩa là tất cả thông tin bạn gửi được đảm bảo đến tay người nhận theo đúng thứ tự gửi. Ngoài ra, kết nối TCP có thể được coi là một luồng dữ liệu liên tục - bản thân giao thức sẽ đảm nhiệm việc chia dữ liệu thành các gói và gửi chúng qua mạng.

Một lần nữa - mọi thứ đều đơn giản như việc viết hoặc đọc thông thường từ một tệp. Watson sơ cấp!

Nhưng tính dễ sử dụng này hoàn toàn khác với những gì thực sự xảy ra "dưới mui xe", ở cấp độ thấp hơn - cấp độ giao thức IP.

Ở cấp độ này không có khái niệm về kết nối - thay vào đó các gói riêng lẻ được truyền từ máy tính này sang máy tính khác. Bạn có thể coi quá trình này giống như việc chuyển một tờ giấy bạc từ người này sang người khác trong một căn phòng đầy người: cuối cùng tờ giấy bạc đó đã đến tay đúng người, nhưng đồng thời lại được chuyển qua nhiều bàn tay.

Tuy nhiên, không có gì đảm bảo rằng bức thư sẽ đến tay người nhận. Người gửi chỉ cần gửi một tin nhắn với hy vọng rằng nó sẽ đến, nhưng thậm chí không biết tin nhắn đã đến hay chưa - cho đến khi người nhận quyết định viết lại.
Đương nhiên, trên thực tế, mọi thứ phức tạp hơn một chút, vì máy tính gửi không biết chính xác trình tự các máy tính trên mạng mà gói tin phải được truyền qua đó để nó đến nhanh nhất có thể. Đôi khi IP truyền nhiều bản sao của cùng một gói, có thể đi theo các đường dẫn khác nhau để đến đích - và có thể đến vào các thời điểm khác nhau.

Điều gì sẽ xảy ra nếu chúng ta muốn truyền thông tin giữa các máy tính không theo kiểu đọc/ghi tệp mà bằng cách gửi và nhận trực tiếp các gói riêng lẻ?

Chà, chúng ta có thể làm điều này bằng UDP. UDP là viết tắt của “giao thức gói dữ liệu người dùng” và nó chạy trên IP (như TCP), nhưng thay vì bổ sung thêm nhiều chức năng, nó chỉ là một tiện ích bổ sung nhỏ cho IP.

Sử dụng UDP, chúng ta có thể gửi một gói đến một địa chỉ IP cụ thể (ví dụ: 112.140.20.10) và cổng (ví dụ: 52423) và nó sẽ được truyền từ máy tính này sang máy tính khác cho đến khi đến đích (hoặc bị mất dọc theo đường truyền). đường).

Đồng thời, về phía người nhận, chúng tôi chỉ ngồi đợi, lắng nghe một cổng nhất định (trong trường hợp của chúng tôi là 52423) và khi một gói tin đến từ ai đó (hãy nhớ rằng không sử dụng kết nối nào), chúng tôi sẽ nhận được thông báo về điều này với địa chỉ và cổng của máy tính gửi, kích thước gói và sau đó chúng ta có thể đọc dữ liệu từ gói này.

Giao thức UDP không đảm bảo việc truyền dữ liệu. Trong thực tế, tất nhiên, hầu hết các gói đều đến được, nhưng luôn có độ thất thoát khoảng 1-5% và đôi khi có những khoảng thời gian mà các gói không đến được (hãy nhớ rằng giữa người gửi và người nhận có thể có có thể là hàng nghìn máy tính, trên bất kỳ máy nào cũng có thể bị lỗi hoặc hỏng).

Ngoài ra, UDP không đảm bảo thứ tự các gói được phân phối. Bạn có thể gửi năm gói theo thứ tự - 1, 2, 3, 4, 5 - nhưng chúng có thể đến theo thứ tự hoàn toàn khác - ví dụ: 3, 1, 2, 5, 4. Một lần nữa, trong thực tế, rất có thể chúng sẽ gửi hầu hết mọi lúc đều đến đúng thứ tự, nhưng bạn không thể dựa vào đó!

Cuối cùng, mặc dù UDP không bổ sung nhiều cho IP nhưng nó đảm bảo một điều. Nếu bạn chuyển tiếp một gói, nó sẽ đến nơi hoàn toàn hoặc không hề đến. Vì vậy, nếu bạn gửi gói 256 byte đến một máy tính khác thì nó không thể chỉ nhận 100 byte đầu tiên từ gói - nó phải nhận tất cả 256 byte. Đây thực sự là điều duy nhất mà giao thức UDP đảm bảo - mọi thứ khác đều do bạn đảm nhận.

Vì vậy, chúng ta cần phải quyết định - chúng ta nên sử dụng socket TCP hay UDP? Chúng ta hãy xem thuộc tính của chúng:

  • Sử dụng nguyên tắc kết nối
  • Đảm bảo giao hàng và quay vòng
  • Tự động chia thông tin thành các gói
  • Đảm bảo rằng dữ liệu không được gửi quá nhiều (kiểm soát luồng dữ liệu)
  • Dễ sử dụng - như viết/đọc từ một tập tin
UDP:
  • Không sử dụng nguyên tắc kết nối - bạn sẽ phải thực hiện thủ công
  • Không đảm bảo việc giao hàng và thứ tự giao các gói hàng - chúng có thể đến không đúng thứ tự, trùng lặp hoặc hoàn toàn không đến nơi!
  • Bạn cần chia dữ liệu thành các gói theo cách thủ công và gửi chúng
  • Bạn cần cẩn thận không gửi dữ liệu quá sâu
  • Nếu một gói bị mất, bạn cần phải theo dõi nó bằng cách nào đó và nếu cần, hãy gửi lại nó
Với danh sách như vậy, giải pháp có vẻ hiển nhiên - TCP triển khai tất cả các chức năng chúng ta cần và dễ sử dụng hơn, trong khi việc sử dụng UDP hứa hẹn sẽ gây ra bệnh trĩ khi viết mọi thứ theo cách thủ công, từ đầu. Vậy chúng ta sử dụng TCP phải không?

Nhưng không.

Sử dụng TCP có lẽ là sai lầm tồi tệ nhất bạn có thể mắc phải khi phát triển trò chơi nhiều người chơi. Để hiểu lý do tại sao, chúng ta hãy xem điều gì khiến TCP trở nên dễ sử dụng đến vậy!

Cách thức hoạt động của TCP
TCP và UDP đều hoạt động trên IP, nhưng trên thực tế chúng hoàn toàn khác nhau. UDP hoạt động rất giống với IP, trong khi TCP giúp người dùng tránh khỏi tất cả các vấn đề về gói, khiến cho tương tác tương tự như đọc/ghi vào một tệp.

Vì vậy, làm thế nào để anh làm điều đó?

Đầu tiên, TCP sử dụng tính năng trừu tượng hóa luồng dữ liệu - bạn có thể chỉ cần ghi byte dữ liệu vào luồng đó và TCP sẽ đảm bảo luồng đó đến đích. Vì IP truyền dữ liệu theo gói và TCP chạy trên IP nên TCP phải chia luồng đầu vào của người dùng thành các gói riêng lẻ. Vì vậy, bên trong TCP, một số logic sẽ thu thập dữ liệu vào hàng đợi và khi có đủ dữ liệu, nó sẽ tạo thành một gói và gửi đến đích.

Hành vi này có thể là một vấn đề đối với trò chơi nhiều người chơi của chúng tôi nếu chúng tôi cần chuyển các gói rất nhỏ. Có thể xảy ra trường hợp TCP quyết định không truyền dữ liệu của chúng ta cho đến khi nó tích lũy đủ để tạo thành một gói có kích thước nhất định (ví dụ: hơn một trăm byte). Và đây là một vấn đề lớn, vì cần phải truyền dữ liệu từ máy khách (tổ hợp phím của người chơi) sang máy chủ càng nhanh càng tốt, và nếu có sự chậm trễ do đệm dữ liệu theo giao thức thì đối với người chơi ở phía máy khách. trò chơi sẽ không phải là một cách dễ chịu nhất. Trong trường hợp này, việc cập nhật các đối tượng trò chơi sẽ xảy ra với độ trễ và hiếm khi xảy ra - trong khi chúng ta cần cập nhật các đối tượng đúng thời gian và thường xuyên.

TCP có một tùy chọn để khắc phục điều này - “TCP_NODELAY”. Nó yêu cầu giao thức không đợi dữ liệu tích lũy trong hàng đợi gửi mà phải gửi ngay lập tức.

Thật không may, ngay cả khi cài đặt tùy chọn này, TCP vẫn gặp rất nhiều vấn đề khi sử dụng trong trò chơi trực tuyến.

Căn nguyên của mọi vấn đề nằm ở cách TCP xử lý các gói bị mất hoặc không theo thứ tự, tạo ra ảo tưởng về một kết nối nhất quán và đáng tin cậy.

Cách TCP đảm bảo độ tin cậy của kết nối
Khi truyền, TCP chia luồng dữ liệu thành các gói riêng lẻ, chuyển tiếp chúng qua mạng bằng giao thức IP không đáng tin cậy, sau đó xây dựng lại luồng ban đầu từ các gói đã nhận trên máy tính nhận.

Nhưng điều gì xảy ra nếu một trong các gói không đến? Hoặc nếu các gói hàng đến không đúng thứ tự hoặc bị trùng lặp?

Không đi sâu vào chi tiết về cách hoạt động của TCP (và đây thực sự là một chủ đề rất phức tạp - bạn có thể đọc nó trong TCP/IP Illustrated), quy trình sẽ như sau: TCP gửi một gói, xác định rằng gói đó không đến và gửi lại gói tin tương tự cho người nhận. Các gói trùng lặp sẽ được loại bỏ ở phía người nhận và các gói đến không đúng thứ tự sẽ được sắp xếp lại để mọi thứ vẫn như cũ - đáng tin cậy và đúng thứ tự.

Vấn đề là khi TCP “đồng bộ hóa” luồng dữ liệu theo cách này, nếu một gói bị mất, quá trình truyền sẽ dừng lại cho đến khi gói bị mất được gửi lại (và được đích đến nhận). Nếu dữ liệu mới đến trong khi chờ đợi, nó sẽ được xếp hàng đợi và bạn sẽ không thể đọc được cho đến khi gói bị mất đến. Mất bao lâu để gửi lại một gói hàng? Ít nhất phải mất thời gian khứ hồi của gói (khi TCP xác định gói nào sẽ gửi lại), cộng với thời gian để phân phối lại gói bị mất. Vì vậy, nếu ping giữa các máy tính là 125 ms, việc truyền lại gói sẽ mất khoảng 1/5 giây và trong trường hợp xấu nhất là lên tới nửa giây (hãy tưởng tượng nếu gói gửi lại đột nhiên bị mất). Veselukha!

Tại sao bạn không bao giờ nên sử dụng TCP cho trò chơi nhiều người chơi
Vấn đề khi sử dụng TCP trong trò chơi trực tuyến là không giống như trình duyệt, email và các ứng dụng khác, trò chơi dựa vào tương tác thời gian thực. Đối với nhiều khía cạnh của trò chơi, chẳng hạn như thao tác gõ phím của người dùng và vị trí của người chơi trong trò chơi, điều gì đã xảy ra một giây trước không quan trọng mà chỉ là trạng thái hiện tại nhất của thế giới trò chơi.

Hãy xem một ví dụ đơn giản về trò chơi nhiều người chơi, chẳng hạn như game bắn súng 3D. Phần mạng của trò chơi được xây dựng rất đơn giản: mỗi lần lặp lại của chu kỳ trò chơi, máy khách sẽ gửi đến máy chủ một bản mô tả về tất cả các hành động của người chơi (nhấn phím, vị trí chuột, v.v.) và mỗi lần lặp lại máy chủ sẽ xử lý dữ liệu này , cập nhật mô hình của thế giới trò chơi và gửi lại mô hình hiện tại về vị trí khách hàng của các đối tượng trong thế giới để nó vẽ ra một khung hình mới cho người chơi.

Vì vậy, trong trò chơi của chúng tôi, nếu một gói bị mất khi truyền qua mạng, trò chơi sẽ dừng và đợi cho đến khi gói được gửi lại. Về phía client, các đối tượng trong trò chơi bị đóng băng và trên máy chủ, người chơi cũng không thể di chuyển hoặc bắn vì máy chủ không thể nhận các gói tin mới. Khi gói bị mất cuối cùng cũng đến, nó chứa thông tin lỗi thời không còn phù hợp nữa. Ngoài ra, sau đó, tất cả các gói đã tích lũy trong hàng đợi trong thời gian chờ cũng sẽ đến và tất cả chúng cần được xử lý trong một lần lặp của vòng lặp. Hoàn toàn nhầm lẫn!

Thật không may, không có cách nào để thay đổi hành vi này của TCP và cũng không cần thiết phải làm vậy vì đây là ý nghĩa của TCP. Đây là điều cần thiết để làm cho việc truyền dữ liệu qua Internet trở thành một luồng dữ liệu nhất quán và đáng tin cậy.
Nhưng chúng ta không cần một luồng dữ liệu nhất quán và đáng tin cậy.

Chúng tôi cần dữ liệu được chuyển từ máy khách đến máy chủ nhanh nhất có thể và chúng tôi không muốn đợi dữ liệu được gửi lại.
Đây là lý do tại sao bạn không bao giờ nên sử dụng TCP cho các trò chơi nhiều người chơi.

Nhưng chờ đã! Tại sao tôi không thể sử dụng cả UDP và TCP cùng nhau?

Đối với dữ liệu trò chơi theo thời gian thực, chẳng hạn như số lần nhấp của người dùng và trạng thái thế giới trò chơi, chỉ dữ liệu mới nhất là quan trọng, nhưng đối với các loại dữ liệu khác, chẳng hạn như tập lệnh được gửi từ máy tính này sang máy tính khác, độ tin cậy và tính nhất quán của kênh có thể rất quan trọng.

Tất nhiên, việc sử dụng UDP cho dữ liệu đầu vào và trạng thái thế giới của người dùng cũng như TCP cho dữ liệu phải được đảm bảo sẽ được gửi đi là điều hấp dẫn. Bạn thậm chí có thể nghĩ rằng bạn có thể tạo nhiều “chuỗi” lệnh - ví dụ: một cho các cấp độ tải, một cho các lệnh AI. Bạn đang nghĩ, “Tôi không cần các đội AI xếp hàng chờ nếu gói dữ liệu tải một cấp độ bị mất, vì chúng hoàn toàn không liên quan!” Trong trường hợp này, bạn đã đúng và bạn có thể quyết định tạo một ổ cắm TCP cho mỗi luồng lệnh.

Thoạt nhìn, đây là một ý tưởng tuyệt vời. Nhưng vấn đề là vì TCP và UDP đều chạy trên IP nên các gói của cả hai giao thức sẽ ảnh hưởng lẫn nhau - đã ở cấp IP. Hiệu ứng này sẽ biểu hiện chính xác như thế nào là một câu hỏi rất phức tạp và nó liên quan đến các cơ chế độ tin cậy trong TCP. Tuy nhiên, trong mọi trường hợp, hãy lưu ý rằng việc sử dụng TCP thường dẫn đến tình trạng mất gói UDP tăng lên. Nếu bạn muốn biết thêm về điều này, bạn có thể đọc

Chúc một ngày tốt lành, độc giả thân mến.
Theo nhu cầu phổ biến, hôm nay tôi đăng cho các bạn một bài viết nhằm giới thiệu cho các bạn những thuật ngữ cơ bản về mạng máy tính, cụ thể là:

  • Giao thức mạng - những cái tên đáng sợ này là gì và chúng dùng để làm gì?
  • UDP, TCP, ICMP, - cái gì, tại sao và sự khác biệt là gì
  • IP-địa chỉ, - mọi người đều có nó, nhưng không phải ai cũng biết tại sao lại có thứ này :-)
  • Mặt nạ địa chỉ (mạng con)
  • Cổng vào
  • Một vài lời về bảng định tuyến
  • Cổng - chúng thực sự là gì
  • MAC-Địa chỉ

Như thế.

Tôi nghĩ bài viết sẽ hữu ích cho tất cả mọi người, già cũng như trẻ, vì nó không chứa quá nhiều hành động hoặc từ ngữ kỳ lạ, khó hiểu mà là một khối thông tin được trình bày bằng ngôn ngữ dễ tiếp cận, mà ít nhất sẽ cung cấp bạn hiểu về cách thức hoạt động nói chung và tại sao nó lại cần thiết. Đi.

Giao thức mạng TCP/IP, NWLink IPX/SPX, NetBEUI

Hãy bắt đầu với giao thức mạng là gì và nó được sử dụng để làm gì.
Giao thức mạng là một tập hợp các quy tắc được triển khai bằng phần mềm để liên lạc giữa các máy tính. Một loại ngôn ngữ trong đó các máy tính nói chuyện với nhau và truyền tải thông tin. Trước đây, máy tính có thể nói là đa ngôn ngữ và ở các phiên bản cũ hơn các cửa sổ toàn bộ bộ giao thức đã được sử dụng - TCP/IP, NWLink IPX/SPX, NetBEUI. Bây giờ chúng tôi đã đi đến một thỏa thuận chung và tiêu chuẩn đã trở thành việc sử dụng độc quyền giao thức TCP/IP, và do đó sẽ thảo luận thêm về anh ta.

Khi họ nói về TCP/IP, thì tên này thường có nghĩa là nhiều... quy tắc khác nhau hoặc, chẳng hạn, các tiêu chuẩn được quy định khi sử dụng (hoặc để sử dụng) giao thức này. Vì vậy, ví dụ, có những quy tắc theo đó tin nhắn được trao đổi giữa các máy chủ thư và có những quy tắc theo đó người dùng cuối nhận được thư trong hộp thư của mình. Có các quy tắc tiến hành hội nghị truyền hình và các quy tắc tổ chức các cuộc trò chuyện “điện thoại” qua Internet. Trên thực tế, đây thậm chí không phải là những quy tắc thực sự... Giống như một loại ngữ pháp hay thứ gì đó hơn. Chà, bạn biết đấy, trong tiếng Anh có một cấu trúc để xây dựng hội thoại, trong tiếng Pháp có một cấu trúc khác... Vì vậy, trong TCP/IP một cái gì đó tương tự, tức là một loạt các quy tắc ngữ pháp khác nhau tạo thành một giao thức hoàn chỉnh TCP/IP hay chính xác hơn là Ngăn xếp giao thức TCP/IP.

Giao thức mạng UDP, TCP, ICMP

Là một phần của giao thức TCP/IP các giao thức được sử dụng để truyền dữ liệu - TCPUDP. Chắc hẳn nhiều người đã từng nghe nói có những cổng như TCP, Vì thế UDP, nhưng không phải ai cũng biết sự khác biệt là gì và ý nghĩa của nó là gì. Vì thế..

Truyền dữ liệu qua giao thức TCP(Giao thức điều khiển truyền) cung cấp xác nhận việc nhận thông tin. "Chà, họ nói, bạn hiểu chưa? - Hiểu rồi!" Nếu bên truyền không nhận được xác nhận cần thiết trong khung thời gian đã thiết lập, dữ liệu sẽ được truyền lại. Do đó giao thức TCPđược gọi là các giao thức dựa trên kết nối và UDP(Giao thức gói dữ liệu người dùng) - không. UDPđược sử dụng trong trường hợp không cần xác nhận việc tiếp nhận (ví dụ: truy vấn DNS hoặc điện thoại IP (đại diện nổi bật trong số đó là Skype)). Đó là, sự khác biệt nằm ở sự hiện diện của xác nhận tiếp nhận. Có vẻ như “thế thôi!”, nhưng trên thực tế, nó đóng một vai trò quan trọng.

Ngoài ra còn có một giao thức ICMP(Giao thức tin nhắn điều khiển Internet) được sử dụng để truyền dữ liệu về các thông số mạng. Nó bao gồm các loại gói tiện ích như ping, khoảng cách không thể truy cập, TTL vân vân.

Địa chỉ IP là gì

Mọi người đều có một địa chỉ, nhưng không phải ai cũng biết đây là loại địa chỉ nào và tại sao không thể sống thiếu nó. Tôi đang nói với bạn.

IP-Địa chỉ - 32 -x số bit được sử dụng để nhận dạng một máy tính trên mạng. Thông thường, người ta thường viết địa chỉ bằng giá trị thập phân của mỗi octet của số này, phân tách các giá trị kết quả bằng dấu chấm. Ví dụ, 192.168.101.36

IPđịa chỉ là duy nhất, có nghĩa là mỗi máy tính có tổ hợp số riêng và không thể có hai máy tính trên mạng có cùng địa chỉ. IP-Các địa chỉ được phân bổ tập trung, các nhà cung cấp Internet nộp đơn đăng ký tới các trung tâm quốc gia phù hợp với nhu cầu của họ. Phạm vi địa chỉ mà nhà cung cấp nhận được sẽ được phân bổ rộng rãi hơn giữa các khách hàng. Ngược lại, khách hàng có thể tự mình đóng vai trò là nhà cung cấp và phân phối thông tin nhận được IP-địa chỉ giữa các khách hàng phụ, v.v. Với phương thức phân phối này IP-địa chỉ, hệ thống máy tính biết chính xác “vị trí” của máy tính, có địa chỉ duy nhất IP-Địa chỉ; - chỉ cần cô ấy gửi dữ liệu đến mạng “chủ sở hữu” là đủ và nhà cung cấp sẽ phân tích đích đến và biết phần địa chỉ này được cung cấp cho ai, sẽ gửi thông tin cho chủ sở hữu tiếp theo của băng tần con IP-địa chỉ cho đến khi dữ liệu đến máy tính đích.

Để xây dựng mạng cục bộ, các dải địa chỉ đặc biệt được phân bổ. Đây là những địa chỉ 10.x.x.x,192.168.x.x, 10.x.x.x, c 172.16.x.x Qua 172.31.x.x, 169.254.x.x, ở đâu dưới x- có nghĩa là bất kỳ số nào từ 0 trước 254 . Các gói được truyền từ các địa chỉ được chỉ định sẽ không được định tuyến, nói cách khác, chúng đơn giản là không được gửi qua Internet và do đó các máy tính trên các mạng cục bộ khác nhau có thể có địa chỉ trùng khớp trong phạm vi được chỉ định. Tức là ở công ty LLC " Sừng và móng guốc"và LLC" Vasya và công ty"có thể có hai máy tính có địa chỉ 192.168.0.244 , nhưng họ không thể nói với địa chỉ 85.144.213.122 , nhận được từ nhà cung cấp Internet, bởi vì Không thể có hai cái giống hệt nhau trên Internet. IP-địa chỉ. Để gửi thông tin từ các máy tính như vậy tới Internet và ngược lại, các chương trình và thiết bị đặc biệt được sử dụng để thay thế địa chỉ cục bộ bằng địa chỉ thực khi làm việc với Internet. Nói cách khác, dữ liệu được gửi tới Mạng từ một thiết bị thực IP-địa chỉ, không phải từ địa phương. Quá trình này xảy ra mà người dùng không nhận thấy và được gọi là dịch địa chỉ. Tôi cũng muốn đề cập rằng trong cùng một mạng lưới, chẳng hạn như một công ty, LLC " Sừng và móng guốc", không thể có hai máy tính có cùng địa chỉ IP cục bộ, tức là trong ví dụ trên, điều đó có nghĩa là một máy tính có địa chỉ 192.168.0.244 ở một công ty, công ty thứ hai có cùng địa chỉ - ở một công ty khác. Trong cùng một công ty có hai máy tính có địa chỉ 192.168.0.244 đơn giản là họ sẽ không hợp nhau.

Bạn có muốn biết và có thể tự mình làm được nhiều hơn không?

Chúng tôi cung cấp cho bạn đào tạo về các lĩnh vực sau: máy tính, chương trình, quản trị, máy chủ, mạng, xây dựng trang web, SEO và hơn thế nữa. Tìm hiểu chi tiết ngay bây giờ!

Có thể bạn đã từng nghe những thuật ngữ như external IP và nội bộ IP, hằng số (IP tĩnh) và biến (động) IP. Tóm tắt về họ:

  • bên ngoài IP- cái này giống hệt cái này IP, được nhà cung cấp cấp cho bạn, tức là. Ví dụ: địa chỉ duy nhất của bạn trên Internet - 85.144.24.122
  • Nội địa IP, mang tính chất địa phương IP, I E. Của bạn IP trên mạng cục bộ chẳng hạn - 192.168.1.3
  • tĩnh IP- Cái này IP, không thay đổi với mỗi kết nối, tức là. được giao cho bạn một cách chắc chắn và mãi mãi
  • năng động IP, đang nổi IP-địa chỉ thay đổi theo mỗi kết nối

Kiểu của bạn IP(tĩnh hoặc động) tùy thuộc vào cài đặt của nhà cung cấp.

Mặt nạ địa chỉ (mạng con) là gì

Khái niệm mạng con được đưa ra để chúng ta có thể làm nổi bật một phần IP- địa chỉ của một tổ chức, một phần của tổ chức khác, v.v. Mạng con là một dải địa chỉ IP được coi là thuộc về cùng một mạng cục bộ. Khi làm việc trên mạng cục bộ, thông tin sẽ được gửi trực tiếp đến người nhận. Nếu dữ liệu dành cho các máy tính có địa chỉ IP không thuộc mạng cục bộ thì các quy tắc đặc biệt sẽ được áp dụng cho dữ liệu đó để tính toán lộ trình chuyển tiếp từ mạng này sang mạng khác.

Mặt nạ là một tham số cho phần mềm biết có bao nhiêu máy tính được bao gồm trong một nhóm (mạng con) nhất định. Mặt nạ địa chỉ có cấu trúc giống như địa chỉ IP: nó là một tập hợp gồm bốn nhóm số, mỗi nhóm có thể nằm trong khoảng từ 0 đến 255 . Trong trường hợp này, giá trị mặt nạ càng thấp thì càng có nhiều máy tính được kết nối với mạng con này. Đối với mạng của các công ty nhỏ, mặt nạ thường trông giống như 255.255.255.x(ví dụ: 255.255.255.224). Mặt nạ mạng được gán cho máy tính cùng với địa chỉ IP. Vì vậy, ví dụ, mạng 192.168.0.0 với mặt nạ 255.255.255.0 có thể chứa các máy tính có địa chỉ từ 192.168.0.1 trước 192.168.254 192.168.0.0 với mặt nạ 255.255.255.128 cho phép địa chỉ từ 192.168.0.1 trước 192.168.0.127 . Tôi nghĩ ý nghĩa là rõ ràng. Theo quy định, các mạng có số lượng máy tính nhỏ có thể được các nhà cung cấp sử dụng để lưu địa chỉ IP. Ví dụ: một khách hàng có thể được chỉ định một địa chỉ có mặt nạ 255.255.255.252 . Mạng con này chỉ chứa hai máy tính.

Sau khi máy tính đã nhận được địa chỉ IP và biết giá trị của mặt nạ mạng con, chương trình có thể bắt đầu hoạt động trong mạng con cục bộ này. Tuy nhiên, để trao đổi thông tin với các máy tính khác trong mạng toàn cầu, bạn cần biết các quy tắc về nơi gửi thông tin cho mạng bên ngoài. Với mục đích này, một đặc điểm như địa chỉ Cổng được sử dụng.

Cổng là gì?

Cổng là một thiết bị (máy tính hoặc bộ định tuyến) chuyển tiếp thông tin giữa các mạng con IP khác nhau. Nếu chương trình xác định (bằng IP và mặt nạ) rằng địa chỉ đích không phải là một phần của mạng con cục bộ thì nó sẽ gửi dữ liệu này đến thiết bị hoạt động như một cổng. Trong cài đặt giao thức, chỉ định địa chỉ IP của thiết bị đó.

Để chỉ hoạt động trong mạng cục bộ, cổng có thể không được chỉ định.

Đối với người dùng cá nhân kết nối Internet hoặc đối với các doanh nghiệp nhỏ có một kênh kết nối duy nhất, hệ thống chỉ nên có một địa chỉ cổng - đây là địa chỉ của thiết bị có kết nối Internet. Nếu có nhiều tuyến đường thì sẽ có nhiều cổng. Trong trường hợp này, bảng định tuyến được sử dụng để xác định đường dẫn dữ liệu.

Bảng định tuyến là gì

Và thế là chúng tôi đã tiếp cận được họ một cách suôn sẻ. Và vậy... Đây là loại bàn gì?

Một tổ chức hoặc người dùng có thể có một số điểm kết nối với Internet (ví dụ: các kênh dự phòng trong trường hợp có sự cố xảy ra với nhà cung cấp đầu tiên, nhưng Internet vẫn rất cần thiết) hoặc chứa một số kênh IP-mạng. Trong trường hợp này, để hệ thống biết cách nào (thông qua cổng nào) để gửi thông tin này hoặc thông tin kia, bảng định tuyến sẽ được sử dụng. Bảng định tuyến cho mỗi cổng chỉ ra các mạng con Internet mà thông tin nào sẽ được truyền qua chúng. Trong trường hợp này, đối với một số cổng, bạn có thể đặt cùng một phạm vi, nhưng với chi phí truyền dữ liệu khác nhau: ví dụ: thông tin sẽ được gửi qua kênh có chi phí thấp nhất và nếu nó không thành công vì lý do này hay lý do khác, kênh tiếp theo sẽ có sẵn hầu hết sẽ được sử dụng tự động kết nối giá rẻ.

Cổng mạng là gì

Khi truyền dữ liệu ngoại trừ IP-địa chỉ của người gửi và người nhận, gói thông tin chứa số cổng. Ví dụ: 192.168.1.1: 80 , - trong trường hợp này 80 - đây là số cổng. Cổng là một số được sử dụng khi nhận và truyền dữ liệu để xác định quy trình (chương trình) sẽ xử lý dữ liệu. Vì vậy, nếu một gói được gửi đến 80 cổng thứ, điều này cho biết rằng thông tin được dành cho máy chủ HTTP.

Số cổng với 1 lần trước 1023 -th được gán cho các chương trình cụ thể (được gọi là cổng nổi tiếng). Cổng có số 1024 -65 535 có thể được sử dụng trong các chương trình độc quyền. Trong trường hợp này, các xung đột có thể xảy ra phải được chính các chương trình giải quyết bằng cách chọn một cổng miễn phí. Nói cách khác, các cổng sẽ được phân phối động: có thể vào lần khởi động tiếp theo của chương trình, nó sẽ chọn một giá trị cổng khác, tất nhiên trừ khi bạn đặt cổng đó theo cách thủ công thông qua cài đặt.

Địa chỉ MAC là gì

Thực tế là các gói được gửi trên mạng được gửi đến máy tính không phải bằng tên của chúng và không phải bằng IP-Địa chỉ. Gói này dành cho một thiết bị có địa chỉ cụ thể, được gọi là MAC-Địa chỉ.

Địa chỉ MAC- đây là địa chỉ duy nhất của thiết bị mạng được nhà sản xuất thiết bị nhúng vào đó, tức là. Đây là một loại số được đóng dấu trên card mạng của bạn. Nửa đầu MAC-address là mã định danh của nhà sản xuất, thứ hai là số duy nhất của thiết bị này.

Thường xuyên MAC-address đôi khi được yêu cầu để nhận dạng, chẳng hạn như với nhà cung cấp (nếu nhà cung cấp sử dụng ràng buộc bằng địa chỉ cây thuốc phiện thay vì mật khẩu đăng nhập) hoặc khi thiết lập bộ định tuyến.

Nơi để xem tất cả các cài đặt mạng

Tôi gần như quên nói vài lời về nơi bạn có thể xem xét và thay đổi tất cả những điều này.