前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计网 - TCP四次挥手原理全曝光:深度解析与实战演示

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

作者头像
小小工匠
发布2023-12-18 12:46:45
2050
发布2023-12-18 12:46:45
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构
文章目录
  • Pre
  • 导图
  • 过程分析
  • 抓包实战
    • 第一次挥手 【FIN +ACK】
    • 第二次挥手 【ACK】
    • 第三次挥手 【FIN+ACK】
    • 第四次挥手 【ACK】
  • 小结
在这里插入图片描述
在这里插入图片描述

导图

在这里插入图片描述
在这里插入图片描述

过程分析

在这里插入图片描述
在这里插入图片描述
  • 客户端打算关闭连接,此时会发送一个 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 由于是全双工的,故断开链接需要四次挥手 。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 导图
  • 过程分析
  • 抓包实战
    • 第一次挥手 【FIN +ACK】
      • 第二次挥手 【ACK】
        • 第三次挥手 【FIN+ACK】
          • 第四次挥手 【ACK】
          • 小结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档