firemail
标题: 四次挥手 [打印本页]
作者: Qter 时间: 2024-10-18 19:59
标题: 四次挥手
TCP连接的断开通常遵循四次挥手(Four-way handshake)的过程。让我们逐步分析这个过程
现在,让我们根据Wireshark捕获的报文,详细解释这个过程:
- 第一次挥手:
- 客户端发送一个FIN包,序列号为x
- Wireshark显示: [FIN, ACK] Seq=x Ack=y
- 第二次挥手:
- 服务器回应一个ACK包,确认收到客户端的FIN
- Wireshark显示: [ACK] Seq=y Ack=x+1
- 第三次挥手:
- 服务器发送自己的FIN包,序列号为y
- Wireshark显示: [FIN, ACK] Seq=y Ack=x+1
- 第四次挥手:
- 客户端发送最后的ACK包,确认收到服务器的FIN
- Wireshark显示: [ACK] Seq=x+1 Ack=y+1
在Wireshark中,您还可能会看到以下细节:
- 每个包的源IP地址和目标IP地址
- 源端口和目标端口
- 包的长度
- 时间戳,显示每个包发送的具体时间
注意,在第二次和第三次挥手之间,服务器可能还会发送一些数据包。这是因为TCP允许半关闭状态,即一方可以结束发送但仍然接收数据。
最后,在第四次挥手之后,客户端通常会等待一段时间(2MSL, Maximum Segment Lifetime)来确保最后的ACK成功送达。如果在这段时间内没有收到服务器的重传,则认为连接已经安全关闭。
作者: Qter 时间: 2024-10-18 20:01
TCP连接的建立通常遵循三次握手(Three-way handshake)的过程。让我们通过Wireshark捕获的报文来详细分析这个过程。
现在,让我们根据Wireshark捕获的报文,详细解释这个过程:
- 第一次握手 (SYN):
- 客户端发送一个SYN (synchronize序列编号)包,开始连接的建立
- Wireshark显示: [SYN] Seq=x Win=65535 Len=0 MSS=1460 ...
- 这里的x是客户端选择的初始序列号
- 您可能还会看到一些TCP选项,如最大段大小(MSS)、窗口缩放等
- 第二次握手 (SYN-ACK):
- 服务器回应一个SYN-ACK包,表示接受连接请求
- Wireshark显示: [SYN, ACK] Seq=y Ack=x+1 Win=65535 Len=0 MSS=1460 ...
- y是服务器选择的初始序列号
- Ack=x+1表示服务器期望下一个接收的序列号
- 第三次握手 (ACK):
- 客户端发送ACK包,确认收到服务器的SYN-ACK
- Wireshark显示: [ACK] Seq=x+1 Ack=y+1 Win=65535 Len=0
- 这个包可能不包含数据,仅作为确认
在Wireshark中,您还可能观察到以下细节:
- 每个包的源IP地址和目标IP地址
- 源端口和目标端口
- 包的长度(通常握手包的长度为0,因为不包含数据)
- 时间戳,显示每个包发送的具体时间
- TCP窗口大小,表示接收缓冲区的可用空间
- 各种TCP选项,如时间戳、选择性确认(SACK)等
建立连接后,Wireshark可能会显示后续的数据传输包。这些包将使用建立连接时协商的序列号继续编号。
值得注意的是,在实际网络环境中,您可能会看到重传的SYN或SYN-ACK包。这通常发生在网络拥塞或包丢失的情况下。
欢迎光临 firemail (http://firemail.wang:8088/) |
Powered by Discuz! X3 |