当前位置: 首页 > news >正文

19、TCP连接四次挥手的过程,为什么是四次?【高频】

  1. 四次挥手的过程

在这里插入图片描述

假设客户端主动发起。

  • 第一次挥手:客户端向服务器 发送 FIN,表示 自己要断开数连接。随后,客户端 进入 FIN-WAIT-1 状态;服务器收到后,变为CLOSE_WAIT状态

  • 第二次挥手:服务器 发送ACK 作为响应,客户端收到后 进入 FIN-WAIT-2状态

  • 第三次挥手:服务器 发送 FIN 给客户端,表示自己也要断开连接,发送后 服务器 变为 LAST-ACK 状态

  • 第四次挥手:客户端 收到 FIN报文后,发送ACK 作为回应,随后进入 TIME-WAIT 状态。服务器 ACK 后 进入CLOSE 状态。客户端 等待2MSL后没有收到回复,则进入CLOSE状态,关闭连接。

    在这里插入图片描述

  1. 为什么需要四次挥手
  • 如果改成三次挥手的话,一般指的是第二次和第三次挥手的合并,也就是 ACK报文和FIN报文 合并。第一次挥手,客户端发送FIN报文,表示客户端不能再发送数据了,但还可以接收数据。第二次挥手的ACK表示 服务器收到了客户端的FIN报文,而此时 服务端可能还有数据需要处理和发送,把这些数据发送完毕后 才会发送FIN报文。

  • 所以说,在 ACK 和 FIN 之间,服务器可能还需要处理和发送数据,所以是四次挥手。当这两者之间没有数据要发送时,其实是可能会发送三次挥手的。

相关文章:

  • 华为hcia——Datacom实验指南——TCP传输原理和数据段格式
  • 优选算法的匠心之艺:二分查找专题(一)
  • C语言【数据结构】:时间复杂度和空间复杂度.详解
  • 传感云揭秘:边缘计算的革新力量
  • 【Qt】QWidget属性介绍
  • Vmware安装ubuntu18.04
  • Kotlin apply 方法的用法和使用场景
  • 态势感知产品通用的一些安全场景设计
  • 防火墙虚拟系统配置
  • Gitlab报错:sudo: a password is required
  • 无障碍阅读(Web Accessibility)NVDA打开朗读查看器后,enter键不生效的原因
  • 如何处理PHP中的文件上传错误
  • 《计算机图形学》第二课笔记-----二维变换的推导
  • 时序数据库 TDengine 到 MySQL 数据迁移同步
  • 【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
  • 事件总线EventBus原理剖析
  • OpenHarmony自定义子系统、部件与模块
  • 31、map deque list的实现原理【中高频】
  • DeepSeek 助力 C++ 开发:探索智能编程新境界
  • 数字电路 | 触发器 / 单稳态触发器 / 双稳态触发器