2015-11-13 59 views
1

TCP連接是通過[client IP address:outgoing port - server IP address:incoming port]定義在多個連接。 Web服務器偵聽一個端口,但在同一端口上處理多個tcp連接 - 這是如何實現的?是否有一個連接以某種方式轉移到其他傳入端口以便能夠監聽新連接?如何處理的Web服務器相同的端口

回答

2

即使服務器IP和服務器端口是相同的,客戶端IP或客戶端端口是不同的。所以從TCP的角度來看沒有問題。

如果您想了解更多的細節,在服務器代碼中存在註定要接受連接插座,這將是監聽套接字,它會被綁定到服務器端口(以及可選的IP)。當客戶端連接到此端口時,偵聽套接字接受它並返回一個新的連接套接字。

即使所有的服務器插槽使用同一端口,其中只有一個實際上在聽,所以沒有問題。

+0

感謝,可以請你在這,如果所有的服務器套接字使用同一端口_Even闡述,其中只有一個實際上在聽,所以沒有problem._? –

+1

@Maximus:當然。套接字是對TCP連接的操作系統抽象。客戶端只是創建套接字並連接它。但是,服務器會創建一個綁定到端口的偵聽套接字。此套接字不代表實際連接,而是端點接受連接。當一個客戶端請求到達一個監聽套接字時,它將分離出一個連接的套接字。如果仔細觀察,則永遠不會有兩個具有相同_peer data_(IP +端口)的套接字。 – rodrigo

+0

謝謝,我在哪裏可以閱讀更多關於它'打出連socket'?我對頂級套接字編程概念感興趣 –

相關問題