2010-01-21 79 views
3

我想知道服務器應用程序是否總是在同一端口上回答?我曾經在某處看過,爲了不斷監聽「監聽」端口,服務器將使用不同的端口。任何人都可以提供更多細節嗎? 謝謝!關於TCP/IP端口綁定的問題

回答

2

作爲TCP握手過程的一部分,在另一個端口上建立通信通道。源和目標的'端口'號碼對應於TCP數據包報頭中的16位字段。通道建立後,通信將在該端口上進行,並在標題中的字段中具有適當的源端口值和目標端口值。

初始連接到服務器上的偵聽端口;在此之後,進程在分配的新端口上建立TCP連接,並在這些端口上進一步進行通信。

+0

另外,當我連接到某些服務器(可以說在口1200)我不會收到該端口上的通信? – Thomas 2010-01-21 17:21:37

+0

對不起,但這是完全錯誤的。 – caf 2010-01-21 22:46:09

2

如果您在特定端口上與服務器建立TCP連接,則該TCP連接將繼續在服務器端使用相同的端口。

在一側的(address1, port1)對和另一側的(address2, port2)對之間建立TCP連接 - 並且所有這四個值在TCP連接的生命週期中都是固定的。

這不會阻止服務器在接受連接後偵聽端口 - 因爲它可以根據客戶端使用的(address, port)對來區分已建立連接的任何數據包和新連接。

例如,從Oracle服務器這個netstat輸出顯示它監聽1521端口,和幾個已建立的連接也使用該端口:

Active Internet connections (servers and established) 
Proto Recv-Q Send-Q Local Address    Foreign Address    State 
tcp  0  0 0.0.0.0:1521    0.0.0.0:*     LISTEN 
tcp  0  0 127.0.0.1:1521    127.0.0.1:32776    ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:32798   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:32823   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:32822   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:32821   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:32820   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:32819   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:32818   ESTABLISHED 
tcp  0  0 127.0.0.1:1521    127.0.0.1:30536    ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:36969   ESTABLISHED 
tcp  0  0 127.0.0.1:32776    127.0.0.1:1521    ESTABLISHED 
tcp  0  0 127.0.0.1:30536    127.0.0.1:1521    ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:37786   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:37035   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:37034   ESTABLISHED 
tcp  0  0 192.168.9.126:1521   192.168.9.124:33018   ESTABLISHED