关于Web服务器进程的TCP状态的问题 - 为什么它始终处于LISTENING状态?

时间:2011-01-19 10:31:23

标签: sockets tcp tcplistener

我现在正在深入学习TCP,而且我不了解服务器进程的TCP生命周期。 假设我在端口80上运行Web服务器,当我使用netstat查看连接时,我看到它在端口80上侦听,应该如此。 当新客户端连接到我的服务器时,在客户端和服务器之间创建一个新套接字,并且此套接字正在正常生命周期中移动(如TCP RFC或此处http://www.sdsusa.com/connections/所述)。考虑到TCP的解复用能力,这是完全理解的。

我的问题是:在端口80上侦听的TCP连接是否遵循相同的生命周期?我试着监视它,但它仍然坚持听。

1 个答案:

答案 0 :(得分:1)

侦听套接字始终处于“侦听”状态。当新连接到达时,克隆侦听套接字,并且克隆将进入“已建立”状态并从accept()调用(或其等效函数)返回。原始文件处于侦听状态,以便应用程序可以再次轮询它以获取新连接。

严格地说,侦听套接字根本不对应于“TCP连接” - 它代表潜在的 TCP连接。只有从accept()返回的套接字才代表真正的连接。