2014-05-20 27 views

回答

3

TCP連接由源和目標IP和端口標識。

在出站連接啓動之前,客戶端端口一般不會分配本地端口號,此時已知完整的元組並且可以選擇無衝突的本地端口號。至少在理論上,操作系統是否真的這樣做是另一回事,因爲沒有真正的用例。

在服務器端,所有傳入連接使用相同的本地IP和端口號,但連接可以通過客戶端的IP和端口號加以區分,給出2^32個IP地址與2^16個端口的理論限制,減去幾個不可用的,所以大約有250萬億個組合。

對於UDP,本地端口綁定任何明示使用bind()或隱含當第一個數據包被髮送,在這種情況下,端口號必須是免費的 - 而UDP是無狀態的,並且可以從所有的客戶端在接收數據包同時。

在任何一種情況下,使用多個IP地址並明確地將套接字綁定到IP也將避免遇到問題,但除非有人試圖打開超過2^16個連接,否則不會遇到限制兩臺機器。

+0

ITYM 2^128 + 2^32 IP地址:-P – glglgl

+0

該計算與服務器地址固定,因此只有客戶端IP和端口不同。 –

+0

這裏也是。有32位的IP地址和128位的IP地址。 – glglgl