2011-06-22 69 views

Trả lời

68

Có, bạn có thể sử dụng cùng một số cổng cho cả TCP và UDP. Nhiều giao thức đã làm điều này, ví dụ DNS hoạt động trên udp/53 tcp/53.

Về mặt kỹ thuật, các cổng cổng cho mỗi giao thức hoàn toàn độc lập, nhưng đối với các giao thức cấp cao hơn có thể sử dụng giao thức TCP hoặc UDP, quy ước mặc định là cùng một cổng số.

Khi viết máy chủ của bạn, hãy nhớ rằng chuỗi các sự kiện cho một socket TCP là khó khăn hơn nhiều so với một ổ cắm UDP, vì cũng như bình thường socketbind cuộc gọi bạn cũng phải listenaccept.

Ngoài ra, accept cuộc gọi sẽ trả lại một ổ cắm mới và đó là rằng ổ cắm mà sau đó bạn sẽ phải có cuộc thăm dò ý kiến ​​để nhận sự kiện. Máy chủ của bạn nên được chuẩn bị để tiếp tục accept các kết nối ing trên ổ cắm ban đầu trong khi đồng thời phục vụ nhiều máy khách, mỗi máy khách sẽ kích hoạt nhận các sự kiện trên các ổ cắm riêng của chúng.

+0

một ví dụ khác NetBIOS với UDP và TCP trên 137-139 –

+2

@Eric Fortis RFC 1700 có đầy đủ các ví dụ, chúng ta không liệt kê tất cả chúng ta phải không? ;-) – EJP

+1

kho lưu trữ chính thức của số cổng là tại http://www.iana.org/assignments/port-numbers những ngày này, nhưng nhiều mục nhập udp/tcp kép chỉ đơn thuần là đặt chỗ và không cho biết rằng giao thức thực sự sử dụng cả hai. Ví dụ, không có thực hiện HTTP trên UDP, vì HTTP yêu cầu một phương tiện đáng tin cậy. Cả hai được đăng ký để tránh nhầm lẫn và ngăn chặn một giao thức không liên quan xuất hiện là cổng 80. – Alnitak

4

Thứ nhất, không có vấn đề gì khi sử dụng cả tcp và udp trên máy chủ. Thứ hai, chúng ta có thể có cả hai yêu cầu UDP và TCP trên cùng một cổng, vì mỗi yêu cầu được xác định bởi một nhóm có nguồn IP, IP đích, Cổng nguồn, Cổng đích, PROTOCOL (như giao thức có thể là TCP hoặc UDP). .

+1

Lý do bạn nói thường được đưa ra nhưng nó thực sự là vô nghĩa. Không có thứ gì như kết nối UDP, và không có bối cảnh nào trong đó các kết nối được xem xét bất kể giao thức liên quan.Thực tế là các cổng là các tạo phẩm của TCP và UDP riêng biệt, và do đó không có khả năng gây nhầm lẫn chúng. – EJP

+0

Cảm ơn bạn đã chỉ ra lỗi của tôi.Đó là không có kết nối bằng UDP. – aMooly

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