控制字段:
SYN(1):请求建立连接控制字段。
ACK(1):数据信息确认控制字段
FIN(1):请求断开连接控制字段。
tcp三次握手过程:
- 第一次握手:
发送SYN请求建立连接控制字段,发送Seq序列号信息,第一个数据包的系列号默认为0 - 第二次握手
发送SYN请求建立连接控制字段,同时还会发送ACK确认控制字段。
发送Seq序列号信息,还会发送Ack确认号信息(对上一个数据序列号信息进行确认) - 第三次握手
发送ACK确认控制字段,发送Seq序列号信息,发送ACK确认号。
自此三次握手完成,开始正式传输数据。
如上图所示,三次握手过程(由Wireshark抓包得到)
当A主机(192.168.199.1)与B主机(192.168.199.135)建立连接时,A主机首先发送数据包给B主机,字段SYN=1,Seq=0,表示请求建立连接;B主机回复数据包给A主机,字段SYN=1,ACK=1,Seq=0,Ack=1,表示请求同对方也建立连接,并确认收到;A主机再次回复数据包,字段ACK=1,Seq=1,Ack=1,表示确认收到。到此为止,三次握手完成,开始正式传输数据,Seq、Ack字段交替增加。
tcp四次挥手过程:
- 第一次挥手
发送FIN请求断开连接控制字段 - 第二次挥手
发送ACK确认控制字段 - 第三次挥手
发送FIN请求断开连接字段,发送ACK确认字段 - 第四次挥手
发送ACK数据信息确认控制字段
自此四次挥手过程结束。
如上图所示,四次挥手过程(由Wireshark抓包得到)
当B主机(192.168.199.135)与A主机(192.168.199.1)断开连接时,B主机向A主机发送数据包,FIN=1(图中仍有的ACK字段是对上面信息做确认出现的),表示请求断开连接;A主机回复数据包给B主机,ACK=1,表示收到对方断开连接的请求;A主机再次发送B主机数据包,FIN=1,ACK=1,表示也向对方请求断开连接,且确认收到上次数据包;B主机最后回复A主机数据包,ACK=1,表示收到对方数据包。断开连接,到此为止,四次挥手过程完成。