Sự khác biệt giữa UDP và TCP là gì?


46

Bộ định tuyến của tôi có hai giao thức (và tùy chọn "cả hai") mà tôi có thể chọn khi thiết lập chuyển tiếp cổng: UDP và TCP. Sự khác biệt giữa hai giao thức này là gì và khi nào bạn sẽ chọn một giao thức khác trong chuyển tiếp cổng?

Câu trả lời:


51

TCP được hỗ trợ bởi acks và thử lại để đảm bảo dữ liệu của bạn sẽ đến nơi. UDP là không kết nối và "lửa và quên". UDP chủ yếu được sử dụng cho các ứng dụng loại phát trực tuyến, trong đó nếu bạn mất một số dữ liệu, bạn không cần phải cố gửi lại.

Cái nào bạn sử dụng phụ thuộc vào ứng dụng. Ví dụ: một máy chủ web sử dụng TCP.


3
Điều đó có ý nghĩa - vì vậy nếu bạn phát trực tuyến video thì sẽ không thể gửi lại khung bị thiếu sau đó vì bạn đã vượt qua điểm đó. Cảm ơn
Guy

15
+1. Chỉ cần thêm, bất cứ ai đang tìm hiểu sâu hơn nên đọc một trong W. Richard Stevens nhiều cuốn sách tuyệt vời về chủ đề này. "TCP / IP Illustrated, v1" và "Lập trình mạng UNIX" đóng vai trò là hướng dẫn và tài liệu tham khảo tuyệt vời.
Murali Suriar

73

Bạn có thể tìm thấy một bản tóm tắt tốt ở đây:

Sự khác biệt giữa các giao thức internet UDP và TCP là gì?

Cả TCP và UDP đều hoạt động ở mô hình TCP / IP lớp vận chuyển, nhưng có cách sử dụng rất khác nhau.

Sự khác biệt quan trọng nhất là:

  • Độ tin cậy :
    TCP:
    UDP hướng kết nối: không kết nối
  • Đã đặt hàng :
    TCP: thứ tự nhận tin nhắn được đảm bảo
    UDP: thứ tự không được đảm bảo
  • Trọng lượng giao thức :
    TCP: hạng nặng, do
    UDP kết nối / đặt hàng : nhẹ, rất ít chi phí
  • Các gói :
    TCP: truyền phát, dữ liệu được đọc dưới dạng "luồng", không có gì phân biệt nơi một gói kết thúc và một gói khác bắt đầu. Có thể có nhiều gói cho mỗi cuộc gọi đọc.
    UDP: datagram, một gói cho mỗi cuộc gọi đọc.

Cấu trúc khung

Khi dữ liệu được gửi qua mạng, nó cần được gói gọn trong cái gọi là "khung". Có nhiều phương pháp đóng gói khác nhau tùy thuộc vào giao thức và cấu trúc liên kết đang được sử dụng. Các hình ảnh sau đây cho thấy cấu trúc khung TCP và UDP khác nhau như thế nào.

Đây là cấu trúc khung TCP:

Khung TCP

Đây là cấu trúc khung UDP, đơn giản hơn nhiều:

Khung UDP

Các giao thức điển hình sử dụng TCP là HTTP, FTP và SMTP. Ví dụ về các giao thức sử dụng UDP là DNS và DHCP.


@splattne - Thứ tự nhận tin nhắn là đảm bảo, không truyền
Alnitak

@Alnitak: tất nhiên, bạn đúng. Tôi có nghĩa là biên lai được đảm bảo theo thứ tự truyền. Tôi sẽ cập nhật để làm rõ điều đó.
splattne

43

Và giải thích cấp CEO:

UDP là khi bạn ném giấy của bạn theo hướng chung của thùng.

TCP là khi nó bỏ lỡ, bạn ném các bản sao chính xác của cùng một tờ giấy nhiều lần cho đến khi nó rơi vào thùng. Sẽ có sự lãng phí giấy, thậm chí là bực bội các gói TCP dẫn đến lãng phí tài nguyên mạng hoặc hệ thống.


1
Đó là một lời giải thích "cấp CEO" rất tốt - tôi thích nó!
Keithius

Tôi không phải là CEO, nhưng tại sao không ai nói với tôi điều này sớm hơn! : p
Nicolas Dorier

Thật là tuyệt vời!
shylent

7

TCP và UDP đều là các giao thức chạy trên IP. TCP đã đảm bảo phân phối và UDP thì không. Bạn sẽ chọn một hoặc cái khác để chuyển tiếp cổng tùy thuộc vào dịch vụ bạn đang cố gắng chuyển tiếp. HTTP, ví dụ là TCP. Nếu bạn không biết giao thức mà dịch vụ bạn đang cố gắng chuyển tiếp là gì, thì đó gần như chắc chắn là TCP.


3

Để trả lời phần khác của câu hỏi của bạn, bạn phải chuyển tiếp những gì ứng dụng của bạn sử dụng. Để chuyển tiếp lưu lượng HTTP, chọn TCP. Để chuyển tiếp lưu lượng TFTP, chọn UDP. Các chương trình p2p chủ yếu sử dụng cả tcp và udp, vì vậy hãy chuyển tiếp cả hai.

Tất cả phụ thuộc vào giao thức và chương trình bạn đang sử dụng.


bạn không hoàn toàn đúng dns cũng sử dụng tcp / 53, không thường xuyên nhưng vẫn [ví dụ. để chuyển vùng].
pQd

Đúng. Ngoài ra, nó hoàn toàn hợp lệ để gửi các truy vấn dns thông thường qua tcp. Tôi đã thay đổi ví dụ thành TFTP, công ty độc quyền sử dụng UDP.
hayalci

2

Cũng như sự khác biệt được đề cập cho đến nay TCP cũng cung cấp

Kiểm soát lưu lượng. Sử dụng cơ chế cửa sổ, người nhận giới hạn số lượng octet (byte) mà nó muốn nhận từ người gửi trước khi người gửi phải chờ cấp phép để gửi thêm dữ liệu. Kích thước của cửa sổ có thể được thay đổi bởi người nhận khi cuộc trò chuyện tiếp tục. Điều này cho phép người nhận 'điều tiết' tốc độ dữ liệu đến từ người gửi: UDP không cho phép điều này và tất cả những gì người nhận có thể làm là vứt bỏ dữ liệu mà nó không thể đệm hoặc xử lý khi đến nơi.

một số phương tiện kỹ thuật khác như xác nhận không liền kề (sử dụng các xác nhận có chọn lọc để cho phép người gửi chỉ truyền lại một khung bị thiếu thay vì khung bị thiếu và các khung tiếp theo mà người nhận đã có nhưng không thể thừa nhận theo cách thông thường), xử lý tắc nghẽn và truyền lại thích ứng (điều chỉnh bộ định thời quyết định thời gian gửi lại khung truyền đi khi không nhận được xác nhận). Những điều này không liên quan đến UDP nhưng giúp TCP cung cấp các dịch vụ bổ sung qua UDP mà không làm tăng đáng kể tải mạng cho cùng một khối lượng tải.


2

TCP nỗ lực để đảm bảo dữ liệu được gửi đến người nhận; UDP thì không.


Sai lầm. Giao thức IP không đáng tin cậy và mất dữ liệu có thể xảy ra. TCP nỗ lực để đảm bảo rằng dữ liệu đã gửi (được chia thành các phần nhỏ và được gửi qua các gói IP) sẽ gửi đến người nhận (bằng cách cuối cùng gửi lại các phần nhỏ nếu được yêu cầu).
Ẩn danh

@ Ẩn danh - Về cơ bản, bạn đã trình bày lại những gì tôi đã nói ở trên. Làm thế nào tôi sai?
J. Polfer

Tôi nghĩ rằng cả hai bạn sẽ thấy rằng IP là khung cơ bản (ngăn xếp) và giao thức giao tiếp cơ bản mà cả UDP và TCP sử dụng. Bạn thực sự không thể giao tiếp dữ liệu hữu ích qua internet bằng JUST IP, theo như tôi biết - ngay cả các lệnh cơ bản, v.v ... sử dụng giao thức trên đầu trang của IP (một giao thức chính khác; ICMP).
Lee B

1

Đừng bận tâm tất cả các câu trả lời giải thích cái này so với cái kia. Đối với mục đích thiết lập chuyển tiếp cổng, các quy tắc khá đơn giản: bạn cần chọn TCP, trừ khi các tài liệu cho giao thức / ứng dụng bạn đang sử dụng nói để sử dụng UDP. Thông thường những cái sử dụng UDP có liên quan đến phát trực tuyến, hoặc những thứ rất đơn giản ủng hộ các giao thức / tốc độ nhẹ hơn độ tin cậy (đặc biệt là DNS và NTP). Lưu ý rằng có các giao thức khác ngoài TCP và UDP nữa - ICMP, giao thức đường hầm, v.v.


1

Giao thức càng được biết đến nhiều thì càng có nhiều bộ định tuyến trên đường dẫn can thiệp vào giao thức. Gửi các gói tcp và có một khả năng lớn là các gói đã nhận được rất nhiều. UDP thường không được xử lý sai, và các giao thức paylod 254 IP khác thường hoàn toàn không bị ảnh hưởng.


0

Giao thức gói dữ liệu người dùng (UDP)

Nó là một phần của các giao thức cơ bản của Bộ giao thức Internet. Các chương trình trên máy tính nối mạng có thể gửi tin nhắn ngắn đôi khi được gọi là datagram. UDP không đảm bảo bất kỳ độ tin cậy nào (nó xảy ra datagram có thể bị lỗi, bị trùng lặp hoặc bị thiếu mà không có bất kỳ thông báo nào). Thực tế là không kiểm tra xem tất cả các gói có thực sự được phân phối hay không, UDP chứng tỏ là nhanh hơn và hiệu quả hơn, đối với các ứng dụng không cần phân phối được đảm bảo. UDP tìm thấy công dụng của nó trong các tình huống như vậy:

Ứng dụng nhạy cảm với thời gian. Các vấn đề do gói bị chậm được tránh

Nó 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. UDP hỗ trợ truyền phát gói (truyền tải tới tất cả trên mạng cục bộ) và đa tuyến (truyền tải tới tất cả các thuê bao).

Giao thức điều khiển truyền (TCP)

Nó thường được gọi là TCP / IP do tầm quan trọng của giao thức này trong Bộ giao thức Internet. TCP hoạt động ở mức cao hơn, chỉ liên quan đến hai hệ thống đầu cuối, (ví dụ giữa trình duyệt web và máy chủ web). TCP cung cấp việc phân phối tuần tự một luồng dữ liệu từ một chương trình trên một máy tính sang một chương trình khác trên một máy tính khác. Các cách sử dụng phổ biến của TCP nhóm lại hỗ trợ gửi thư điện tử và truyền tệp và các ứng dụng Web. Trong số các tác vụ quản lý của mình, TCP kiểm soát kích thước tin nhắn, tốc độ trao đổi tin nhắn và tắc nghẽn lưu lượng mạng. Đối với IP, nó xử lý việc truyền cấp thấp hơn từ máy tính sang máy tính dưới dạng tin nhắn được truyền qua Internet.


0

Cả hai đều là các giao thức mạng được xây dựng dựa trên thứ gọi là Giao thức Internet hoặc IP. Giao thức Internet là giao thức chính của Internet và là ví dụ cho phép chúng tôi duyệt web. Đó là lý do tại sao bạn sẽ thường thấy các giao thức này được viết dưới dạng TCP / IP hoặc UDP / IP. Chúng thực sự là các giao thức cốt lõi của internet.

Trong cả hai trường hợp, dữ liệu của bạn được chia thành các phần được gọi là các gói. TCP đảm bảo rằng các gói này đến đích và theo đúng thứ tự và không có bất kỳ lỗi nào.

Mặt khác, UDP sẽ không đảm bảo rằng gói dữ liệu sẽ đến. Nó sẽ chỉ đảm bảo rằng nếu nó đến nó sẽ không có lỗi.

Thông thường, các giao thức khác sẽ chạy trên TCP và UDP và được gọi là giao thức ứng dụng vì chúng hoạt động trong một ứng dụng chứ không phải trong hệ điều hành. Trình duyệt web của bạn sử dụng giao thức HTTP sẽ sử dụng giao thức TCP.

Tra cứu tên miền hoặc truy vấn DNS thường sử dụng UDP nhưng cũng có thể sử dụng TCP. Một số dịch vụ phát trực tuyến sử dụng UDP bên dưới các giao thức ứng dụng khác.

Tôi hy vọng rằng câu trả lời câu hỏi của bạn bằng tiếng Anh đơn giản hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.