TCP协议规定2MSL等待的原因
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等待的原因相关推荐
- LWIP之TCP协议
IP协议提供了在各个主机之间传送数据报的功能,但是数据的最终目的地是主机上的特定应用程序.传输层协议就承担了这样的责任,典型的传输层协议有UDP和TCP两种. UDP只为应用程序提供了一种无连接的.不 ...
- 可靠传输的原理:停止等待协议、ARQ协议;TCP协议的可靠传输
停止等待协议 停止等待协议是最简单的可靠传输协议,停止等待就是每发送完一个分组就停止发送,等待对方的确认.在收到确认后再发送下一个分组.若接收方收到重复的分组,就会丢弃该分组,但同时还要向发送方发送确 ...
- TCP可靠传输:ARQ协议(停止等待、超时重传、滑动窗口、回退N帧、选择重传)
ARQ(Automatic Repeat-reQuest,自动重传请求) 一. ARQ简介 二. 停止等待ARQ (1)正常传输 (2)传输出现差错 1. 超时重传 2. 编号 (3)信道利用率 三. ...
- 大白话了解TCP协议:了解TCP?先别急,来看看TCP的前世——“最简单的”可靠传输协议:停止等待协议
TCP是可靠传输协议的衍生.拓展 先了解可靠传输协议的基本概念就可以非常轻松得了解TCP协议了! 这是个有安全感的协议类型~ 在漫长的线路中,这些数据要经过路由器.网线,甚至还有风风雨雨--数据就很容 ...
- 面试:TCP协议经典十五连问!
以下文章来源方志朋的博客,回复"666"获面试宝典 前言 TCP协议是大厂面试必问的知识点.整理了15道非常经典的TCP面试题,希望大家都找到理想的offer呀 1. 讲下TCP ...
- 【转】运输层TCP协议详细介绍
[转]运输层TCP协议详细介绍 TCP是TCP/IP协议族中非常复杂的一个协议.它具有以下特点: 1:面向连接的运输层协议.在使用TCP协议之前,首先需要建立TCP连接.传送数据完毕后,必须释放已经建 ...
- TCP协议通讯流程(三次握手及四次挥手)
TCP协议通讯流程(三次握手及四次挥手) 文章目录 TCP协议通讯流程(三次握手及四次挥手) 一.服务器端 二.客户端 三.三次握手四次挥手 三.具体流程 四.相关注意事项 一.服务器端 调用sock ...
- Python常见面试题:TCP 协议中的三次握手与四次挥手相关概念详解
今天来聊聊Python常见面试题中面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手. 涉及到的知识点有: 1.TCP.UDP 协议的区别 2.TCP 头部结构 3.三次握手与四次挥手过程详 ...
- 网络协议 8 - TCP协议(上):性恶就要套路深
网络协议 8 - TCP协议(上):性恶就要套路深 原文:网络协议 8 - TCP协议(上):性恶就要套路深 系列文章: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络 ...
最新文章
- java ef 引用问题_配置使用EF常见的一些问题及解决方案
- 蚂蚁金服AAAI论文:基于长短期老师的样本蒸馏方法和自动车险定损系统的最新突破...
- hdf heg 批量拼接_[转载]MODIS Aerosol product/MODIS气溶胶产品
- vbs删除非空文件夹
- 中国存储器行业应用趋势与投资机遇研究报告2022版
- C#机器学习之判断日报是否合格
- C++笔试记录 2021年9月16日
- mysql 修改数据库的数据库_如何更改MySQL数据库的数据库名
- 个人站立会议(11月16日)
- 4-19 面向对象 的内置方法
- 【SPFA】腾讯大战360
- 魅族手机刷鸿蒙,魅族很机灵:宣布加入鸿蒙,大家以为魅族手机用鸿蒙,其实并不是...
- 2022年linux面经必备(持续更新中)
- 教你一眼认出英语单词的意思
- 华为系统更新彻底卸载_华为手机系统更新好吗 华为手机系统更新方法
- 使用Docker搭建ceph群集(nautilus版本)
- redis cluster 集群 HA 原理和实操(史上最全、面试必备)
- 软件测试转行做软件销售,转行做软件测试2年了,终于实现收入过万的梦想
- SystemVerilog HVL:面向对象编程(Object Oriented Programming, OOP)
- 免费快递单号查询api接口对接调用demo地址
热门文章
- 锤子科技创始人秘密拜会了苏宁董事长张近东
- int 类型的最大最小值
- access成绩为非负数_全国计算机二级Access上机考点解析
- Java中文处理学习笔记--Hello Unicode
- zui佳情侣身高差问题,专家通过多组情侣身高数据研究发现,zui佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。
- opencv cv2.imwrite()将视频切割成图片保存失败 + 以及按秒切帧代码
- 【GIS入门】- 3.地理信息技术整体认识(3S)
- EasyExcel模板导出
- Android 键盘弹出监听
- 微信小程序实现分享至朋友圈的功能