之前别人问过的一个问题,说是四次挥手为何要等待2MSL时间?

首先我们需要明白,MSL是表示什么意思?
其实是maxinum segment lifttime(报文最大存活时间),tcp发出的包是有一个存活时间的。

我们先来复习下tcp 的四次挥手,用C(client)和S(server)来代替

1.C发出报文,说请求关闭,标识位为FIN,然后客户端进入一个等待状态,表示客户端没有数据发送给服务端了。

2.S收到C的报文之后,会回复C一个报文,标志位为ACK,意思是我收到了,服务端进入等待关闭的状态。

3.S再次发送报文给C,标志位为FIN,意思是告诉C我要准备关闭数据链接了。

4.C收到之后,会发出ACK报文,告诉S,说我这确认收到了,并且等待2MSL之后就会关闭数据链接,销毁资源。

我们想一想,为什么要等待2MSL?

一个MSL表示报文存活的最大时间,不管是C发送到S的报文,还是S发送到C的报文,都是最大可存活1MSL,那么等待2MSL,也就是报文一来一回。

思考一个问题,C最后发给S的报文,有没有可能丢失?如果丢失了怎么办?

肯定会有丢失的情况,如果C最后的ACK丢了,S会超时重传,
C发送的ACK丢了(1MSL) + S重新发一个FIN过来(1MSL)
一来一回,也就是2MSL

参考
https://www.zhihu.com/question/67013338

tcp四次挥手为何最后要等待2MSL时间?相关推荐

  1. TCP第四次挥手后为什么要等待2MSL后才断开链接?等待时间为什么是2MSL?

    为何要等待2MSL? 1.假如第四次挥手失败了,因为丢失而未到达服务器会怎样呢?这样,服务器会一直收不到客户端的回应,也就无法得知客户端是否收到了即将要断开连接的请求.客户端此刻还蒙在鼓里,还在等待服 ...

  2. TCP的四次挥手及为什么要等待2MSL

    一.四次挥手的详述 1.假设Client端发起中断连接请求,也就是发送FIN报文. 2.Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还 ...

  3. TCP四次挥手 2MSL TIME_WAIT详解

    TCP四次挥手 & 2MSL & TIME_WAIT详解 TCP四次挥手流程 各状态解析 2MSL(2倍最大报文段生成时间) 2MSL (Maximum Segment Lifetim ...

  4. 为什么只有三次挥手_TCP为什么是三次握手,为什么不是两次或四次,TCP四次挥手...

    这是一个很有意思的问题~ 首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息.而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不 ...

  5. tcp 四次挥手_TCP三次握手和四次挥手

    名词解释 SYN:发起一个新连接 ACK:确认序号有效 FIN:释放一个连接 1,TCP三次握手 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认: 第 ...

  6. tcp当主动发出syn_一文读懂TCP四次挥手工作原理及面试常见问题汇总

    简述 本文主要介绍TCP四次挥手的工作原理,以及在面试中常见的问题. 字段含义 seq序号:Sequence Number,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行 ...

  7. 经典面试题之 TCP三次握手 和 TCP四次挥手过程----详解

    TCP三次握手过程: 第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认:SYN:同步序列编号(Synchronize Sequence Nu ...

  8. 计算机网络之TCP四次挥手

    文章目录 计算机网络之TCP四次握手 1.TCP四次挥手过程 2.任何一方执行close()操作即可产生挥手操作为什么要等待呢 3.说说 TCP 四次挥手过程 4.TCP挥手为什么需要四次呢 5. T ...

  9. TCP四次挥手及原因

    一.TCP四次挥手 MSL是TCP报文里面最大生存时间,它是任何报文段被丢弃前在网络内的最长时间. 第一次挥手:A->B,A向B发出释放连接请求的报文,其中FIN(终止位) = 1,seq(序列 ...

最新文章

  1. .NET Core2.1获取自定义配置文件信息
  2. 网页中自动换行问题〔zz〕
  3. python的基本数据结构_Python学习笔记——基本数据结构
  4. Android Apk 打包
  5. 打蚊子表情包_一拳超人:埼玉明显是动真格,蚊子为何能躲开埼玉的攻击?
  6. 通俗的解释交叉熵与相对熵
  7. 静态文件用什么服务器配置,静态文件服务器路径怎么配置好
  8. 盘一盘新冠病毒下,国内外科技公司提出哪些软件解决方案与技术?
  9. 初探队与广度优先搜索
  10. Eclipse 导入外部jar包
  11. 首次 golang爬虫插件gocolly/colly 使用经历
  12. Java中的随机数公式
  13. 第13期 《仰望星空,脚踏实地》 12月刊
  14. 2020牛客暑期多校训练营(第九场) Groundhog and Gaming Time
  15. python代替mathematica_Mathematica 比起 Python 如今还有什么优势?
  16. 安装angular ng-alain
  17. 【转】微信小程序日期时间选择器(年月日时分秒)
  18. criteria 用法
  19. 纯HTML+JS实现跑酷游戏
  20. 太阳神电商业务辅助工具1.5

热门文章

  1. 基于单片机收音机调幅系统设计仿真源码
  2. “is not a valid date and time ”错误提示 的【排除故障】
  3. 手机浏览器访问PC网站自动跳转
  4. ESP32以MQTT上传温湿度,火焰,烟雾至阿里云平台。问题:task_wdt: Task watchdog got triggered.
  5. php的正则表达式完全手册
  6. C语言,可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果这个楼梯有n个台阶,小明一共有多少种爬法呢?n值从键盘输入。
  7. ChrisRenke/DrawerArrowDrawable源码解析
  8. 基于M2P-HCC原研模型的肝癌早筛产品HCCscreen
  9. 血液检查肿瘤标志物升高就是得了癌症吗?
  10. 插件制作实战(B站视频评论屏蔽)