计网 - TCP四次挥手原理全曝光:深度解析与实战演示

2023-12-14 22:53:57

在这里插入图片描述


Pre

计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?

计网 - TCP三次握手原理全曝光:深度解析与实战演示


导图

在这里插入图片描述


过程分析

在这里插入图片描述

  • 客户端打算关闭连接,此时会发送一个 TCP 首部 FIN 标志位被置为 1 的报文,也即 FIN 报文,之后客户端进入 FIN_WAIT_1 状态。
  • 服务端收到该报文后,就向客户端发送 ACK 应答报文,接着服务端进入 CLOSE_WAIT 状态。
  • 客户端收到服务端的 ACK 应答报文后,之后进入 FIN_WAIT_2 状态。
  • 等待服务端处理完数据后,也向客户端发送 FIN 报文,之后服务端进入 LAST_ACK 状态。
  • 客户端收到服务端的 FIN 报文后,回一个 ACK 应答报文,之后进入 TIME_WAIT 状态
  • 服务端收到了 ACK 应答报文后,就进入了 CLOSE 状态,至此服务端已经完成连接的关闭。
  • 客户端在经过 2MSL 一段时间后,自动进入 CLOSE 状态,至此客户端也完成连接的关闭。

抓包实战

在这里插入图片描述

在这里插入图片描述

120.221.143.6 是服务器的ip , 20.10.40.179是客户端的ip , 由此可知 这一次挥手是由 服务器 发起的 。


看之前再看一下这个图哈

在这里插入图片描述

第一次挥手 【FIN +ACK】

【数据链路层 】

在这里插入图片描述


【网络层 IP】

在这里插入图片描述


【传输层TCP】

在这里插入图片描述


第二次挥手 【ACK】

在这里插入图片描述


第三次挥手 【FIN+ACK】

在这里插入图片描述


第四次挥手 【ACK】

在这里插入图片描述


小结

再来回顾下四次挥手双方发 FIN 包的过程,就能理解为什么需要四次了。

  • 关闭连接时,客户端向服务端发送 FIN 时,仅仅表示客户端不再发送数据了但是还能接收数据。 服务端收到客户端的 FIN 报文时,先回一个
  • ACK 应答报文,而服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送 FIN 报文给客户端来表示同意现在关闭连接。

从上面过程可知,服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK 和 FIN 一般都会分开发送,因此是需要四次挥手

TCP 由于是全双工的,故断开链接需要四次挥手 。

在这里插入图片描述

文章来源:https://blog.csdn.net/yangshangwei/article/details/134987026
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。