TCP协议规定主动关闭一方,进入FIN_WAIT_2->TIME_WAIT,必须等待2MSL(MSL为最大报文段生存时间)时间然后才进入CLOSED,删除TCP控制块。在2MSL等待时间内迟到的报文段将被抛弃。

原因有二:

保证TCP协议的全双工连接能够可靠关闭 
如果Client直接CLOSED了,那么由于IP协议的不可靠性或者是其它网络原因,导致Server没有收到Client最后回复的ACK。那么Server就会在超时之后继续发送FIN,此时由于Client已经CLOSED了,就找不到与重发的FIN对应的连接,最后Server就会收到RST而不是ACK,Server就会以为是连接错误把问题报告给高层。这样的情况虽然不会造成数据丢失,但是却导致TCP协议不符合可靠连接的要求。所以,Client不是直接进入CLOSED,而是要保持TIME_WAIT,当再次收到FIN的时候,能够保证对方收到ACK,最后正确的关闭连接。

保证这次连接的重复数据段从网络中消失 
如果Client直接CLOSED,然后又再向Server发起一个新连接,我们不能保证这个新连接与刚关闭的连接的端口号是不同的。也就是说有可能新连接和老连接的端口号是相同的。假设新连接和已经关闭的老连接端口号是一样的,如果前一次连接的某些数据仍然滞留在网络中,这些延迟数据在建立新连接之后才到达Server,由于新连接和老连接的端口号是一样的,又因为TCP协议判断不同连接的依据是socket pair,于是,TCP协议就认为那个延迟的数据是属于新连接的,这样就和真正的新连接的数据包发生混淆了。所以TCP连接还要在TIME_WAIT状态等待2MSL,这样可以保证本次连接的所有数据都从网络中消失。 
一般来说客户端主动关闭连接又立刻建立连接,2MSL时间内之前连接的端口号不能使用,即使调用bind函数也将返回-1(绑定失败),内核将自动分配一个新的端口号使用。所以如果服务器主动关闭连接,而服务器端口一般是固定的,会出现数据包混淆的问题,因此TCP规定主动关闭连接的一方需要等待2MSL。

文章参考:

https://www.zhihu.com/question/36930631/answer/69631012 来源:知乎,作者:Zeson 
http://www.cnblogs.com/mddblog/p/4565562.html

TCP协议规定2MSL等待的原因相关推荐

  1. LWIP之TCP协议

    IP协议提供了在各个主机之间传送数据报的功能,但是数据的最终目的地是主机上的特定应用程序.传输层协议就承担了这样的责任,典型的传输层协议有UDP和TCP两种. UDP只为应用程序提供了一种无连接的.不 ...

  2. 可靠传输的原理:停止等待协议、ARQ协议;TCP协议的可靠传输

    停止等待协议 停止等待协议是最简单的可靠传输协议,停止等待就是每发送完一个分组就停止发送,等待对方的确认.在收到确认后再发送下一个分组.若接收方收到重复的分组,就会丢弃该分组,但同时还要向发送方发送确 ...

  3. TCP可靠传输:ARQ协议(停止等待、超时重传、滑动窗口、回退N帧、选择重传)

    ARQ(Automatic Repeat-reQuest,自动重传请求) 一. ARQ简介 二. 停止等待ARQ (1)正常传输 (2)传输出现差错 1. 超时重传 2. 编号 (3)信道利用率 三. ...

  4. 大白话了解TCP协议:了解TCP?先别急,来看看TCP的前世——“最简单的”可靠传输协议:停止等待协议

    TCP是可靠传输协议的衍生.拓展 先了解可靠传输协议的基本概念就可以非常轻松得了解TCP协议了! 这是个有安全感的协议类型~ 在漫长的线路中,这些数据要经过路由器.网线,甚至还有风风雨雨--数据就很容 ...

  5. 面试:TCP协议经典十五连问!

    以下文章来源方志朋的博客,回复"666"获面试宝典 前言 TCP协议是大厂面试必问的知识点.整理了15道非常经典的TCP面试题,希望大家都找到理想的offer呀 1.  讲下TCP ...

  6. 【转】运输层TCP协议详细介绍

    [转]运输层TCP协议详细介绍 TCP是TCP/IP协议族中非常复杂的一个协议.它具有以下特点: 1:面向连接的运输层协议.在使用TCP协议之前,首先需要建立TCP连接.传送数据完毕后,必须释放已经建 ...

  7. TCP协议通讯流程(三次握手及四次挥手)

    TCP协议通讯流程(三次握手及四次挥手) 文章目录 TCP协议通讯流程(三次握手及四次挥手) 一.服务器端 二.客户端 三.三次握手四次挥手 三.具体流程 四.相关注意事项 一.服务器端 调用sock ...

  8. Python常见面试题:TCP 协议中的三次握手与四次挥手相关概念详解

    今天来聊聊Python常见面试题中面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手. 涉及到的知识点有: 1.TCP.UDP 协议的区别 2.TCP 头部结构 3.三次握手与四次挥手过程详 ...

  9. 网络协议 8 - TCP协议(上):性恶就要套路深

    网络协议 8 - TCP协议(上):性恶就要套路深 原文:网络协议 8 - TCP协议(上):性恶就要套路深 系列文章: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络 ...

最新文章

  1. java ef 引用问题_配置使用EF常见的一些问题及解决方案
  2. 蚂蚁金服AAAI论文:基于长短期老师的样本蒸馏方法和自动车险定损系统的最新突破...
  3. hdf heg 批量拼接_[转载]MODIS Aerosol product/MODIS气溶胶产品
  4. vbs删除非空文件夹
  5. 中国存储器行业应用趋势与投资机遇研究报告2022版
  6. C#机器学习之判断日报是否合格
  7. C++笔试记录 2021年9月16日
  8. mysql 修改数据库的数据库_如何更改MySQL数据库的数据库名
  9. 个人站立会议(11月16日)
  10. 4-19 面向对象 的内置方法
  11. 【SPFA】腾讯大战360
  12. 魅族手机刷鸿蒙,魅族很机灵:宣布加入鸿蒙,大家以为魅族手机用鸿蒙,其实并不是...
  13. 2022年linux面经必备(持续更新中)
  14. 教你一眼认出英语单词的意思
  15. 华为系统更新彻底卸载_华为手机系统更新好吗 华为手机系统更新方法
  16. 使用Docker搭建ceph群集(nautilus版本)
  17. redis cluster 集群 HA 原理和实操(史上最全、面试必备)
  18. 软件测试转行做软件销售,转行做软件测试2年了,终于实现收入过万的梦想
  19. SystemVerilog HVL:面向对象编程(Object Oriented Programming, OOP)
  20. 免费快递单号查询api接口对接调用demo地址

热门文章

  1. 锤子科技创始人秘密拜会了苏宁董事长张近东
  2. int 类型的最大最小值
  3. access成绩为非负数_全国计算机二级Access上机考点解析
  4. Java中文处理学习笔记--Hello Unicode
  5. zui佳情侣身高差问题,专家通过多组情侣身高数据研究发现,zui佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。
  6. opencv cv2.imwrite()将视频切割成图片保存失败 + 以及按秒切帧代码
  7. 【GIS入门】- 3.地理信息技术整体认识(3S)
  8. EasyExcel模板导出
  9. Android 键盘弹出监听
  10. 微信小程序实现分享至朋友圈的功能