TCP四次挥手中的2MSL是什么?
MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文(segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文,而ip头中有一个TTL域,TTL是time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数,每经过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。
2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。
TTL与MSL是有关系的但不是简单的相等的关系,MSL要大于等于TTL。
TCP四次挥手中的2MSL是什么?相关推荐
- 灵魂拷问:TCP 四次挥手,可以变成三次吗?
上周有位读者面试时,被问到:TCP 四次挥手中,能不能把第二次的 ACK 报文, 放到第三次 FIN 报文一起发送? 虽然我们在学习 TCP 挥手时,学到的是需要四次来完成 TCP 挥手,但是在一些情 ...
- TCP四次挥手 2MSL TIME_WAIT详解
TCP四次挥手 & 2MSL & TIME_WAIT详解 TCP四次挥手流程 各状态解析 2MSL(2倍最大报文段生成时间) 2MSL (Maximum Segment Lifetim ...
- TCP三次握手中SYN,ACK,seq ack的含义
TCP三次握手中SYN,ACK,seq ack的含义 1.TCP 为什么三次握手而不是两次握手 1.防止已失效的连接请求又传送到服务器端,因而产生错误. 不幸的是, 这种解释是不准确的, TCP 采用 ...
- TCP四次挥手断开连接
四次挥手的流程 1.主动关闭方发送FIN连接释放报文段 客户端调用 close 方法,告诉服务器自己要主动关闭连接,会发送一个 FIN 报文给服务端,客户端进入FIN-WAIT-1状态. 2.被动关闭 ...
- 用动画讲解 TCP 四次分手过程
作者 | 小鹿 来源 | 公众号:小鹿动画学编程 一.写在前边 大家好,我们又见面了,做为一个业余的动画师,上次的用动画的形式讲解 TCP 三次握手过程再各大平台收到了广大读者的喜爱,说文章有趣.有货 ...
- 动画:用动画给女朋友讲解 TCP 四次分手过程
作者 | 小鹿 来源 | 公众号:小鹿动画学编程 一.写在前边 大家好,我们又见面了,做为一个业余的动画师,上次的用动画的形式讲解 TCP 三次握手过程再各大平台收到了广大读者的喜爱,说文章有趣.有货 ...
- 为什么只有三次挥手_TCP为什么是三次握手,为什么不是两次或四次,TCP四次挥手...
这是一个很有意思的问题~ 首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息.而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不 ...
- tcp 四次挥手_TCP三次握手和四次挥手
名词解释 SYN:发起一个新连接 ACK:确认序号有效 FIN:释放一个连接 1,TCP三次握手 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认: 第 ...
- tcp当主动发出syn_一文读懂TCP四次挥手工作原理及面试常见问题汇总
简述 本文主要介绍TCP四次挥手的工作原理,以及在面试中常见的问题. 字段含义 seq序号:Sequence Number,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行 ...
- 计算机网络之TCP四次挥手
文章目录 计算机网络之TCP四次握手 1.TCP四次挥手过程 2.任何一方执行close()操作即可产生挥手操作为什么要等待呢 3.说说 TCP 四次挥手过程 4.TCP挥手为什么需要四次呢 5. T ...
最新文章
- src或者href值为base64编码代码
- Cisco2620路由器的密码恢复和灾难性恢复
- 文本分类之特征简约算法说明
- Codeforces Round #383 D
- 使用计算机加密码,给正使用的电脑设置密码
- mysql增删改查脚本_脚本方式实现数据库增删改查
- robotframework(12)修改用户密码(从数据库查询短信验证码)
- [mybatis]动态sql_foreach_遍历集合批量插入
- Java判断两个Date是不是同一天
- 《HTML5+CSS3网页设计入门必读》——2.8 转变(CH-CH变化)
- 3.MySQL索引(一)介绍索引
- Python——四大内置高阶函数(map、reduce、filter、sorted)
- python全套教程-老王Python全套教程完整版
- Android-多线程AsyncTask
- 【易实战】Spring Cloud Greenwich Ribbon:负载均衡的服务调用
- php源码 辅助发卡_【程序源码】PHP自动化售货发卡网源码
- Android应用层读写设备节点
- c语言pow的作用,c语言中pow函数的用法是什么?
- 死磕 Framework准没错,大把的高薪岗位等着你~
- PDF编辑方法,怎么把PDF其中一页删除
热门文章
- 2019/3/20统计单词数
- php rrd 源码,ganalia+php+nginx+rrd 监控hadoop
- QQ揭秘:如何实现托盘闪动消息提醒?【低调赠送:QQ高仿版GG 4.1 最新源码】...
- 项目管理学习总结(20)——小团队管理与大团队管理
- [vue] 使用vue后怎么针对搜索引擎做SEO优化?
- poi html转换成word文档,Apache POI将HTML转换成Word
- BZOJ2794 [Poi2012]Cloakroom [离线][DP]
- oracle jdbc驱动jar包下载,oracle各个版本所需要的ojdbc jar驱动包以及版本对应关系...
- char * 与char []区别总结
- Win11键盘无法输入任何东西怎么解决?