TCP抓包分析3次握手

217 阅读4分钟

图1

图2

图1解释 TCP 3次握手过程

TCP(传输控制协议)三次握手是建立一个可靠的连接所必须的过程,它确保了数据的发送和接收双方都准备好进行数据交换。以下是根据你提供的截图内容,对TCP三次握手过程的解释:

1. **SYN(同步序列编号)**: 客户端发送一个TCP段给服务器,其中包含SYN标志位设置为1,序列号(Seq)设置为0,窗口大小(Win)设置为64240等。这表示客户端希望建立连接,并告知服务器它准备发送数据。

2. **SYN-ACK(同步-确认)**: 服务器接收到客户端的SYN段后,如果同意建立连接,则会发送一个TCP段作为响应。这个段的SYN标志位和ACK(确认)标志位都被设置为1,序列号(Seq)为0,确认号(Ack)设置为客户端的序列号加1(这里是1),窗口大小(Win)为42720等。这表示服务器已经接收到客户端的连接请求,并准备好发送数据。

3. **ACK(确认)**: 客户端接收到服务器的SYN-ACK段后,会发送最后一个TCP段来确认连接的建立。这个段的ACK标志位设置为1,序列号(Seq)加1(这里是1),确认号(Ack)为服务器的序列号加1。客户端的窗口大小(Win)为131840等。这表示客户端已经接收到服务器的连接请求,并准备好接收数据。

从你提供的截图中,我们可以看到以下三次握手的详细信息:

- 客户端IP地址 `192.168.0.110` 向服务器IP地址 `118.31.165.224` 发送了一个SYN段,请求建立连接。

- 服务器接收到请求后,发送了一个SYN-ACK段作为响应。

- 客户端接收到SYN-ACK后,发送了一个ACK段来确认连接的建立。

然而,从截图中我们也可以看到,在第一次尝试建立连接时,服务器发送了一个RST(重置)段,这通常表示连接请求被拒绝或存在问题。这可能是由于多种原因,比如客户端发送的TLS握手信息(Client Hello)不符合服务器的要求。之后,客户端尝试重新建立连接,并成功完成了三次握手过程。

请注意,截图中还包含了TLS(传输层安全协议)的握手信息,这是在TCP连接建立之后进行的,用于建立一个安全的通信通道。

在TCP三次握手过程中,SYN、ACK、SEQ等术语具有特定的含义和作用

1. **SYN(Synchronize Sequence Numbers)同步序列编号**:

- 作用:SYN是一个TCP标志位,用于建立连接时同步双方的序列号。当设置为1时,表示这是一个连接请求。

- 举例:客户端发送的TCP段,SYN标志位设置为1,序列号(Seq)设置为0,表示客户端希望开始一个新连接。

2. **ACK(Acknowledgment)确认**:

- 作用:ACK也是一个TCP标志位,用于确认收到的数据段。当设置为1时,表示接收方已经成功接收并确认了发送方的数据。

- 举例:服务器响应客户端的SYN请求时,ACK标志位设置为1,确认号(Ack)设置为客户端序列号加1,表示服务器已经接收并确认了客户端的SYN请求。

3. **Seq(Sequence Number)序列号**:

- 作用:序列号用于标识TCP段中数据的第一个字节的编号。每个TCP段都有一个序列号,确保数据的有序传输。

- 举例:客户端发送的SYN段中,序列号设置为0,表示这是客户端开始发送的第一个TCP段。

4. **Ack(Acknowledgment Number)确认号**:

- 作用:确认号是期望接收的下一个字节的序列号。它是对之前接收到的数据段的响应,告诉发送方下一个数据段应该从哪个序列号开始发送。

- 举例:服务器在发送SYN-ACK响应时,确认号设置为客户端序列号加1,即如果客户端的序列号是0,服务器的确认号就是1。

在TCP三次握手的上下文中,这些术语的作用可以总结如下:

- **第一次握手**:客户端发送SYN段(SYN=1, Seq=0),请求建立连接。

- **第二次握手**:服务器接收到SYN请求后,发送SYN-ACK段(SYN=1, ACK=1, Ack=客户端Seq+1),表示同意建立连接。

- **第三次握手**:客户端接收到SYN-ACK后,发送ACK段(ACK=1, Seq=客户端Seq+1, Ack=服务器Seq+1),完成连接建立。

这个过程确保了双方的接收和发送能力都得到了验证,从而建立了一个可靠的连接。