Có hai loại lưu lượng Giao thức Internet (IP). họ đang TCP hoặc là Giao thức điều khiển truyền dẫn và UDP hoặc là Giao thức gói dữ liệu người dùng. TCP được định hướng kết nối - một khi kết nối được thiết lập, dữ liệu có thể được gửi hai chiều. UDP là một giao thức Internet không kết nối đơn giản hơn. Nhiều tin nhắn được gửi dưới dạng các gói trong khối bằng UDP.
TCP | UDP | |
---|---|---|
Từ viết tắt của | Giao thức điều khiển truyền dẫn | Giao thức gói dữ liệu người dùng hoặc giao thức gói dữ liệu chung |
Kết nối | Giao thức điều khiển truyền dẫn là giao thức hướng kết nối. | Giao thức gói dữ liệu người dùng là một giao thức không kết nối. |
Chức năng | Như một thông điệp truyền qua internet từ máy tính này sang máy tính khác. Đây là kết nối dựa trên. | UDP cũng là một giao thức được sử dụng trong vận chuyển hoặc chuyển tin nhắn. Đây không phải là kết nối dựa trên điều đó có nghĩa là một chương trình có thể gửi một gói các gói đến một chương trình khác và đó sẽ là kết thúc của mối quan hệ. |
Sử dụng | TCP phù hợp với các ứng dụng đòi hỏi độ tin cậy cao và thời gian truyền tương đối ít quan trọng. | UDP phù hợp cho các ứng dụng cần truyền nhanh, hiệu quả, chẳng hạn như các trò chơi. Bản chất không trạng thái của UDP cũng hữu ích cho các máy chủ trả lời các truy vấn nhỏ từ số lượng lớn khách hàng. |
Sử dụng bởi các giao thức khác | HTTP, HTTP, FTP, SMTP, Telnet | DNS, DHCP, TFTP, SNMP, RIP, VOIP. |
Thứ tự các gói dữ liệu | TCP sắp xếp lại các gói dữ liệu theo thứ tự được chỉ định. | UDP không có thứ tự vốn có vì tất cả các gói độc lập với nhau. Nếu yêu cầu đặt hàng, nó phải được quản lý bởi lớp ứng dụng. |
Tốc độ chuyển | Tốc độ cho TCP chậm hơn UDP. | UDP nhanh hơn vì không phục hồi lỗi. Đó là một giao thức "nỗ lực tốt nhất". |
độ tin cậy | Có sự đảm bảo tuyệt đối rằng dữ liệu được truyền vẫn còn nguyên và đến cùng thứ tự được gửi đi. | Không có gì đảm bảo rằng các tin nhắn hoặc gói tin được gửi sẽ đạt được. |
Kích thước tiêu đề | Kích thước tiêu đề TCP là 20 byte | Kích thước tiêu đề UDP là 8 byte. |
Trường tiêu đề chung | Cổng nguồn, cổng đích, Tổng kiểm tra | Cổng nguồn, cổng đích, Tổng kiểm tra |
Truyền dữ liệu | Dữ liệu được đọc dưới dạng luồng byte, không có dấu hiệu phân biệt nào được truyền đến ranh giới thông điệp tín hiệu (phân đoạn). | Các gói được gửi riêng lẻ và chỉ được kiểm tra tính toàn vẹn nếu chúng đến. Các gói có ranh giới xác định được vinh danh khi nhận, có nghĩa là thao tác đọc tại ổ cắm máy thu sẽ mang lại toàn bộ thông điệp như được gửi ban đầu. |
Cân nặng | TCP là trọng lượng nặng. TCP yêu cầu ba gói để thiết lập kết nối ổ cắm, trước khi bất kỳ dữ liệu người dùng nào có thể được gửi. TCP xử lý độ tin cậy và kiểm soát tắc nghẽn. | UDP rất nhẹ. Không có thứ tự tin nhắn, không có kết nối theo dõi, vv Đây là một lớp vận chuyển nhỏ được thiết kế trên đầu trang của IP. |
Kiểm soát luồng dữ liệu | TCP không điều khiển luồng. TCP yêu cầu ba gói để thiết lập kết nối ổ cắm, trước khi bất kỳ dữ liệu người dùng nào có thể được gửi. TCP xử lý độ tin cậy và kiểm soát tắc nghẽn. | UDP không có tùy chọn để điều khiển luồng |
Kiểm tra lỗi | TCP không kiểm tra lỗi và phục hồi lỗi. Các gói sai lệch được truyền lại từ nguồn tới đích. | UDP không kiểm tra lỗi nhưng chỉ cần loại bỏ các gói lỗi. Không phục hồi lỗi. |
Lĩnh vực | 1. Số thứ tự, 2. Số AcK, 3. Dữ liệu bù, 4. Dành riêng, 5. Bit điều khiển, 6. Cửa sổ, 7. Con trỏ khẩn cấp 8. Tùy chọn, 9. Đệm, 10. Kiểm tra tổng, 11. Cổng nguồn, 12. Cổng đích | 1. Chiều dài, 2. Cổng nguồn, 3. Cổng đích, 4. Kiểm tra Tổng |
Nhìn nhận | Phân đoạn công nhận | Không có lời cảm ơn |
Bắt tay | ĐỒNG HỒ, ĐỒNG HỒ, ACK, ACK | Không bắt tay (giao thức không kết nối) |
TCP đảm bảo phân phối đáng tin cậy và có trật tự một luồng byte từ người dùng đến máy chủ hoặc ngược lại. UDP không dành riêng cho kết nối đầu cuối và giao tiếp không kiểm tra sự sẵn sàng của người nhận.
TCP là đáng tin cậy hơn vì nó quản lý xác nhận tin nhắn và truyền lại trong trường hợp mất các bộ phận. Do đó, hoàn toàn không có dữ liệu bị thiếu. UDP không đảm bảo rằng thông tin liên lạc đã đến được người nhận vì các khái niệm xác nhận, thời gian chờ và truyền lại không có mặt.
TCP truyền được gửi theo một chuỗi và chúng được nhận trong cùng một chuỗi. Trong trường hợp các phân đoạn dữ liệu đến sai thứ tự, TCP sẽ sắp xếp lại và cung cấp ứng dụng. Trong trường hợp UDP, chuỗi tin nhắn đã gửi có thể không được duy trì khi đến ứng dụng nhận. Hoàn toàn không có cách nào để dự đoán thứ tự sẽ nhận được tin nhắn.
TCP là một kết nối nặng đòi hỏi ba gói cho kết nối ổ cắm và xử lý kiểm soát tắc nghẽn và độ tin cậy. UDP là một lớp vận chuyển nhẹ được thiết kế trên đỉnh IP. Không có kết nối theo dõi hoặc đặt hàng tin nhắn.
TCP đọc dữ liệu dưới dạng luồng byte và thông điệp được truyền đến các ranh giới phân đoạn. UDP tin nhắn là các gói được gửi riêng lẻ và khi đến được kiểm tra tính toàn vẹn của chúng. Các gói đã xác định ranh giới trong khi luồng dữ liệu không có.
UDP hoạt động trên cơ sở "nỗ lực cao nhất". Giao thức hỗ trợ phát hiện lỗi thông qua tổng kiểm tra nhưng khi phát hiện lỗi, gói bị loại bỏ. Việc truyền lại gói để phục hồi từ lỗi đó không được thử. Điều này là do UDP thường dành cho các ứng dụng nhạy cảm với thời gian như chơi game hoặc truyền giọng nói. Phục hồi từ lỗi sẽ là vô nghĩa vì vào thời điểm nhận được gói truyền lại, nó sẽ không được sử dụng.
TCP sử dụng cả phát hiện lỗi và phục hồi lỗi. Lỗi được phát hiện thông qua tổng kiểm tra và nếu một gói bị lỗi, nó không được người nhận thừa nhận, điều này sẽ kích hoạt việc truyền lại bởi người gửi. Cơ chế hoạt động này được gọi là Xác nhận tích cực với Truyền lại (PAR).
Kết nối TCP được thiết lập thông qua bắt tay ba bước, đây là quá trình bắt đầu và thừa nhận kết nối. Khi kết nối được thiết lập, truyền dữ liệu có thể bắt đầu. Sau khi truyền, kết nối bị ngắt bằng cách đóng tất cả các mạch ảo đã thiết lập.
UDP sử dụng một mô hình truyền đơn giản mà không có các hộp thoại bắt tay để đảm bảo độ tin cậy, thứ tự hoặc tính toàn vẹn dữ liệu. Do đó, UDP cung cấp một dịch vụ không đáng tin cậy và các datagram có thể bị lỗi, xuất hiện trùng lặp hoặc bị mất mà không cần thông báo trước. UDP giả định rằng việc kiểm tra và sửa lỗi là không cần thiết hoặc được thực hiện trong ứng dụng, tránh việc xử lý như vậy ở cấp giao diện mạng. Không giống như TCP, UDP tương thích với các gói phát sóng (gửi đến tất cả trên mạng cục bộ) và đa tuyến (gửi cho tất cả các thuê bao).
Duyệt web, gửi email và chuyển tập tin là những ứng dụng phổ biến sử dụng TCP. TCP được sử dụng để kiểm soát kích thước phân khúc, tốc độ trao đổi dữ liệu, kiểm soát luồng và tắc nghẽn mạng. TCP được ưu tiên khi các phương tiện sửa lỗi được yêu cầu ở cấp giao diện mạng. UDP được sử dụng chủ yếu bởi các ứng dụng nhạy cảm với thời gian cũng như các máy chủ trả lời các truy vấn nhỏ từ số lượng lớn máy khách. UDP tương thích với truyền phát gói - gửi đến tất cả trên mạng và đa tuyến - gửi cho tất cả các thuê bao. UDP thường được sử dụng trong Hệ thống tên miền, Thoại qua IP, Giao thức truyền tệp tầm thường và các trò chơi trực tuyến.
Đối với các trò chơi trực tuyến nhiều người chơi (MMO), các nhà phát triển thường phải đưa ra lựa chọn kiến trúc giữa việc sử dụng các kết nối liên tục UDP hoặc TCP. Ưu điểm của TCP là các kết nối liên tục, độ tin cậy và có thể sử dụng các gói có kích thước tùy ý. Vấn đề lớn nhất với TCP trong kịch bản này là thuật toán điều khiển tắc nghẽn của nó, xử lý mất gói là dấu hiệu của giới hạn băng thông và tự động điều chỉnh việc gửi gói. Trên mạng 3G hoặc Wi-Fi, điều này có thể gây ra độ trễ đáng kể.
Nhà phát triển có kinh nghiệm Christoffer Lernö đã cân nhắc những ưu và nhược điểm và khuyến nghị các tiêu chí sau để chọn sử dụng TCP hoặc UDP cho trò chơi của bạn: