三次握手
当PC1想与PC2建立起链接,将连接信息写入报文
First Step:PC1会发送一个建立连接的请求报文,这个报文里有:
报文的序号(seq=x)
同步位(请求建立连接关系:SYN=1 ACK=0 控制位:当前两台机器处于什么状态?建立连接 处于连接 断开连接)
Second Step:当PC2收到消息以后,要回复一个报文
报文的序号(seq=y)
ack确认号(我希望你下一次发送x+1序号的报文给你)
控制位 SYN=1 ACK=1 请求建立连接 PC2 同意建立连接
Third Step:收到PC2同意建立连接的报文后
会发送一个x+1报文
会告诉对方 我希望你下次发送y+1的序号给我
最后将ACK=1封装进去
![](https://i-blog.csdnimg.cn/blog_migrate/9a5f947072f6423bf96a2f3ef2676f98.png)
四次挥手
第1次:客户端发送一个FIN(断开位),通知服务器端 客户端要关闭连接了,客户端进入FIN_WAIT_1状态;
第2次:服务端收到FIN后,发送一个ACK=1(确认位)给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态(半关闭状态);
服务端将剩下没有发送给客户端的数据传送给客户端;
第3次:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态;
第4次:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务端,确认序号为收到序号+1(下图:w+1),服务端进入CLOSED状态,客户端等待2MSL,若没有回复也进入CLOSED状态。
PS:FIN标志位数置1,表示断开TCP连接。
![](https://i-blog.csdnimg.cn/blog_migrate/94d5f7bb34b5d8083102671666c1d766.png)