Làm thế nào để biết một giao thức sử dụng TCP hay UDP


9

Tôi biết rằng đó có thể là một câu hỏi ngu ngốc và tôi tin rằng câu trả lời đúng nhất sẽ giống như tôi sẽ có thể nói khi kinh nghiệm của tôi tăng lên và tôi học được nhiều hơn về các giao thức.

Tuy nhiên tôi là một sinh viên và tôi không có nhiều kinh nghiệm trong lĩnh vực này. Mặc dù tôi có thể google cho bất kỳ giao thức nào, tôi muốn biết liệu có bất kỳ quy tắc nào không. Tôi vẫn cảm thấy yêu cầu "quy tắc của ngón tay cái" là ngu ngốc, nhưng tôi vẫn đang tìm kiếm một.

Tôi đã gặp danh sách này trên wikipedia liệt kê các giao thức và liệu chúng sử dụng TCP hay UDP theo định dạng bảng. Tuy nhiên tôi không thể hiểu ý nghĩa của nó khi hàng cho một giao thức cụ thể chứa cả TCP và UDP với số cổng đơn. Ví dụ, trong hàng Telnet, nó có 23-TCP-UDP. Điều đó có nghĩa là gì? Telnet có thể hoạt động trên cả cổng TCP 23 và cổng UDP 23?

Ngoài ra tôi thấy rằng trong sách giáo khoa của mình, nó nói TFTP sử dụng UDP, nhưng nếu chúng ta nhìn vào bảng trên, dòng TFTP là 69-TCP-UDP. Vì vậy, chỉ cần đoán những gì đang xảy ra trong bảng trên.

Câu trả lời:


9

Bạn đã hỏi một câu hỏi hay. Đừng để ai nói với bạn khác.

Đáng tiếc, không có quy tắc chung cho các loại giao thức sử dụng TCP câu các loại giao thức sử dụng UDP.

Quyết định liệu một giao thức sử dụng cái này hay cái kia được đưa ra cho bất kỳ ai đã viết / tạo giao thức để bắt đầu.

Nếu họ không muốn bận tâm đến việc viết hệ thống "phân phối đáng tin cậy" của riêng họ, thì họ có thể chỉ cần sử dụng TCP cung cấp tất cả độ tin cậy một cách bẩm sinh.

Nếu họ nghĩ (biết rõ giao thức của mình) rằng họ có thể viết một hệ thống "phân phối đáng tin cậy" tốt hơn hoặc phù hợp hơn, thì họ có thể xây dựng giao thức đó vào chính giao thức và chỉ cần sử dụng UDP làm phương tiện vận chuyển.

Ví dụ, hãy xem một bản chụp mẫu UDP TFTP , bạn sẽ nhận thấy có các hệ thống xác nhận được tích hợp trong chính TFTP - có cả hệ thống xác nhận bổ sung và hệ thống xác nhận bổ sung trong TCP sẽ chỉ là dự phòng.

Trong khi FTP, chạy trên TCP, không có hệ thống xác nhận tích hợp. Một người dùng chỉ cần yêu cầu một tập tin và người gửi sẽ gửi nó. Có một thông báo "hoàn tất chuyển tập tin", nhưng không có gì đảm bảo đã nhận được từng bit của tập tin. FTP đang dựa vào độ tin cậy của TCP để đảm bảo tập tin được hoàn thành.

Điều đó nói rằng, tôi đã xem qua danh sách các cổng trên trang wiki mà bạn đã liên kết và thấy một số lượng đáng kinh ngạc các giao thức được cho là sử dụng TCP UDP. Điều này là xa lạ với tôi và tôi chỉ biết rất ít người sử dụng cả hai (cụ thể là DNS). Nhưng có thể có một triển khai TFTP sử dụng TCP và nếu vậy, tôi e rằng tôi không có tiếp xúc với nó.

Theo truyền thống, Hệ thống tên miền (DNS) là giao thức được đề cập khi thảo luận về các giao thức sử dụng cả TCP và UDP. Nó không sử dụng chúng cùng một lúc, làm phiền bạn. Nhưng các chức năng khác nhau trong DNS có thể gọi TCP vs UDP.

Ví dụ: khi thực hiện một yêu cầu giải quyết bản ghi A đơn giản, "yêu cầu" và "phản hồi" rất nhẹ, cả hai đều yêu cầu một gói duy nhất. Như vậy, điều này thường được thực hiện trên UDP.

Nhưng nếu một yêu cầu hoặc phản hồi yêu cầu chuyển lớn hơn (trên một lượng byte nhất định), thì DNS chọn sử dụng TCP để đảm bảo "tất cả các bit" đạt được điều đó. Điều này là phổ biến với các yêu cầu Chuyển vùng đầy đủ.


2
Có, + 1, các truy vấn DNS bao gồm một yêu cầu UDP duy nhất từ ​​máy khách theo sau là một câu trả lời UDP duy nhất từ ​​máy chủ. Giao thức điều khiển truyền (TCP) được sử dụng khi kích thước dữ liệu phản hồi vượt quá 512 byte hoặc cho các tác vụ như chuyển vùng.
Ijaz Ahmad Khan

@IjazKhan, không còn sự phân biệt như vậy nữa. Xem RFC 7766 : " Tài liệu này chỉ định yêu cầu hỗ trợ TCP là giao thức vận chuyển để triển khai DNS và cung cấp hướng dẫn về hiệu suất DNS qua TCP ngang bằng với DNS-over-UDP. Tài liệu này lỗi thời RFC 5966 và do đó cập nhật RFC 1035 và RFC 1123. "và" Do đó, tài liệu này cập nhật các thông số kỹ thuật giao thức DNS cốt lõi để hỗ trợ cho TCP từ đó trở thành một phần BẮT BUỘC trong việc thực hiện giao thức DNS đầy đủ. "
Ron Maupin

6

Trang Wikipedia không phải là tốt nhất. IANA duy trì sổ đăng ký cho số cổng (được cảnh báo, hiện tại là 138 trang): Tên dịch vụ và Sổ đăng ký số giao thức vận chuyển

Một giao thức lớp ứng dụng được tự do sử dụng bất kỳ giao thức lớp vận chuyển và số cổng. Theo quy ước, hầu hết sử dụng số cổng cụ thể trong sổ đăng ký, nhưng điều đó không có nghĩa là họ cũng không thể sử dụng số khác. Chẳng hạn, một máy chủ web sẽ mặc định là cổng TCP 80, nhưng nó có thể được đặt để sử dụng bất kỳ số cổng nào khác và trình duyệt web vẫn có thể sử dụng nó nếu được cung cấp số cổng trên URI.

Có nhiều ứng dụng có thể được đặt để sử dụng TCP hoặc UDP và số cổng có thể được thay đổi. Điều này cung cấp một số linh hoạt khi xử lý các xung đột và triển khai lạ.


5

Trong cuộc sống thực, bạn sẽ thấy rất dễ dàng để biết giao thức vận chuyển nào được sử dụng. Ngoài ra, nếu bạn đang tìm kiếm một "quy tắc của ngón tay cái", thì hãy nghĩ về điều này:

UDP là giao thức 'không kết nối' / không đáng tin cậy, nó không phục hồi các gói bị mất như TCP và có ít chi phí hơn TCP, do đó, nó được sử dụng làm phương tiện vận chuyển cho các ứng dụng nhạy cảm với độ trễ (như truyền phát âm thanh / video).

TCP là một giao thức 'định hướng kết nối' / đáng tin cậy, nó phục hồi các gói khi chúng bị mất và có chi phí cao hơn, nhưng được sử dụng khi mất gói sẽ gây ra sự cố.

Dưới đây là một số phương thức bạn có thể sử dụng để xác định trong thực tế giao thức lớp vận chuyển mà ứng dụng đang sử dụng là gì:

  • Chạy netstat -antừ dấu nhắc lệnh của Windows.
  • Tải xuống và chạy TCPView (cũng liệt kê UDP) cho chế độ xem GUI.
  • Chạy Wireshark
  • Chạy nmapvới máy chủ có cổng được đề cập (theo mặc định chỉ quét các cổng TCP)

0

Nguồn của danh sách wikipedia dường như chủ yếu là https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt với dòng thỉnh thoảng được cập nhật dựa trên các tham chiếu cụ thể của giao thức.

Dường như phân bổ cũ hơn cả số cổng TCP và UDP được phân bổ cho giao thức ngay cả khi giao thức chỉ thực sự được sử dụng cho cái này hay cái khác. Ví dụ FTP có các mục trong bảng IANA cho cả TCP và UDP. Các mục này đều tham chiếu RFC 959 nhưng RFC 959 không đề cập đến UDP.

Nói chung, tài nguyên đi tìm hiểu các giao thức cơ bản mà giao thức ứng dụng thực sự sử dụng sẽ là tiêu chuẩn xác định giao thức.

Một số giao thức có thể sử dụng TCP hoặc UDP theo lựa chọn của người dùng (ví dụ NFS) hoặc tùy thuộc vào chi tiết của yêu cầu (ví dụ DNS)

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.