2012-06-09 11 views
1

據我所知,一個(單一的通用)網絡服務器使用端口(像任何其他tcp/upd應用程序)來識別用戶/進程。由於端口是一個16位無符號整數,因此範圍從0到65535.服務器在達到極限時如何操作?服務器如何使用有限數量的端口?

高層樣品

  1. 由8080 Server1的回答!該客戶端1瞬移到server1(現在他們被隨機端口連接:(但唯一)server1的: < - >客戶端1:6123)

  2. 另一個客戶端2連接到服務器1(服務器: < - >客戶端2:7123)

那麼,事情是:是由65535限制服務器(在比之實踐少)給定實例?

回答

1

在最簡單的情況下,一個網絡服務器的服務器系統上僅消耗一個TCP端口(傳統上端口80)。所有到Web服務器的連接都通過該單一端口進行處理。其他65534端口仍可用於其他用途。

這是有效的,因爲TCP連接不僅由服務器上的端口號識別,而且由(服務器IP,服務器TCP端口,客戶端IP,客戶端TCP端口)識別。因此,服務器可以在其端口80上擁有大量的併發TCP連接,並使用其他三項來標識流量屬於哪個連接。如果服務器僅具有單個IP地址,並且因此(服務器IP,服務器端口)部分上的網絡服務器的所有連接是相同的,各個連接仍然由(客戶端IP,客戶機端口)區分部的組合。

如果您在忙碌的Unix Web服務器運行netstat -a命令,你會在行動中看到這一點。該命令將在服務器的端口80上顯示一堆連接,但所有連接都具有不同的客戶端IP和/或端口。它還會顯示系統仍在偵聽端口80上的新連接,同時正在處理該端口上的所有現有連接。

到Web服務器的連接總數可能受到一些其他約束(可能是內存使用量,可能是Web服務器本身或OS內核中的一些任意限制)或某些外部約束(可能是外部連接表大小防火牆或網關),但不受16位TCP端口範圍的限制。

還要注意的是TCP端口是從UDP端口完全獨立,因此,使用TCP端口80用於Web服務器並不妨礙UDP端口80被用於其他目的。反之亦然。

相關問題