为什么是2MSL而不是MSL?】的更多相关文章

为什么等待2MSL,从TIME_WAIT到CLOSE? 在Client发送出最后的ACK回复,但该ACK可能丢失.Server如果没有收到ACK,将不断重复发送FIN片段.所以Client不能立即关闭,它必须确认Server接收到了该ACK.Client会在发送出ACK之后进入到TIME_WAIT状态.Client会设置一个计时器,等待2MSL的时间.如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL.所谓的2MSL是两倍的MSL(Maximum Segment Lif…
本文主要分析为什么TIME_WAIT状态的持续时间是2MSL而不是1MSL,3MSL或其它的时长,而不会详细描述为什么需要TIME_WAIT状态. 阅读本文需要的预备知识: 了解TCP协议的状态变迁: 了解TCP拆链的四次挥手过程: 了解为什么需要TIME_WAIT状态. 正文 其实这个问题在<TCP/IP详解>以及<UNIX网络编程>这两本书中都有提及,但这两本书上的描述都比较简洁并不是特别容易理解,记得在第一次看<UNIX网络编程>时,我曾经反复阅读相关段落并花了不…
前言 一.文本对话--从请求到响应 二.TCP/IP 协议族介绍 三.基于TCP/IP通信过程 四.TCP建立连接及断开(重点补充) 小结 前言 互联网的原始目的,就是为了传输文本(文本对话).那我们使用浏览器发送请求后页面是如何呈现在我们面前的呢? 接下来由图片介绍下URL到呈现页面的过程. 一.文本对话--从请求到响应 我们在浏览器中输入一个 URL,回车之后便会在浏览器中观察到页面内容.实际上这个过程是: (1)浏览器向网站所在的服务器发送了一个 Request(请求) (2)网站服务器接…
为什么三次握手,而不是两次或者四次五次? 2019/3/4更新: 在阅读了很多技术博客后,发先大家对为什么三次握手不是两次众说纷纭:我觉得说的最好的是英文文章对TCP的解读.TCP和UDP的区别就是可靠与不可靠传输. 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护各自的一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的. 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤. 在这过程中序号seq和确认号ack使用是核心.(详情…
这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题.说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP的状态转移图吧. 关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况.前者是指有本地主机主动发起的关闭:而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接.将关闭部分的状态转移摘出来,就得到了下图: 产生原因通过图…
第十八章 TCP的建立与终止 tcpdump Tcpdump可以将网络中传送的数据报完截获下来进行分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息 就有点像Wireshark那个工具一样,只不过是命令行的,这里不作详细分析,直接给个实例: 每行输出格式如下:  源 > 目的:标志 这里的标志就是TCP首部中6个标志比特中的4个,下面是标志中5个字符的含义: ack和urg将做特殊显示. 字段ack表示确认序号,只有在首部中ack标志…
18.5 TCP的半关闭 牢记 TCP 是 全双工 的. 半关闭:TCP提供了连接的一端 在结束了它的发送后 还能接收来自另外一端数据的能力.但是只有很少的应用程序利用它. 为了实现这个特性,编程接口必须提供一种方法来说明"我已经完成了数据的传送,并且发了FIN给另外一端,但是我还是想接收另外一端发送来的数据,直到结束(向我发送FIN)". 在 执行半关闭 的一端 收到来自另外一端的 FIN 之后,传送一个EOF给应用程序,并对这个 FIN 进行确认并发送ACK,结束了这个连接. 18…
        经过前面对TCP连接管理的介绍,我们本小节通过TCP连接管理的状态机来总结一下看看TCP连接的状态变化 一.TCP状态机整体状态转换图(截取自第二版TCPIP详解) 二.TCP连接建立和终止过程中状态迁移总结 下面我们总结一下前面介绍过的连接建立方式和终止过程中client端和server端的状态切换 1.三次握手 client:CLOSED -> SYN_SENT -> ESTABLISHED server:CLOSED -> LISTEN -> SYN_RCVD…
参考:http://blog.csdn.net/macdroid/article/details/49070185 在学习TCP之前我们先来看一下可靠数据传输需要提供什么样的机制: ·差错检测机制:检测数据包是否出现比特差错 ·反馈机制:接收端对接收到的数据包的反馈 ·序列号机制:解决冗余数据包问题 ·定时器机制:解决丢包问题 ·重传机制:解决数据包出错或丢失问题 下面就来介绍一个典型的可靠数据传输TCP: TCP具有以下特点: ·点到点:从一个发送方到一个接收方.连接状态与端系统有关,不为路由…
参考: http://coolshell.cn/articles/11564.html http://coolshell.cn/articles/11609.html TCP头格式 接下来,我们来看一下TCP头的格式 你需要注意这么几点: TCP的包是没有IP地址的,那是IP层上的事.但是有源端口和目标端口. 一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议.但因为这里只是说TCP协议,所以,这里我…