Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> Kết Nối Mạng

TCP so với UDP

Transmission Control Protocol (TCP) và User Datagram Protocol (UDP) là hai giao thức lớp truyền tải (transport layer) phổ biến dùng với Internet Protocol. Giao thức là tập thủ tục và quy tắc hai máy tính tuân theo để hiểu nhau và trao đổi dữ liệu. Mặc dù TCP là giao thức phổ biến hơn, UDP hữu ích hơn trong một số tình huống.

Tóm tắt so sánh

TCP

  • Đảm bảo dữ liệu đến đúng như đã gửi.
  • Kiểm tra lỗi luồng dữ liệu.
  • Header 20 byte cho phép thêm 40 byte dữ liệu chức năng tùy chọn.
  • Chậm hơn UDP.
  • Phù hợp cho ứng dụng yêu cầu độ tin cậy.

UDP

  • Không đảm bảo dữ liệu đến.
  • Không cung cấp kiểm tra lỗi.
  • Header 8 byte chỉ cho phép dữ liệu chức năng bắt buộc.
  • Nhanh hơn TCP.
  • Phù hợp cho ứng dụng yêu cầu tốc độ.

Cả hai giao thức gửi dữ liệu qua internet trong gói tin. Trong hai giao thức, TCP hướng kết nối (connection-oriented). Sau khi kết nối thiết lập, dữ liệu đi hai chiều. UDP là giao thức đơn giản hơn, không kết nối (connectionless).

TCP mạnh mẽ hơn UDP. Nó cung cấp chức năng sửa lỗi và độ tin cậy cao. UDP nhanh hơn TCP, chủ yếu vì nó không cung cấp sửa lỗi. Bên cạnh đó, TCP xử lý kiểm soát luồng (flow control), trong khi UDP không có tùy chọn kiểm soát luồng.

Tốt cho độ tin cậy: TCP

TCP

  • Đảm bảo giao dữ liệu.
  • Theo dõi gói dữ liệu.
  • Kiểm tra lỗi gói tin.
  • Kiểm soát luồng.
  • Header 20 byte với tùy chọn thêm.

UDP

  • Không đảm bảo giao dữ liệu.
  • Gói tin có thể mất.
  • Không kiểm soát luồng.
  • Header giới hạn 8 byte.

TCP đảm bảo giao dữ liệu đến người nhận. Nếu dữ liệu bị mất, TCP采取措施恢复丢失的数据并重新发送。为此,TCP跟踪数据包,并检查数据包是否有错误。

UDP không đảm bảo giao dữ liệu. Thêm vào đó, gói UDP có thể mất khi truyền hoặc bị hỏng.

Cả TCP và UDP dùng header như một phần đóng gói dữ liệu tin nhắn để truyền qua kết nối mạng. Vì TCP mạnh mẽ hơn, header của nó lớn hơn ở 20 byte với tùy chọn dữ liệu thêm, trong khi header UDP giới hạn 8 byte.

Tốt cho tốc độ: UDP

TCP

  • Chậm vì thực hiện nhiều chức năng.

UDP

  • Nhanh vì cung cấp chức năng hạn chế.

Mặc dù TCP tin cậy, nó chậm hơn UDP, chủ yếu vì nó thực hiện nhiều chức năng hơn. Người dùng cuối yêu cầu tốc độ nhanh nhất, như game thủ và người làm việc với video, được lợi từ UDP.

Tốt cho mục đích sử dụng: Tùy thuộc vào trường hợp

TCP

  • Tốt cho web, chuyển file, email, và secure shell (SSH).

UDP

  • Tốt cho VPN, streaming video, VoIP, phát sóng trực tiếp, và game online.

Vì TCP tin cậy, nó tốt nhất cho tình huống yêu cầu độ tin cậy cao nhưng không đòi tốc độ, như web, email, và FTP.

Tốc độ của UDP làm nó phù hợp nhất cho game online, phát sóng trực tiếp, VPN tunneling, và streaming video.

Định dạng Header TCP

Mỗi header TCP có 10 trường bắt buộc tổng cộng 20 byte (160 bit). Nó có thể tùy chọn thêm trường dữ liệu lên đến 40 byte.

8 bit = 1 byte.

Header TCP xuất hiện theo trình tự sau, bắt đầu từ điểm cuối giao tiếp nguồn và đích:

  • Số cổng TCP nguồn (Source TCP port number) (2 byte/16 bit): Đại diện cho thiết bị gửi.
  • Số cổng TCP đích (Destination TCP port number) (2 byte/16 bit): Điểm cuối giao tiếp cho thiết bị nhận.
  • Số thứ tự (Sequence number) (4 byte/32 bit): Người gửi dùng để đánh dấu thứ tự nhóm tin nhắn.
  • Số xác nhận (Acknowledgment number) (4 byte/32 bit): Cả người gửi và nhận dùng trường này để giao tiếp số thứ tự tin nhắn vừa nhận hoặc dự kiến gửi.
  • Độ lệch dữ liệu TCP (TCP data offset) (4 bit): Lưu tổng kích thước header TCP theo bội số 4 byte. Header không dùng trường tùy chọn có offset 5 (20 byte), header dùng trường tùy chọn tối đa có offset 15 (60 byte).
  • Dữ liệu dự trữ (Reserved data) (3 bit): Luôn có giá trị 0. Căn chỉnh tổng kích thước header thành bội số 4 byte, quan trọng cho hiệu suất xử lý dữ liệu máy tính.
  • Cờ điều khiển (Control flags) (tối đa 9 bit): TCP dùng 6 cờ chuẩn và 3 cờ mở rộng — mỗi bit đại diện On/Off — để quản lý luồng dữ liệu trong tình huống cụ thể.
  • Kích thước cửa sổ (Window size) (2 byte/16 bit): Người gửi TCP dùng số này để điều tiết lượng dữ liệu gửi trước khi yêu cầu xác nhận. Nếu cửa sổ quá nhỏ, truyền dữ liệu chậm không cần thiết. Nếu quá lớn, liên kết mạng có thể bão hòa hoặc người nhận không xử lý kịp, gây chậm. Thuật toán windowing tích hợp tính toán động giá trị và dùng trường này điều phối thay đổi giữa người gửi/nhận.
  • TCP checksum (2 byte/16 bit): Giá trị checksum trong header TCP do người gửi tạo ra như kỹ thuật toán học giúp người nhận phát hiện tin nhắn bị hỏng hoặc giả mạo.
  • Con trỏ khẩn cấp (Urgent pointer) (2 byte/16 bit): Thường đặt 0 và bỏ qua, nhưng kết hợp với cờ điều khiển, có thể dùng làm độ lệch dữ liệu để đánh dấu tập con tin nhắn cần xử lý ưu tiên.
  • Dữ liệu tùy chọn TCP (TCP optional data) (0 đến 40 byte): Dùng cho hỗ trợ xác nhận đặc biệt và thuật toán scaling cửa sổ.

Định dạng Header UDP

Vì UDP hạn chế khả năng so với TCP, header của nó nhỏ hơn. Header UDP chứa 8 byte, chia thành 4 trường bắt buộc:

  • Số cổng UDP nguồn (Source UDP port number) (2 byte): Đại diện thiết bị gửi.
  • Số cổng UDP đích (Destination UDP port number) (2 byte): Điểm cuối giao tiếp cho thiết bị nhận.
  • Độ dài dữ liệu (Length of data) (2 byte): Trường length trong UDP đại diện tổng kích thước mỗi datagram, gồm header và dữ liệu. Giá trị từ tối thiểu 8 byte (kích thước header bắt buộc) đến trên 65,000 byte.
  • UDP checksum (2 byte): Tương tự TCP, checksum UDP cho phép người nhận kiểm tra chéo dữ liệu đến cho bất kỳ bit hỏng nào.

Kết luận

Có lý do TCP là giao thức phổ biến nhất. Nó mạnh mẽ, tin cậy, và đảm bảo dữ liệu nhận được chính xác như đã gửi. Luồng thông tin kiểm tra lỗi có thể làm chậm nó một chút, nhưng trong hầu hết trường hợp, độ trễ không phải là deal-breaker.

Thời điểm UDP tỏa sáng hơn TCP là khi tốc độ quan trọng nhất như streaming video, VPN, hoặc game online.