2011-01-19 140 views
0

我現在在深入學習TCP,並且我不理解服務器進程的TCP生命週期。 假設我在端口80上運行一個Web服務器,當我使用netstat來查看連接時,我發現它監聽端口80,因爲它應該是。 當新客戶端連接到我的服務器時,在客戶端和服務器之間創建一個新套接字,並且此套接字正在正常生命週期中移動(如TCP RFC上所述,或此處http://www.sdsusa.com/connections/)。考慮到TCP的解複用能力,這是完全理解的。關於Web服務器進程的TCP狀態的問題 - 爲什麼它總是處於LISTENING狀態?

我的問題是:偵聽端口80上的TCP連接是否遵循相同的生命週期?我試着監視它,但它卡在LISTENING上。

回答

1

偵聽套接字始終處於「偵聽」狀態。當新連接到達時,偵聽套接字被克隆,並且克隆被置於「已建立」狀態並從調用返回(或其等同物)。原始文件處於偵聽狀態,以便應用程序可以再次輪詢它以查找新連接。

嚴格來說,監聽套接字根本不對應於「TCP連接」 - 它代表的是一個潛在的 TCP連接。只有從accept()返回的插座代表真正的連接。

+0

感謝您的幫助! – Shai 2011-01-19 12:08:45