基于wireshark抓包分析TCP的三次握手
1. TCP的三次握手
在TCP/IP协议通讯过程中,采用三次握手建立连接,从而保证连接的安全可靠。
所有基于TCP的通信都需要以两台主机的握手开始。这个握手过程主要是希望能达到以下不同的目的。[1]
- 保证源主机确定目的主机在线,并且可以进行通信。
- 让源主机检查它是否正在监听试图去连接的端口。
- 允许源主机向接收者发送它的起始序列号,使得两台主机可以将数据包流保持有序。
通常三次握手步骤如下:
1. 第1次握手:建立连接时,客户端发送 SYN 包到服务器端,携带一个序列码给服务器端用于确认,并进入 SYN_SEND 状态,等待服务器端确认。(发起连接状态)
2. 第2次握手:服务器端收到 SYN 包,首先确认客户的SYN,并对序列码加1处理,发送一个自己的SYN包,携带一个自己的序列码,即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。(连接接收状态)
3. 第3次握手:客户端收到服务器端返回的 SYN+ACK 包,向服务器端发送确认包 ACK,并对服务器端的序列码进行加1处理,此包发送完毕,两端进入 ESTABLISHED 状态,完成三次握手,之后服务器端和客户端就开始进行数据传输。(建立连接状态)
2. 参考文献
[1] 《Wireshark数据包分析实战 - 第2版》. 人民邮电出版社.2013年