计算机网络--五.运输层

1.运输层协议概述

1.进程之间的通信

运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
两个主机进行通信实际上就是两个主机中的应用进程互相通信。
应用进程之间的通信又称为端到端的通信。
运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。复用是指发送方不同的应用进程都可以使用同一个运输层协议传送数据,分用就是指接收层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
运输层的功能
1.运输层还要对收到的报文进行差错检测。
2.运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。
3.当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。
4.当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。

2.运输层的两个主要的协议

1.用户数据报协议 UDP,UDP 传送的数据单位协议是 UDP 报文或用户数据报。

UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。

2.传输控制协议 TCP,TCP 传送的数据单位协议是 TCP 报文段

TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源

3.运输层的端口

为了使运行不同操作系统的计算机的应用进程能够通信,对TCP/IP 体系的进程是用统一的进程标识符来标志的。
在运输层使用协议端口号、简称为端口。
虽然通信的终点是应用进程,只要把要传送的报文交到目的主机的某一个合适的目的端口,最后交付目的进程就由 TCP 来完成,TCP和 UDP 首部格式中就有源端口和目的端口两个字。
端口用一个 16 位端口号进行标志。
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。两个计算机的应用进程之间的通信不仅需要知道对方的 IP 地址也需要对方的 端口号。
运输层端口的分类
熟知端口,数值一般为 0~1023。给一些 TCP/IP 最重要的 程序。
登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。
客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

2.用户数据报协议 UDP

1.UDP 概述

用户数据报协议 UDP 只在 IP 数据报的服务之上增加了很少的一点功能,这就是复用和分用以及差错检测的功能。
UDP 的主要特点:
1.UDP 是无连接的,发送数据不需要建立连接
2.UDP 使用尽最大努力交付的
3.UDP 是面向报文的,对应用程序交下来的报文,在添加首部后就向下交给 IP 层,UDP b保留了这些报文的边界。
4.UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。
5.UDP 支持一对一,一对多, 多对一和多对多的交互通信。
6.UDP 的首部开销比较小,只有8 个字节,TCP 有 20 个字节。
2.UDP 的首部格式
用户数据报 UDP 有两个字段,数据字段和首部字段,首部字段由四个字段组成,每个字段的长度都是两个字节。
1.源端口:在需要对方回信的时候选用
2.目的端口号:在终点交付报文的时候必须要使用到。
3.长度:UDP 数据报的长度,最小值是 8 字节。
4.检测和 :检测UDP 数据报在传输过程中是否有错。有错就丢弃。
当运输层从 IP 收到用户数据报的时,就根据 首部中的目的端口,把 UDP 数据报通过相应的端口,上交最后的终点,应用进程。如果接收方收到的报文中的目的端口不正确,就丢弃该报文,并由网际控制报文协议ICMP 发送不可达报文。UDP数据报的的校验和是把首部和数据一起都检验。

3.传输控制协议 TCP 概述

1.TCP 最主要的特点

1.TCP 是面向连接的运输层协议。必须建立 TCP 连接,数据传送完毕后必须释放连接
2.每一条 TCP 连接只能有两个端点,每一条 TCP 连接都是点对点的。
3.TCP 提供可靠的连接,通过 TCP 传输的数据无差错,不丢失,不重复,并且按序到达。
4.TCP 提供全双工通信。接收方和发送方都设有缓存。
5.面向字节流,流是指流入进程或从进程流出的字节序列。
在发送报文的时候,TCP 和 UDP 在发送报文时所采用的方式完全不同, TCP 并不关心应用进程一次把多长的报文送到 TCP 的缓存,而是根据对方给出的窗口值和当前网路拥塞的程度来决定一个报文段应包含多少字节。

2.TCP 的连接

TCP 的连接的端点叫套接字,由 IP 地址和端口组成。每一条 TCP 连接唯一地被通信两端的两个端点确定。

4.可靠传输的工作原理

1.停止等待协议

就是每发送一个分组就停止等待发送,等待对方的确认,在收到确认后再发下一个分组。

image

1.出现差错
B 接收的时候检测出现差错,直接丢弃后什么也不做。A 只要超过一定的时间仍然没有收到确认就认为是分组丢失,因而重传前面发送的分组,这就叫做超时重传,发送方会设置一个超时计时器用于计时。
注意:1.A 发送必须暂时保留已发送的分组的副本,为方便重传。2.分组和确认都必须进行编号,便于确定哪一个分组分重传和确认。3.超时计时器设置的时间应该比数据在分组传输的平均往返时间更加长一点。
2.确认丢失和确认迟到
当 B 已经收到数据,但是发送的确认丢失了,因此 A会再次发送,这时 B 会收到重复的数据,这时应该丢弃这个重复的分组 M1, 然后重新向 A 发送确认。
当 B 发送的确认迟到了,A 会再次发送数据,因此会收到迟到的确认和这次数据的确认。对重复的确认 A 收下后直接丢弃,
通过确认和重传机制,就可以在不可靠的网络传输中实现可靠的通信。像上述这种可靠协议常称为自动重传请求 ARQ.
3.信道的利用率
停止等待协议的优点的时候就是见简单,但是缺点是信道的利用率太低,为了提高传输的效率,发送方可以不使用低效率的停止等待协议而是采用流水线的传输方式,可连续发送多个分组。

image
image

2.连续 ARQ 协议

发送方维持一个发送窗口。位于窗口的5个分组都可以连续的发送出去。

image

接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。
累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。

TCP 报文首部的格式

TCP 虽然是面向字节流的,但是 TCP 传送的数据单元确实报文段,一个TCP 报文段分为首部和数据两部分,TCP 首部的最小长度是 20字节。

image

1.源端口和目的端口:端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现
2.序号字段:TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。比如一个序号字段值是301,数据拥有100字节,最后一个字节的序号就是400
3.确认段序号:是期望收到对方的下一个报文段的数据的第一个字节的序号。比如收到一个了一个报文,序号字段是301 ,数据是100字节,最后一个字节的序号是400,那下一个序号就是401,这就是确认段序号。
4.数据偏移:指出 TCP 报文段的数据部分起始处距离 TCP 报文段的起始处的距离。实际上指的是首部的长度。TCP 首部的长度最大是 60 字节。
5.保留字段:保留字段——占 6 位,保留为今后使用,但目前应置为 0。
6.紧急 URG: 当 URG  1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
7.确认 ACK:ACK= 1 时确认号字段才有效。当 ACK  0 时,确认号无效。
8.推送 PSH:接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
9.复位:当 RST  1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
10.同步SYN:同步 SYN = 1 表示这是一个连接请求或连接接受报文.
11.终止 FIN :用来释放一个连接。FIN  1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
12.窗口:用来让对方设置发送窗口的依据,指的是报文段的发送方的接收窗口,目的是让接收方回复数据时设置发送窗口的大小。单位为字节.
13.检验和:检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部.
14.紧急指针字 :指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
15.选项:(长度可变)TCP 最初只规定了一种选项,即最大报文段长度 MSS,MSS 是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。MSS 的默认值是 536 字节,在因特网上的主机都应能接受的报文长度是536+20=556字节。
窗口扩大选项:占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于TCP 首部中的窗口位数增大到(16 + S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。
时间戳选项——占10 字节,其中最主要的字段时间戳值字段(4 字节)和时间戳回送回答字段(4 字节)。主要有两个功能:1.计算往返时间 RTT 2.用于处理TCP 序号超过一定界限,又称防止序号绕回 PAWS 。加上时间就可以唯一。
选择确认选项。

TCP 可靠传输的实现

1.以字节为单位的滑动窗口

假定A 收到B 发来的确认报文段,确认号是21 ,窗口值是 20

image
image
image
image

注意:
1.A 的发送窗口时根据 B 的 接收窗口设置的但是, A 的发送窗口并不总是和 B 的窗口一样大。
2.对于不按序列到达的数据, TCP 先临时放在接收窗口中,等到字节流中,所缺少的而字节收,再按序交付给上层的应用进程。
3. TCP 要求接收方必须有累计确认的功能。

2.超时重传时间的选择

TCP 采用了一种自适应的算法来设置超时重传的时间,TCP 记录一个报文段发出的时间,以及收到相应的确认时间,这两个时间之差就是报文段的往返时间 RTT,TCP 保留了 RTT的一个加权平均往返时间 RTTs(平滑往返时间)每回的第一次测量到RTT样本时,RTTs值就取为所测量到的RTT样本值,但以后每次测量到一个新的RTT样本,就按下面的公式重新计算一次RTTsimage

(阿尔法 的值介于0到1,若很接近0,则表示旧的RTTs值和新的RTTs值相比变化不大,也就是说,新的RTT样本不太影响RTTs; 若很接近1,则表明新的RTTs值,受当前采集的RTT样本影响较大,跟上次的RTTs差距大,推荐的阿尔法值为1/8,也就是0.125)

超时计数器设置的超时重传时间RTO(Retransmission Time-Out)应略大于上面计算的结果。同样的:

image

RTTd是RTT的偏差的加权平均值,与RTTs和新的RTT样本之差有关。RFC 2988建议这样计算RTTd。当第一次测量时,RTTd值取为RTT样本值的一半。在以后的测量中,则使用下式计算加权平均RTTd

image(贝塔)是一个小于1的系数,它的推荐值是1/4,即就是0。

为了区分确认报文是对第一次发送的确认还是对重传的确认,且使得计算的 RTTs 和 RTO 较为准确。一种改进的 Karn 算法就是:报文段每重传一次就把超时重传时间 RTO 增大,典型的做法就是取新的重传时间为 2倍的旧的重传时间,当不在发生报文的重传时,才根据上面给的计算超时重传。

3.选择确认 SACK

选择确认就是如果收到的报文段没有差错,只是未按序号,中间还缺少一些序号的数据,通过选择确认就可以只传送缺少的数据而不重传已经正确到达的接受方的数据。
由于还未指明发送方应该怎样响应 SACK,因此大多数的实现还是重传所有未被确认的数据块。下面是字节块的基本概念。

image

TCP 的流量控制

1.利用滑动窗口的实现

流量控制就是让发送方的控制发送速率,便于接收方来得及接收。主要还是利用滑动窗口机制。
发送方的发送窗口不能超过接收方给出的接收窗口的数值( rwnd ), TCP 的窗口的单位是字节,不是报文段。
如果恰好B发送了一个 rwnd = 0 报文的,表示 A 暂时不能发送数据,但是 B 又发送了一个 rwnd = xx 的报文但是丢失了, 就会产生死锁。解决方法就是:TCP 为每一个连接设有一个持续计时器。只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。

2.传输效率

不同的机制控制TCP 报文的发送时机
1.第一种机制是 TCP 维持一个变量,它等于最大报文段长度 MSS。只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去。
2.第二种机制是由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送(push)操作。
3.第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去.
问题1:如果只发送了一个字节,效率并不高,因此应适当推迟发回确认的报文,并尽量使用捎带确认的方法。在 TCP 中广泛实现 Nagle 算法。
问题2:糊涂窗口综合症
对于接收端来讲,如果接收很慢,一次接收1个字节或者几个字节,这个时候接收端 缓冲区很快就会被填满,然后窗口通告为0字节,这个时候发送端停止发送,应用程序收上去1个字节后,发出窗口通告为1字节,发送方收到通告之后,发出1个字节的数据,这样周而复始,传输效率会非常低
解决方法就是让接受方等待一段时间,或者接收缓存已有的足够的空间容纳一个最长的报文段后,或者等待接收缓存已有一半空闲的时间。

TCP 的流量控制

在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞。
拥塞控制和流量控制的区别
1.拥塞控制就是防止过多的数据注入到网络,这样就可以使网络中的路由器或链路不致过载,拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
2.流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
当网络的吞吐量明显小于理想的吞吐量时,网络就进入了轻度的拥塞,当负载到达一定程度数值的时候,网络的吞吐量反而随提供的负载的增大而减少,这时网络就进入了拥塞砖状态,当吞吐量下降到 0 的时候网络已经无法工作这就是所谓的死锁。
拥塞空中的控制理论
开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。
闭环控制是基于反馈环路的概念。属于闭环控制的有以下几种措施:

监测网络系统以便检测到拥塞在何时、何处发生。
将拥塞发生的信息传送到可采取行动的地方。
调整网络系统的运行以解决出现的问题。

3.几种拥塞控制算法

进行拥塞控制有四种算法,慢开始,避免拥塞,快重传,和快恢复。

1.慢开始和拥塞避免

发送方维持一个叫做拥塞窗口 cwnd 的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如再考虑到接收方的接收能力,则发送窗口还可能小于拥塞窗口。
发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。 最好的方法就是由小到大逐渐增大发送窗口,通常在刚刚开始发送报文段时,先把拥塞窗口cwnd 设置一个最大的报文段 MSS ,在每收到一个报文段的确认后就把拥塞窗口增加至多一个 MSS 的数值逐步增大发送方的拥塞窗口

image
使用慢开始算法后,每经过一个传输轮次,拥塞窗口 cwnd 就加倍。
一个传输轮次所经历的时间其实就是往返时间 RTT。
“传输轮次”更加强调:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。
例如,拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报文段的确认,总共经历的时间。

为了防止拥塞窗口 cwnd 增长过大引起网络拥塞,还需要设置一个慢开始门限状态变量 ssthresh
慢开始门限 ssthresh 的用法如下:
当 cwnd < ssthresh 时,使用慢开始算法。
当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。

拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长。

无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就要把慢开始门限 ssthresh 设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口 cwnd 重新设置为 1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。

举例

image

“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

2.快重传和快恢复

快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。 发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。

举例

image

图中看到接收方收到 M2,没有收到 M3,根据快重传规定,每收到一个失序的报文(4.5.6)就发出重复的确认(2,2,2),发送方收到三个重复的确认就重传 M3.

4.快恢复

(1) 当发送端收到连续三个重复的确认时,就执行“乘法减小”算法(除2减少),把慢开始门限 ssthresh 减半。但接下去不执行慢开始算法。
(2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口 cwnd 现在不设置为 1,而是设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”)(加1增大),使拥塞窗口缓慢地线性增大。

image

发送方的发送窗口的上限值应当取为接收方窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即应按以下公式确定:
发送窗口的上限值  Min [rwnd, cwnd] (5-8)
当 rwnd < cwnd 时,是接收方的接收能力限制发送窗口的最大值。
当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。

3.早期随机检测 RED

使路由器的队列维持两个参数,即队列长度最小门限 THmin 和最大门限 THmax。RED 对每一个到达的数据报都先计算平均队列长度 LAV。
若平均队列长度小于最小门限 THmin,则将新到达的数据报放入队列进行排队。
若平均队列长度超过最大门限 THmax,则将新到达的数据报丢弃。
若平均队列长度在最小门限 THmin 和最大门限THmax 之间,则按照某一概率 p 将新到达的数据报丢弃。

image

# 当 LAV < Thmin 时,丢弃概率 p = 0。当 LAV > Thmax 时,丢弃概率 p = 1。当 THmin < LAV < THmax时, 0 < p < 1 。

TCP 的运输连接管理

运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。
连接建立过程中要解决以下三个问题:
1.要使每一方能够确知对方的存在。
2.要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
3.能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。

1.TCP 连接的建立(三次握手建立 TCP 连接)

TCP 的连接采用客户服务器方式。
第一次:A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。
第二次: B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x +1,自己选择的序号 seq = y。

立。

第三次: A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。 A 的 TCP 通知上层应用进程,连接已经建立。 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。
A 还要发一次确认主要是防止已失效的连接请求报文突然又传送到了B.这可能是上次一请求没有丢失而是延迟,又发了一次请求,但是B 以为有两个请求,所以发了两个确认,但是A 只有一次确认,所以不再处理新的确认。B 收不到确认就不会建立新的链接。

image

2.TCP 的连接释放

第一次: 数据传输结束后,通信的双方都可释放连接。现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接(进入终止等待 1 状态)。 A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。
第二次:B收到确认后发出确认 B 发出确认,确认号 ack = u + 1,而这个报文段自己的序号 seq = v。 TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收,A (进入终止等待2状态) 。B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。A
第三次; A 收到连接释放报文段后,必须发出确认。在确认报文段中 ACK = 1,确认号 ack = w + 1,自己的序号 seq = u + 1。 然后进入时间等待状态。此时TCP 连接还没释放必须经过时间等待计时器设置的时间 2MSL (最长报文段寿命)
第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。
第二,防止 “已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

image

TCP 还有一个保活计时器,防止连接建立后不发送数据,会隔一段时间进行探测没有响应就直接关闭连接。
参考资料《计算机网路》–谢希仁

猜你喜欢

转载自blog.csdn.net/m0_38089373/article/details/80666437