1. TCP的通信过程
TCP连接的建立需要经过三次握手,连接的关闭需要经过四次挥手。读TCP/IP协议不是很好理解,通过工具手动抓包分析会对协议有更深刻的理解。因为工作中经常用到wireshark,所以就通过wireshark来分析,记录自己的学习过程。
TCP的整个通信过程如下图所示:
2. TCP的三次握手过程
下图是wireshark抓取的浏览器与web服务器之间的TCP通信过程,Filter是过滤框,图中是过滤的源IP和目的IP为1.192.194.198与客户端的通信。
(1)SYN 同步序列号,用来发起一个TCP连接,会携带一个随机序号seq=i,报文中的Flags值SYN=1,SYN=1的报文段不能携带数据,但是会消耗掉一个序号。此时客户端进入到SYN-SEND状态。
(2)服务器收到SYN之后,如果同意此次连接的建立会回复一个ACK,确认号ack=i+1,同时会选取一个序列号seq=j,报文中的Flags值SYN=1,ACK=1,此时服务器进入到SYN-RCVD状态。
(3)客户端收到服务器的确认后,还会向服务器发出一个确认报文,确认号ack=j+1,序列号seq=i+1,报文中的Flags值ACK=1,ACK报文可以携带数据,如果没有携带数据不会消耗序号,下一个报文的序号仍然是i+1。此时客户端进入到ESTABLISED状态,服务器收到确认报文后也进入到ESTABLIS