TCP通信握手&挥手
参考博文:https://www.cnblogs.com/bj-mr-li/p/11106390.html
一、TCP报文结构
报文解析
1、序列号(4个字节)也就是大家经常看到的seq
2、确认号(4个字节)也就是大家经常看到的小写的ack
3、TCP首部固定20个字节 + TCP数据部分
4、标记位:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置连接。
(E)SYN:发起一个新连接。
(F)FIN:释放一个连接。
二、三次握手报文交互
1、客户端发起TCP连接(第一次握手),TCP报文SYN=1
2、服务端收到TCP报文(第二次握手),返回ACK=1,SYN=1
3、客户端发起确认报文(第三次握手),通信连接建立
三、四次挥手
1、客户端发起连接终止(第一次挥手),客户端进入终止等待1状态
2、服务端接收到终止报文,服务端通知应用进程,回包确认接收到终止报文(第二次挥手),服务端状态进入关闭等待状态
3、客户端接收到报文,客户端进入终止等待2状态
4、此时服务端如果仍然有数据需要传输,此时并未中断连接,仍然可以做数据传输
5、服务端发送终止报文(三次挥手),服务端进入最后确认状态
6、客户端端接收到第报文,发送确认报文(第四次挥手),状态变更为等待关闭状态,在2MSL时间后关闭
7、服务端接收到确认报文关闭连接状态