2011-01-19 150 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