首页 > 代码库 > TCP/IP 3握手4挥手

TCP/IP 3握手4挥手

转:摘自《图解TCP/IP》P204

三次握手与四次挥手的状态转移图如下:

技术分享

如图,由于第二次握手接收端发送SYN+ACK信号所以握手只用了三次,挥手由于接收端ACK和FIN分两次发的,所以挥手需要四次

最后接收端需要一个TIME_WAIT状态,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。

整个Client(发送端)状态图如下:

技术分享

整个Server(接收端)状态图如下:

技术分享

 

处在SYNC_RECV的TCP连接称为半连接,并存储在内核的半连接队列中,在内核收到对端发送的ack包时会查找半连接队列,并将符合的requst_sock信息存储到完成三次握手的连接的队列中,然后删除此半连接。

TCP/IP 3握手4挥手