2009-12-10 116 views
0

如果我telnet兩個不同的服務器在我的電腦相同的端口,一個會完成,直到另一個完成?傳出端口一次只允許一個傳出連接?網絡端口IO

回答

2

它們是分開的,由本地TCP端口號區分,每個出站連接都不同。

http://www.tcpipguide.com/free/t_TCPIPClientEphemeralPortsandClientServerApplicatio.htm

服務器響應客戶端;他們不主動與他們聯繫。因此,客戶端不需要使用保留的端口號。 ...要知道發送答覆的位置,服務器必須知道客戶端正在使用的端口號。這由客戶端作爲請求中的源端口提供,然後由服務器用作發送答覆的目標端口。客戶端進程不使用衆所周知的或註冊的端口。而是爲每個客戶端進程分配一個臨時端口號供其使用。這通常稱爲臨時端口號。

+0

所以如果我說telnet xxx.xx.xxx.xxx 80,實際的本地tcp端口號會不同於80? – user217631 2009-12-10 22:06:26

+0

這是正確的。你只指定了'telnet'的目的地。您的操作系統爲您選擇一個隨機出站端口,並且您的源地址來自您的網絡接口。 – 2009-12-10 22:40:49

0

源端口和目標端口是有區別的。遠程服務器可能使用相同的端口,但它們是不同的目標host1:80 host2:80。

每個連接將使用不同的源地址localhost:random_port。

有線流量的tcpdump或wireshark捕獲將顯示標記有源地址和目標地址以及端口的TCP網絡數據包,以便網絡流量具有返回路徑。

+0

你是說,即將離任的港口會與所選擇的不同,實際上是隨機的? – user217631 2009-12-10 21:59:39

+0

所以實際上host1:80和host2:80不會互相影響,對吧? – user217631 2009-12-10 22:01:15

+0

您無法控制本地傳出端口。到遠程主機的流量不會相互影響,因爲它們各自在不同的出站端口上發送。 src:localhost:34567 dst:host1:80; src localhost:34568 dst:host2:80; – 2009-12-10 22:19:34