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

tcp关闭的四次挥手

tcp关闭通信本质是双方的sock结构体的删除,计算机里有明确的先后顺序。

你想想,在客户端/服务端模式,正常情况下,服务器作为服务的,它是有求必应,怎么想,主动想关闭的一方应该客户端吧,服务端还要持续接受其他客户端请求呢。

所以结论:客户端主动发起关闭。

先看三次挥手关闭情况:

客户端主动关闭的话,即开始准备删除sock结构体,应该怎么做呢?我们之前一直在“一去一来”的通信,那么客户端想关闭肯定先不发信息了吧,即关闭自己的发送端,第一次挥手的FIN出现了。

接下来,服务端接收到FIN,没有回数据时,是可以结束了,直接回ACK(tcp的确认机制)+FIN,即第二次挥手FIN。此时不能删除sock结构体,因为为了防止结束的包中途丢失(tcp要确保的可靠机制),所以此时服务端还不能结束,服务端要等客户端对这个FIN回一个ACK后即第三次挥手,服务端删掉sock结构体了。

客户端同样为了确保第三次的挥手的不丢包,如果丢了要重传的,所以这就是要等待一段时间即TIME_WAIT

再看四次挥手关闭情况:

本来三次就行,但万一客户端想关闭第一次挥手嘛,服务端还在传上次没传完的数据,那么服务端需要等待传完后才能挥手,但基于tcp确认重传机制,在客户端第一次挥手后服务端不立马回个ACK,客户端会以为第一次挥手丢失了,一直重传,我们不希望看到,所以要就把上面情况的第二次挥手拆成了先ACK然后再FIN就两次挥手了,后面不变。

TIME_WAIT还有一个重要原因——使网络中这个连接所发送的数据包完全消耗殆尽。因为如果没有等待耗尽,你立马建立第二次连接,这个旧数据包会导致新连接(四元组相同)的新旧数据包混乱。

http://www.dtcms.com/a/585653.html

相关文章:

  • 基于HAL库实现CAN通信RS485通信WIFI模块和4G模块的AT指令和TCP透传
  • 采购网站有哪些东莞百度推广优化排名
  • 黄石网站设计公司网站都必须要备案吗
  • 36.华为云计算类服务实践
  • 长沙网站制作合作商网站更改文章标题
  • 【赵渝强老师】使用Helm简化Kubernetes(K8s)应用的部署和管理
  • 网页设计与制作教程期末考试东莞网络优化公司排名
  • docker打包,启动java程序
  • Debian 13 安装 Kubernetes 最新版 并使用 containerd 运行时
  • 通过操作地址,来进行STM32的写入GPIO端口值
  • 压力测试详解
  • 网站 怎么备案佛山营销型网站设计
  • 网站关键字被百度收录外链群发
  • Qt点击信号全解析:QTreeWidget交互指南
  • C++ 头文件:语言功能的 “模块化工具箱”(第三章)
  • 系统架构设计师学习大纲目录
  • 网站建设百度推广说词网站服务器在本地是指
  • Highcharts 3D图:深入解析与实际应用
  • 全景图制作工具( 10 种)
  • 虚拟位置映射(标签鸽
  • Pytorch 学习之Transforms
  • 中国建设银行网站的社保板块在哪里徐州专业网站制作公司
  • 免费建立移动网站吗模拟百度搜索词进入网站
  • Windows 如何安装 Chocolatey
  • 江苏高端网站建设一个网站怎么赚钱
  • 鸿蒙 ArkTS 入门教程:小白实战 List 列表开发(详解 @State, ForEach, @Builder)
  • Redis_8_List
  • excel VBA应用
  • 第十六章 SDN与NFV概述
  • C++ STL:阅读list源码|list类模拟|优化构造|优化const迭代器|优化迭代器模板|附源码