美文网首页
【网络】tcp的连接管理-连接的释放

【网络】tcp的连接管理-连接的释放

作者: Bogon | 来源:发表于2023-05-31 00:10 被阅读0次

为什么需要TIME_WAIT状态?

主要是两方面:

1. 防止错误接收历史报文

TCP序列号可能会发生绕回问题,这就意味着无法通过tcp序列号来判断是不是历史报文。(时间戳可以解决是不是历史报文问题,时间戳还可以精确计算RTT)

如果没有TIME_WAIT状态,那么在关闭连接前有个报文被延迟了。关闭后,又重新建立了相同四元组的连接,此时前一个被延迟的数据包到达了(没有到达最大生存时间),并且正好在接收窗口内,那么服务端就会错误接收,使得数据混乱。

此有了这个TIME_WAIT字段,可以保证两边的历史数据都被丢弃了,以后的数据包都是新建立连接的。

2.保证双方能够正常关闭

如果没有TIME_WAIT状态的话,客户端最后一次发送ack应答报文后就进入了close阶段。

如果服务端没有收到ack报文的话,就会重传FIN报文,而此时客户端已经close了,就会返回一个RST错误报文。

而有了TIME_WAIT状态的话,客户端并不会着急关闭,而是等待了2MSL再关闭,这样的话就算重传的FIN报文也能正确响应,保证了服务端的正确关闭。

为什么TIME_WAIT等待时间是2MSL?

MSL是报文的最大生存时间,超过这个时间,报文就将丢弃。

因为tcp是基于ip协议的,ip头中有一个ttl字段,表示ip数据包可以经过的最大路由数。每经过一个节点时,就减一,减为0则丢弃报文。

MSL和TTL的区别:MSL的单位是时间,而TTL的单位则是路由跳数。所以MSL应该大于等于TTL的时间,确保报文已经消亡。

TIME_WAIT比较合理的解释是:确保对方能够收到最后一个ack报文,如果服务端没有收到最后的ack报文,就会触发超时重传fin报文,从客户端发送ack报文到接到到服务端重传的fin报文,一去一来,最晚要2MSL.

相关文章

  • HTTP网络协议(学习笔记三)

    HTTP网络协议(三) 8~12课 TCP的几个要点 可靠传输 流量控制 拥塞控制 连接管理-建立连接-释放连接 ...

  • TCP三次握手四次挥手详解

    TCP的运输连接管理 TCP是面向连接的协议。运输连接是用来传送TCP报文的。TCP运输连接的建立和释放是每一次面...

  • 【网络】TCP的连接释放

    之前有说到TCP连接的建立[https://www.jianshu.com/p/a277868ae84a],也就是...

  • TCP/IP协议--TCP三次握手建立连接

    TCP连接 TCP是面向连接的协议,它基于传输连接来传送TCP报文段 TCP传输连接的建立和释放是每一次面向连接的...

  • TCP的三次握手与四次挥手

    通常我们进行HTTP连接网络的时候会进行TCP的三次握手,然后传输数据,之后再释放连接。TCP传输如下图所示: T...

  • 计算机网络复习

    传输层 TCP TCP连接管理 TCP 是面向连接的协议。每一个 TCP 连接有三个阶段:连接建立、数据传送、连接...

  • 连接管理:读《HTTP权威指南》笔记

    TCP连接 TCP/IP:分组交换网络分层协议集 HTTP连接实际上是TCP连接和一些使用连接的规则。 TCP数据...

  • 【网络】TCP的连接建立

    TCP是面向连接的协议。运输连接是用来传送TCP报文的。TCP运输连接的建立和释放是每一次连接通信过程中必不可少的...

  • 计算机网络

    1、TCP的连接和释放连接? 连接建立的过程: ·Client向Server发送连接请求 ·Server接收到Cl...

  • 理解TCP和UDP

    一、TCP端口 二、TCP报文结构 三、TCP连接的建立和释放 TCP的整个交互过程可总结为:先建立连接、然后传输...

网友评论

      本文标题:【网络】tcp的连接管理-连接的释放

      本文链接:https://www.haomeiwen.com/subject/wlwledtx.html