2015-04-11 44 views
6

Tôi đã thấy trong khi tìm kiếm rằng có thể sử dụng hai chương trình khác nhau trên cùng một máy tính giao tiếp qua mạng bằng cùng một cổng và cùng một giao diện mạng cung cấp một UDP sử dụng và TCP khác. Tuy nhiên tôi đã không nhận được một lời giải thích tốt, làm thế nào nó thực sự làm việc và tại sao điều này là có thể?Tại sao có thể sử dụng cùng một cổng trên TCP và UDP cùng một lúc?

Cũng có thể cho nhiều chương trình sử dụng cùng một cổng UDP vì UDP không thiết lập kết nối thực giữa các đồng nghiệp, nhưng chỉ gửi gói đến địa chỉ? Tôi hiểu rằng nó không thể với TCP vì nó tạo ra một kết nối đồng bộ giữa máy chủ và máy khách, nhưng những gì về UDP?

Vui lòng giải thích chi tiết nếu có thể hoặc liên kết bài viết hay về chủ đề này.

+1

Điều này tương đương với việc hỏi tại sao có thể có 5 quả táo và 5 quả cam cùng một lúc. –

+0

được rồi, còn câu hỏi thứ 2 của tôi thì sao? – Xsmael

+0

@OliverCharlesworth, không hề. Đó là tất cả về những gì phân biệt một điểm cuối "socket". Câu hỏi của ông đơn giản là những yếu tố nào là một phần của sự khác biệt đó.Có, TCP là một "quả táo" và UDP là một "màu cam" nhưng nó chỉ có thể dễ dàng được cả hai chỉ là "trái cây" vào một ổ cắm. –

Trả lời

10

Các câu trả lời khác là chính xác nhưng có phần chưa hoàn chỉnh.

Ổ cắm IP (aka "INET") (nghĩa là liên lạc giữa hai quy trình, có thể trên các máy khác nhau) được xác định bằng giao thức 5-tuple: , nguồn ip, cổng nguồn, đích ip, đích Hải cảng. Bạn có thể thấy rằng điều này không giới hạn đối với kết nối stateful như TCP.

Điều này có nghĩa là bạn có thể ràng buộc các quy trình khác nhau với bất kỳ trường hợp duy nhất nào của 5 bộ đó. Bởi vì "giao thức" (ví dụ: TCP và UDP) là một phần của yếu tố khác biệt, mỗi yếu tố có thể có một quy trình khác.

Về mặt lý thuyết, bạn có thể liên kết các dịch vụ khác nhau với cùng một cổng TCP nếu chúng liên kết với các giao diện khác nhau (thẻ mạng, vòng lặp, v.v.) mặc dù tôi chưa bao giờ thử nó.

Tuy nhiên, thực tế tiêu chuẩn là luôn sử dụng cùng một dịch vụ trên cùng một số cổng. Nếu cả UDP và TCP đều được hỗ trợ, chúng chỉ là những cách giao tiếp khác nhau với cùng một dịch vụ đó. DNS, ví dụ, sử dụng UDP trên cổng 53 để tra cứu vì chúng là các yêu cầu nhỏ và nhanh hơn việc tạo kết nối TCP nhưng DNS cũng sử dụng TCP trên cổng 53 để "chuyển" không thường xuyên và có thể có lượng lớn dữ liệu.

Cuối cùng, với độ chính xác hoàn toàn, không nhất thiết phải là 5 bộ. IP sử dụng "giao thức" để chuyển sang lớp tiếp theo như TCP và UDP mặc dù có những người khác. TCP và UDP mỗi riêng biệt các kết nối phân biệt dựa trên 4 mục còn lại. Có thể tạo các giao thức khác trên đầu trang của IP sử dụng các cơ chế phân biệt hoàn toàn khác nhau (có lẽ là không có cổng).

Và sau đó có các "miền" khác nhau, chẳng hạn như miền "unix" socket, hoàn toàn khác với "inet" và sử dụng hệ thống tệp để xử lý.

+0

_Tuy nhiên, bạn có thể liên kết các dịch vụ khác nhau với cùng một cổng TCP nếu chúng liên kết với các giao diện khác nhau (thẻ mạng, v.v.) mặc dù tôi chưa bao giờ thử nó._ Thực ra đúng vậy, tôi biết, vì bạn có thể kết nối các card mạng với mạng khác nhau, các thông tin liên lạc độc lập. – Xsmael

+0

_Điều này có nghĩa là bạn có thể liên kết các quá trình khác nhau với bất kỳ trường hợp duy nhất nào của 5-tuple._ Điều đó có nghĩa là tôi có thể nghe trên cùng một cổng và cùng một giao thức (giả sử) TCP nhưng ip đích khác nhau? – Xsmael

+0

Hai bình luận của bạn giống nhau. Địa chỉ IP được liên kết với giao diện mạng. Bạn _should_ có thể liên kết các quy trình khác nhau với cùng một số cổng TCP trên các địa chỉ IP khác nhau ... nhưng tôi chưa bao giờ thử nó. Có vẻ là một ý tưởng tồi. –

1

Điểm cuối của kết nối là dành cho UDP và TCP được xác định bởi IP, giao thức (TCP hoặc UDP) và cổng. Điều này có nghĩa là miễn là bạn sử dụng một giao thức khác nhau, điểm cuối của giao tiếp cũng khác nhau.

3

Điểm đến không được xác định bởi IP Addr: Cổng một mình. Có một thứ khác - tiêu đề IP có một trường có tên là Protocol để phân biệt điểm cuối TCP và UDP. Như vậy nó trở thành có thể cho hai quá trình để liên kết với cùng một IP: Port miễn là giao thức truyền thông là khác nhau.

Các vấn đề liên quan