什么时候会出现大量的time-wait状态的socket

当请求量比较大的时候,而且所有的请求都是短连接的时候。因为每一个连接在结束4次挥手的时候,都会有一个time-wait状态的socket出现。

这里描述一下4次挥手的过程

客户端发起close,此时给服务器发送FIN分节,客户端此时的状态为time_wait_1,
服务器收到FIN分节,状态变为CLOSE_WAIT,此时服务端的read函数返回0,
发送应答ACK M+1给客户端,客户端收到ACK包后状态变为TIME_WAIT_2。
然后服务器调用close发起FIN分节,此时服务器的状态为LAST_ASK,
客户端收到FIN分节后状态变为TIME_WAIT状态,
同时返回一个ACK 应答给服务器,服务端收到ACK分分节后状态变为CLOSED。

三次握手的过程

服务端阻塞在accept函数,客户端发起connect,发送SYN分节,此时客户端的状态为SYN_SEND,
服务端在收到SYN分节后状态变为SYN_RCVD,
然后服务端返回一个ACK+SYN分节,客户端在收到后connect返回,状态变为ESTABLISHED,
同时返回一个ACK给服务端,服务端收到后accept函数返回,状态变为ESTABLISHED。
三次握手完成。

三次握手和四次挥手的过程和状态一定要记牢,努力学习。坚持就是胜利。

你可能感兴趣的:(什么时候会出现大量的time-wait状态的socket)