注:本文为 “数据链路层重传工作原理” 相关文章合辑。
未整理去重。
【计算机网络】数据链路层:停止 - 等待协议 ( 无差错情况 | 有差错情况 | 帧丢失 | 帧出错 | ACK 确认帧丢失 | ACK 确认帧延迟 | 信道利用率公式 | 信道利用率计算 )
- 韩曙亮于 2020-08-18 00:22:42 发布 *
一、 停止 - 等待 协议 简介
停止 - 等待 协议 解决的问题:
-
可靠传输:解决 由于 物理线路、设备故障、路由错误 等各种问题导致的 丢包问题;
-
流量控制:实现 发送端 与 接收端 的 流量控制;
停止 - 等待 协议 讨论场景:只考虑 一方为发送方,一方为接收方;相当于 单工通信场景;
停止 - 等待 协议内容:发送方 每 发送完一个 数据帧(分组 / 数据报),就停止发送,等待接收端确认,接收到 接收端 确认信息后,再发送下一个分组数据;
停止 - 等待 协议 应用场景:
-
无差错情况
-
有差错情况
二、 “停止 - 等待协议” 无差错情况
“停止 - 等待协议” 无差错情况:
发送方 0:发送 00 帧;
接收方 0:接收 00 帧,并返回 00 帧确认信息 ACK00;
发送方 1:收到 ACK00 确认帧后,发送 11 帧;
接收方 1:接收 11 帧,并返回 11 帧确认信息 ACK11;
发送方 0:收到 ACK11 确认帧后,发送 00 帧;注意此处的 00 帧与上面的只是序号相同,数据不同;
接收方 0:接收 00 帧,并返回 00 帧确认信息 ACK00;
发送方 每发送一个数据帧,就停止等待,数据帧编号使用1 bit编号就足够了;
上述过程是理想传输的情况,发送与接收都没有差错产生,没有丢包;
三、 “停止 - 等待协议” 有差错情况 ( 帧丢失、帧出错 )
差错的情况:
-
数据帧 丢失
-
检测到 帧 错误
“停止 - 等待协议” 有差错情况:
发送方 0:发送 00 帧;
接收方 0:接收 00 帧,并返回 00 帧确认信息 ACK00;
发送方 1:收到 ACK00 确认帧后,发送 11 帧;
帧丢失:发送过程中,链路出现故障,11 帧丢失,接收方没有收到 11 帧,自然不会向发送方发送帧确认信息;
帧出错:接收方没有收到 11 帧,但是校验后,该帧是错误帧,也不会向发送方发送帧确认信息;
发送方 1:超时计时器在每次发送时,都会启动自动计时,当超时后,发送方会重新发送 11 帧;
接收方 1:接收 11 帧,并返回 11 帧确认信息 ACK11;
超时重传机制:
① 超时计时器:发送方每次发送数据帧后,就会自动开始计时;
② 超时时间:超时重发的重传时间,比帧传出的平均往返延迟 ( RTT ) 长;
③ 保留副本:发送方发送完数据帧后,必须保留副本,以免丢包需要重传;
④ 帧编号:数据帧与确认帧必须编号;
四、 “停止 - 等待协议” 有差错情况 ( ACK 确认帧丢失 )
“停止 - 等待协议” 有差错情况:
发送方 0:发送 00 帧;
接收方 0:接收 00 帧,并返回 00 帧确认信息 ACK00;
发送方 1:收到 ACK00 确认帧后,发送 11 帧;
接收方 1:接收 11 帧,并返回 11 帧确认信息 ACK11;
ACK 确认帧丢失:上述发出的 ACK11 确认帧丢失,发送方没有接收确认帧;
ACK 确认帧延迟:上述发出的 ACK11 确认帧出现很大的延迟,发送方没有接收确认帧;
发送方 1:超时计时器在每次发送时,都会启动自动计时,当超时后,发送方会重新发送 11 帧;
接收方 1:接收 11 帧,丢弃掉重复的 11 帧,并返回 11 帧确认信息 ACK11;
如果发送方在某个时刻接收到迟到的 ACK 确认帧,发现该数据帧是之前已经处理过的数据帧,直接丢弃该 ACK 确认帧即可;
五、 “停止 - 等待协议” 性能分析
“停止 - 等待协议” 性能分析:
优点:简单
缺点:信道利用率低;
信道利用率:
U = T D T D + R T T + T A \Large U = \frac {T_D}{T_D + RTT + T_A} U=TD+RTT+TATD
U U U 是信道利用率;
T D T_D TD 是发送方发送延迟,即发送方用了多长时间将数据帧发送完毕;
R T T RTT RTT 是往返时延;
T A T_A TA 是接收方发送 ACK 确认帧的时延;
“停止 - 等待协议” 信道利用率很低,大部分时间都在传输的延迟上,用于发送接收的时间很少;
六、 信道利用率 公式
信道利用率是发送方,在一个发送周期内,有效发送数据所占用的时间,占整个发送周期的比例;
信道利用率 = L C T \Large\text {信道利用率} = \frac {\frac {L}{C}}{T} 信道利用率=TCL
L L L 是发送的数据比特数;
C C C 是发送方的速率;
其中 L C \frac {L}{C} CL 是发送时延;
T T T 是发送的周期,即从开始发送,到收到第一个确认帧为止的时间;
信道吞吐率 = 信道利用率 × 发送方的发送速率 \text {信道吞吐率} = \text {信道利用率} \times \text {发送方的发送速率} 信道吞吐率=信道利用率×发送方的发送速率
七、 信道利用率 计算
信道传输速率 4000b/s,单向传播时延 30ms,使 “停止 - 等待” 协议信道利用率达到 80%,数据帧长度至少是多少?
信道利用率公式为:
U = T D T D + R T T + T A \Large U = \frac {T_D}{T_D + RTT + T_A} U=TD+RTT+TATD
先把数据单位收拾下,传输速率 4000 比特 / 秒,单向传播时延 0.03 秒,RTT 是 0.06 秒;设数据帧长度是 L L L 比特;这里没有给出 ACK 发送延迟,当做 0;
L 4000 L 4000 + 0.06 + 0 = 0.8 \Large\frac {\frac {L}{4000}}{\frac {L}{4000} + 0.06 + 0} = 0.8 4000L+0.06+04000L=0.8
分子分母都乘以 4000;
L L + 240 = 0.8 \Large\frac {L}{L + 240} = 0.8 L+240L=0.8
L = 0.8 L + 192 L = 0.8L + 192 L=0.8L+192
0.2 L = 192 0.2L = 192 0.2L=192
L = 960 L = 960 L=960
单位是比特;
数据帧的长度至少是 960 比特
计算机网络 数据链路层:停止 - 等待协议、后退 N 帧协议、选择重传协议
- 李白于 2020-05-09 21:36:31 发布 *
1、流量控制的方式
流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每个帧。例如,在面向帧的自动重传请求系统中,当待确认帧的数量增加时,有可能超出缓冲存储空间而造成过载。流量控制的基本方法是接收方控制发送方发送数据的速率,常见的方式有两种:
1.1、停止 - 等待流量控制基本原理
发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因此传输效率极低。
1.2、滑动窗口流量控制基本原理
在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方也维持一组连续的允许接收帧的序号,称为接收窗口。发送窗口用来对发送方进行流量控制,而发送窗口的大小 Wt 代表在还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。同理,在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些数据帧。在接受方,只有收到的数据帧的序号落入接收窗口内时,才允许将该数据帧收下,若接收到的数据帧落在接收窗口之外,则一律将其丢弃。

图 19-1 发送窗口的工作原理
上图中:
(a) 允许发送 0~4 号共 5 个帧
(b) 允许发送 1~4 号共 4 个帧
© 不允许发送任何帧
(d) 允许发送 5~7 共 3 个帧
发送端每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(即窗口内的帧全部是已发送但未收到确认的帧)时,发送方就会停止发送,直到收到接收方发送的确认帧使窗口移动,窗口内有可以发送的帧后,才开始继续发送。

图 19-2 接收窗口的工作原理
(a) 准备接收 0 号帧
(b) 准备接收 1 号帧
© 准备接收 4 号帧
接收端收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落在接收窗之外,则一律丢弃。
滑动窗口有以下重要特性:
-
只有接收窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能(只有发送方收到确认帧后才是一定)向前滑动。
-
从滑动窗口的概念看,停止 - 等待协议,后退 N 帧协议和选择重传协议只在发送窗口大小与接收窗口大小上有所差别:
停止 - 等待协议:发送窗口大小 = 1,接收窗口大小 = 1;
后退 N 帧协议 :发送窗口大小 > 1,接收窗口大小 = 1;
选择重传协议 :发送窗口大小 > 1,接收窗口大小 > 1。
-
接收窗口的大小为 1 时,可保证帧的有序接收。
-
数据链路层的欢动窗口协议中,窗口的大小在传输过程中是固定的(注意与传输层的滑动窗口协议的区别传输层内容博主会后续陆续推出)
1.3、可靠传输机制
数据链路层的可靠传输通常使用确认和超时重发两种机制来完成。
确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认。
超时重传是指发送方在发送某个数据帧后就开启一个计数器,在一定时间内如果没有得到发送的数据的确认帧,那么就重新发送该数据帧,直到接收端得到确认帧为止,即发送成功。
2、单帧滑动窗口与停止 - 等待协议(stop-and-wait)
在停止 - 等待协议中,源站发送单个帧后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据帧。从滑动窗口机制的角度来看,停止 - 等待协议相当于发送窗口和接收窗口大小均为 1 的滑动窗口协议。
在停止 - 等待协议中,除数据帧丢失外,还可能出现以下两种错差。
到达目的站的帧可能已经遭到破坏,接收站利用 差错校验技术 检出后,简单地将该帧丢弃。为了对付这种可能发生的情况,源站装备了计时器。在一个帧发送之后,源站等待确认,如果在计时器计满时仍未收到确认,那么在此发送相同的帧。如此重复,知道该数据帧无错误地达到为止。
另一种可能的差错时数据帧正确而确认帧被博怀,此时接收方已收到正确的数据帧,但发送方收不到确认帧,因此发送方会重传已被接收的数据帧,接收方收到同样的数据帧时会丢弃该帧,并重传一个该帧对应的确认帧。
发送的帧交替地用 0 和 1 来标识,肯定确认 (Acknowledge character) 分别用 ACK0 和 ACK1 来标识,收到的确认有误的时候,重发已发送的帧。
停止 - 等待协议算法实现步骤如下:
在发送结点:
-
从主机取一个数据帧,送交发送缓存;
-
V (S)<-0; {发送状态变量 V (S) 初始化}
-
N (S)<-V (S);{将发送状态变量值写入数据帧中的发送序号 N (S)}
-
将发送缓存中的数据帧发送出去;{这个数据帧的副本仍保留在发送缓存中}
-
设置超时计数器;{选择适当的超时重传时间 t}
-
等待。{等待第 7 步和第 8 步这两个时间中最先出现的一个}
-
收到确认帧 ACKn 后,若 n=1-V (S),
则已发送的数据帧被接收方确认 {收到的 n 为下一个待发数据的发送序号}
从主机取一个新的数据帧,放入发送缓存。
V ( S ) < − [ 1 − V ( S ) ] V (S)<-[1-V (S)] V(S)<−[1−V(S)],转到第 4 步;{更新发送状态变量,变为下一个序号}
否则,丢弃这个确认帧,转到第 6 步。{重传已发送的数据帧}
- 若超时计时器时间到,转到第四步
在接收结点:
-
V ®<-0;{接收状态变量初始化,其数值等于欲接收的数据帧的发送序号}
-
等待
-
收到一个数据帧,检查有无产生传输差错(如用 CRC)
若检查结果正确无误,则执行后续后续算法。否则,直接丢弃,转第 2 步
- 若 N (S)=V ®,则执行后续算法。{收到发送序号正确的数据帧}
否则丢弃此数据帧,然后转到第 7 步;{此时丢弃的帧就是重复帧}
-
将收到的数据帧中的数据部分送交主机;
-
V ®<-[1-V ®];{更新接收状态变量,准备接收下一个数据帧}
-
发送确认帧 ACKn,并转到第 2 步;{n=V ®,标明期望收到 V ®}
由以上算法可知,对于停止 - 等待协议,由于每发送后一个数据帧就停止并等待,因此用 1bit 来编号就已足够。在停止 - 等待协议中,若出现相同发送序号的数据帧,表名发送端进行了超时重传。连续出现相同序号的确认帧时,表明接收端收到了重复帧。
此外,为了超时重发和判定重复帧的需要,发送方和接收方都需要设置一个帧缓冲区。发送端在发送完数据帧时,必须在其发送缓冲中保留次数据帧的副本,这样才能在出差错时进行重传。只有在收到对方发来的确认帧 ACK 时,方可清除此副本。

图 19-3 停止 - 等待协议中数据帧和确认帧的发送时间关系
由图 19-3 可以看出,停止 - 等待协议通信信道的利用率很低。为了克服这一缺点,就产生了另外两种协议,即后退 N 帧协议和选择重传协议。
3、多帧滑动窗口和后退 N 帧协议(GBN,Go-Back-N ARQ)
在后退 N 帧式 ARQ (Automatic Repeat-reQuest, 自动重传请求) 中,发送方无需在收到上一个帧的 ACK 后才能开始发送下一帧,而是可以连续发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了 N 个帧后,若发现该 N 个帧的前一个帧在计时器超时后仍未返回确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的 N 个帧。换句话说,接收方只允许按顺序接收帧。

图 19-4 GBN 协议的工作原理:对出错数据帧的处理
如图 19-4 所示,源站向目的站发送数据帧。当源站发完 0 号帧后,可以继续发送后续的 1 号帧、2 号帧等。源站每发送完 一帧就要为该帧设置超时计时器。由于连续发送了许多帧,所以确认帧必须要指明是对哪一帧进行确认。为了减少开销,GBN 协议还规定接收端不一定每收到一个正确的数据就必须立即发回一个确认帧,而可以在连续收到好几个正确的数据帧后,才对最后一个数据帧发确认信息,或者可在自己有数据要发送时才将对以前收到的帧加以捎带确认。这就是说,对某一数据帧的确认就表明该数据帧和此前所有的数据帧均已正确无误地收到。
在图 19-4 中,ACKn 表示对第 n 号帧的确认,表示接收方已正确收到第 n 号帧及以前的所有帧,下一次期望收到第 N+1 号帧(也可能是第 0 号帧)。接收端指按序接收数据帧。虽然在有差错的 2 好帧之后接着又收到了正确的 6 个数据帧,但接收端都必须将这些帧丢弃,接收端虽然丢弃了这些不按序的无差错帧,但应重复发送已发送的最后一个确认帧 ACK1(这是为了防止已发送的确认帧 ACK1 丢失)
后退 N 帧协议的接收窗口为 1,可以保证按序接收数据帧。若采用 n 比特对帧编号,则其发送窗口的尺寸 Wt 应该满足 1 < = W t < = ( 2 n ) − 1 1<=Wt<=(2^n)-1 1<=Wt<=(2n)−1, 则会造成接收方无法分辨新帧和旧帧。
从图 19-4 不难看出,后退 N 帧协议一方面因连续发展数据帧而提高了信道的利用率,另一方面在重传的时候又必须把原来已传送正确的数据帧进行重传(即使这些数据帧前面仅有一个数据帧出错),这种做法优势的传送效率降低。
由此可见,若信道的传输质量很差导致误码率较大是,后退 N 帧协议不一定优于停止 - 等待协议。
4、多帧滑动窗口与选择重传协议(SR)
为进一步提高信道的利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便于先收下发送序号不连续但仍处于接收窗口中的这些数据帧。等到所缺的数据帧收到后一并再交给主机,这就是重传 ARQ 协议。
在选择重传协议中,每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。另外,该协议使用了比上述其他协议更有效的差错处理策略,即一旦接收方怀疑帧出错,就会发一个否定帧 NAK (Negative Acknowledgment) 中指定的帧进行重传。如图 19-5 所示

图 19-5 选择重传协议
选择重传协议的接收窗口尺寸 Wr 和发送窗口尺寸 Wt 都大于 1,一次可以发送或接收多个帧。若采用 n 比特对帧编号,为了保证接收方 向前移动窗口后,新窗口的序号与旧窗口的序号没有重叠部分,需要满足条件:接收窗口 Wr + 发送窗口 Wt<=2^n。假定仍然采用累计确认的方法,并且接收窗口 Wr 显然不应超过发送窗口 Wt(否则无意义),那么接收窗口尺寸不应该超过序号范围的一般,即 Wr<=2(n-1)。接收窗口为最大值时,Wtmax=Wrmax=2(n-1)。一般情况下,在 SR 协议中,接收窗口的大小和发送窗口的大小是相同的。
选择重传协议可以避免重复传送那些本已经正确达到接收端的数据帧,但在接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧。接收端不能接受窗口下界以下或窗口上界以上的序号的帧,因此所需缓冲区的数目等于窗口的大小,而不是序号数目。
深入探讨 —— 信道利用率 [停止 - 等待协议、回退 N 帧的 ARQ 协议]
- 一支王同学已于 2022-10-23 14:41:59 修改 *
在学《计算机网络与通信》时,深入探讨并总结了 “信道利用率” 这个重点,做了一点笔记。
一、信道利用率的概念
●信道利用率:指发送方在一个发送周期的时间内,发送有效数据所需要的时间占整个发送周期的比率。
◆例如:发送方从一开始发送数据,到收到第一个确认帧为止,称为一个发送周期 T T T。发送方在这个周期内共发送 L L L 比特的数据,发送方的传输速率为 C C C,则发送方用于发送有效数据的时间为 L / C L/C L/C。则在这种情况下,信道的利用率为 η = L / C T η=\frac {L/C}{T} η=TL/C。
● 上述中 L L L 和 C C C 都好理解,一般题目都会直接给。但发送周期 T T T 就不是直接给的了,需要我们就 某种协议 而计算了。
二、停止 - 等待协议的信道利用率怎么算?
2.1 停止 - 等待协议 —— 概念
●停止 - 等待协议:发送窗口和接收窗口大小均为 1,发送方每发送一帧之后就必须停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧。
● 为了写出其信道利用率,先了解一下 8 个重要的时间节点,即下图所示的
t
0
、
t
1
、
.
.
.
、
t
7
t_0、t_1、...、t_7
t0、t1、...、t7:

●数据帧长度: F = H + D F=H+D F=H+D,注: H H H 为帧头 (用于传输控制、检验等), D D D 为数据。
●发送时延: t F = t 1 − t 0 = t 3 − t 2 = F / C t_F = t_1 - t_0 = t_3 - t_2 = F / C tF=t1−t0=t3−t2=F/C,注: C C C 为发送方的传输速率。
●有效的发送时延: t D = D F × t F t_D = \frac {D}{F}\times t_F tD=FD×tF
●传播时延: t P = t 2 − t 0 = t 3 − t 1 = L / v t_P = t_2 - t_0 = t_3 - t_1 = L/v tP=t2−t0=t3−t1=L/v,注: L L L 为节点 A 与 B 之间的距离、 v v v 为信号传播速率 (常为 3×108m/s)。
●处理时延: t p r o c = t 4 − t 3 t_{proc}= t_4 - t_3 tproc=t4−t3
●应答帧发送时延: t A = t 5 − t 4 = t 7 − t 6 = A / C t_A = t_5 - t_4 = t_7 - t_6= A / C tA=t5−t4=t7−t6=A/C,注: A A A 为应答帧长度。
●在正常情况 (即无差错) 下,停止 - 等待协议的 信道利用率 为:
η = t 1 − t 0 t 7 − t 0 = t D t F + t A + 2 t P + 2 t p r o c \Large η =\frac { t_1-t_0}{ t_7-t_0}=\frac { t_D}{ t_F + t_A + 2t_P + 2t_{proc}} η=t7−t0t1−t0=tF+tA+2tP+2tproctD
◆注:为什么是两倍的 t p r o c t_{proc} tproc 因为我们认为发送方在接收到 应答帧 后,也会需要一定处理时间 (图中未画,即 t 8 t_8 t8,所以严谨来说 η = t 1 − t 0 t 8 − t 0 η =\frac { t_1-t_0}{ t_8-t_0} η=t8−t0t1−t0)。
● 别看上面那个公式这么大一堆,其实在实际题目当中,已隐去很多细节。
● 假设收发双方处理时间相同,即不用考虑**处理时延 t p r o c t_{proc} tproc **、**传播时延 t P t_P tP 以及应答帧发送时延 t A t_A tA **的开销,则信道利用率 η η η 仅与帧结构相关:
η = t D t F = D F = D H + D \Large η= \frac {t_D} { t_F} = \frac {D}{F} = \frac {D}{H+D} η=tFtD=FD=H+DD
● 一般在考试中,若题目没有特殊说明,我们只用考虑**发送时延 t F t_F tF **、**传播时延 t P t_P tP **: η = t F t F + 2 t P η= \frac {t_F} { t_F+2t_P} η=tF+2tPtF
●另外,在非正常情况 (即出现差错,需要重发若干次) 下,停止 - 等待协议的 信道利用率 为:
η = t D ( t F + t A + 2 t P + 2 t p r o c ) × 1 个帧的平均传送次数 = t D ( t F + t A + 2 t P + 2 t p r o c ) × ( 1 + 1 个帧的平均重传次数 ) \Large η =\frac { t_D}{ (t_F + t_A + 2t_P + 2t_{proc}) \times1 个帧的平均传送次数 } = \frac { t_D}{ (t_F + t_A + 2t_P + 2t_{proc}) \times (1+1 个帧的平均重传次数) } η=(tF+tA+2tP+2tproc)×1个帧的平均传送次数tD=(tF+tA+2tP+2tproc)×(1+1个帧的平均重传次数)tD
2.2 停止 - 等待协议 —— 优缺点
●停止 - 等待协议的优点:控制过程比较简单,易于实现 。
●停止 - 等待协议的缺点:通信信道的利用率不高,信道还远远没有被所传输的数据比特填满。
2.3 停止 - 等待协议 —— 例题
● 例 1. 信道速率为 8 kb/s,采用停止等待协议,传播时延 t p t_p tp 为 20 ms,确认帧长度和处理时间均可忽略,问帧长为多少才能使信道利用率达到至少 50%?
解:
因为信道利用率: η = t s t s + 2 t p ≥ 50 % \Large η =\frac { t_s}{ t_s +2 t_p} ≥ 50\% η=ts+2tpts≥50%,而 t p = 20 m s t_p = 20\, ms tp=20ms,故 t s ≥ 40 m s t_s≥40ms ts≥40ms
设帧长为 L L Lbit,则发送时延 t s = L b i t 8 K b / s ≥ 40 m s \Large t_s = \frac {L \,bit}{8 Kb/s}≥40ms ts=8Kb/sLbit≥40ms,解得: L ≥ 320 b i t L≥320\, bit L≥320bit
故帧长 L L L 应大于等于 320 bit。
● 例 2. 在卫星通信系统中,两个地面卫星通信站之间利用卫星的转发技术进行通信,信号从一个地面站经卫星传到另一个地面站,若设其传播时延为 250 ms,发送一个数据帧的时间为 20 ms,试分析此系统的信道利用率。
【注:由于卫星距离地面较远,电磁波需要较长时间才能从一个地面站传播到另一个。在卫星通信中,从一个地面站经过卫星到另一个地面站,称为一 “跳”。】
解:
信号从一个地面站经卫星传到另一个地面站,其传播时延为 250 ms,发送一个数据帧的时间为 20 ms.
则从发送站开始发送到数据帧被目的站接收,一共需要时间 20ms + 250ms = 270ms
(因为题目中没说,则)不考虑目的站对接收到的数据帧的处理时间和应答帧的发送时间(可以认为应答帧非常短),也不用考虑帧头(用于传输控制、检验等)
则应答帧也需要经过 250ms 才能被发送站接收到。
从发送第一帧开始,到收到应答所需要的时间为:270ms + 250ms = 520ms
则此系统的信道利用率为: η = 20 m s 520 m s ≈ 4 % \Large η =\frac { 20\, ms}{ 520\, ms}≈ 4% η=520ms20ms≈4%
◆从例 2 不难看出:对于 “停止 - 等待协议”,由于大量时间用于等待,因此系统利用率很低,造成资源的浪费。
三、回退 N 帧的 ARQ 协议的信道利用率怎么算?
3.1 回退 N 帧的 ARQ 协议 —— 概念
●回退 N 帧的 ARQ 协议(Go-Back-N,即 GBD):发信侧不用等待收信侧的应答,持续的发送多个帧,假如发现已发送的帧中有错误发生,那么从那个发生错误的帧开始及其之后所有的帧全部再重新发送。这种协议也称为 “连续 ARQ 协议” 或 “全部重发协议”。
● 为了写出其信道利用率,先了解一下 16 个重要的时间节点,即下图所示的
t
0
、
t
1
、
.
.
.
、
t
15
t_0、t_1、...、t_{15}
t0、t1、...、t15:【假设其发送的滑动窗口为 3、接收窗口的大小为 1】

●发送窗口的大小: W T W_T WT,右上图可知: W T = 3 W_T=3 WT=3
●数据帧长度: F = H + D F=H+D F=H+D,注: H H H 为帧头, D D D 为数据。
●发送时延: t F = t 2 − t 0 = t 4 − t 2 = t 6 − t 4 = F / C t_F = t_2 - t_0 = t_4 - t_2 = t_6 - t_4= F / C tF=t2−t0=t4−t2=t6−t4=F/C,注: C C C 为发送方的传输速率。
●有效的发送时延: t D = D F × t F t_D = \frac {D}{F}\times t_F tD=FD×tF
●传播时延: t P = t 1 − t 0 = t 3 − t 2 = L / v t_P = t_1 - t_0 = t_3 - t_2 = L/v tP=t1−t0=t3−t2=L/v,注: L L L 为节点 A 与 B 之间的距离、 v v v 为信号传播速率 (常为 3×108m/s)。
●处理时延: t p r o c = t 8 − t 3 = t 10 − t 5 t_{proc}= t_8 - t_3 = t_{10}-t_5 tproc=t8−t3=t10−t5,注意与 “停止 - 等待协议” 的处理时延相对比。
●应答帧发送时延: t A = t 10 − t 8 = t 12 − t 10 = t 14 − t 12 = A / C t_A = t_{10} - t_8 = t_{12} - t_{10} = t_{14} - t_{12} = A / C tA=t10−t8=t12−t10=t14−t12=A/C,注: A A A 为应答帧长度。
●在正常情况 (即无差错) 下,回退 N 帧的 ARQ 协议的 信道利用率 为:
η = W T × t D t F + t A + 2 t P + 2 t p r o c \Large η =\frac {W_T \times t_D}{ t_F + t_A + 2t_P + 2t_{proc}} η=tF+tA+2tP+2tprocWT×tD
● 也别看上面那个公式这么大一堆,其实在实际题目当中,已隐去很多细节。
● 假设收发双方处理时间相同,即不用考虑**处理时延 t p r o c t_{proc} tproc 和应答帧发送时延 t A t_A tA **的开销,则信道利用率 η η η 仅与帧结构相关:
η = W T × t D t F + 2 t P \Large η= \frac {W_T \times t_D} { t_F + 2t_P} η=tF+2tPWT×tD
●另外,在非正常情况 (即出现差错,需要重发若干次) 下,回退 N 帧的 ARQ 协议的 信道利用率 为:
η = W T × t D ( t F + t A + 2 t P + 2 t p r o c ) × 1 个帧的平均传送次数 = W T × t D ( t F + t A + 2 t P + 2 t p r o c ) × ( 1 + 1 个帧的平均重传次数 ) \Large η =\frac { W_T \times t_D}{ (t_F + t_A + 2t_P + 2t_{proc}) \times1 个帧的平均传送次数 } = \frac { W_T \times t_D}{ (t_F + t_A + 2t_P + 2t_{proc}) \times (1+1 个帧的平均重传次数) } η=(tF+tA+2tP+2tproc)×1个帧的平均传送次数WT×tD=(tF+tA+2tP+2tproc)×(1+1个帧的平均重传次数)WT×tD
◆有人可能会问,为啥只用 W T W_T WT 去乘 t D t_D tD ,而不去乘 t F t_F tF ?
这是因为对于**发送周期 T T T 而言,定义上考虑的是从 “有效发送第一个数据帧的开始” 到 “有效接收第一个应答帧的开始” 这段时间。而且,实际生活中,**处理时延 t p r o c t_{proc} tproc **并没有上图中那么大,所以看上去可能会产生一种视觉上的 “误会”。如果忽略了 t p r o c t_{proc} tproc 的话,应该是下面这张图的样子:【注意,图中的 t S t_S tS 即 t F t_F tF,只不过往往考试题目会忽略 “帧头” 和 t A t_A tA,所以常常是 η = W T × t S t S + 2 t P \Large η= \frac {W_T \times t_S} { t_S + 2t_P} η=tS+2tPWT×tS← 重点掌握公式】

3.2 回退 N 帧的 ARQ 协议 —— 优缺点
●回退 N 帧的 ARQ 协议的优点:允许发送方在等待应答的同时,能够连续不断地继续发送数据帧 (而不必每一帧都是接收应答后才可以发送下一帧),提高了传输效率,还能满足流量控制、差错控制等数据链路层的基本要求。
●回退 N 帧的 ARQ 协议的缺点:如果传输中某一帧出现了差错,则后续帧即使正确传送到接收方,也会被丢弃。发送发必须从出错的帧开始,全部重传。这种处理方式比较简单,但对已经正确传输的数据帧重传,降低了通信效率。
◆ 对于它的缺点,这里放一张图来简单说明吧:【需要注意的是 ACK 也有序号】

3.3 回退 N 帧的 ARQ 协议 —— 例题
● 例 1. 假设卫星信道的数据率为 1Mb/s,取卫星信道的单程传播时延为 250 ms,每一个数据帧长度是 1000 bit。忽略误码率、确认帧长和处理时间。试计算下列情况下的卫星信道可能达到的最大的信道利用率分别是多少?
(1) 停止 - 等待协议;(2) 连续 ARQ 协议, W T = 7 W_T = 7 WT=7; (3) 连续 ARQ 协议, W T = 127 W_T = 127 WT=127。
解:
(1) 发送时延: t S = 1000 b i t 1 M b / s = 1 m s \Large t_S=\frac {1000\,bit}{1\,Mb/s}=1ms tS=1Mb/s1000bit=1ms,信道利用率 η = t S t S + 2 t P = 1 m s 1 m s + 2 × 250 m s = 1 501 η=\frac {t_S}{t_S+2t_P}=\frac {1ms}{1ms+2\times 250ms}=\frac {1}{501} η=tS+2tPtS=1ms+2×250ms1ms=5011
(2) 发送时延: t S = 1000 b i t 1 M b / s = 1 m s \Large t_S=\frac {1000\,bit}{1\,Mb/s}=1ms tS=1Mb/s1000bit=1ms,信道利用率 η = W T × t S t S + 2 t P = 7 × 1 m s 1 m s + 2 × 250 m s = 7 501 η=\frac {W_T\times t_S}{t_S+2t_P}=\frac {7\times 1ms}{1ms+2\times 250ms}=\frac {7}{501} η=tS+2tPWT×tS=1ms+2×250ms7×1ms=5017
(3) 发送时延: t S = 1000 b i t 1 M b / s = 1 m s \Large t_S=\frac {1000\,bit}{1\,Mb/s}=1ms tS=1Mb/s1000bit=1ms,信道利用率 η = W T × t S t S + 2 t P = 127 × 1 m s 1 m s + 2 × 250 m s = 127 501 η=\frac {W_T\times t_S}{t_S+2t_P}=\frac {127\times 1ms}{1ms+2\times 250ms}=\frac {127}{501} η=tS+2tPWT×tS=1ms+2×250ms127×1ms=501127
● 例 2. (2012 年联考) 两台主机之间的数据链路层采用了后退 N 帧协议 (GBN) 传输数据,数据的传输速率为 16 kbps,单向传播时延为 270 ms,数据帧的长度范围是 128~512 字节,接收方总是以数据帧等长的帧进行确认 (即确认帧长度与发送的帧一样大)。为使信道利用率最高,帧序列的比特数至少是 ( )
A.5 B.4 C.3 D.2
解:
数据的传输速率 C = 16 k b / s C=16\,kb/s C=16kb/s
假设数据帧序列的比特数为 L L L,则数据帧的发送时延: t S = L / C , L ∈ [ 128 , 512 ] B y t e t_S=L/C,L∈[128,512]\,Byte tS=L/C,L∈[128,512]Byte
因为确认帧长度与发送的帧一样大 (和 L L L 一样大),且不能忽略应答帧的发送时延(和 t S t_S tS 一样大)
传播时延: t P = 270 m s t_P=270\,ms tP=270ms
我们知道,“帧序列的比特数 n n n” 和 “发送窗口的大小 W T W_T WT” 满足关系: W T ∈ [ 1 , 2 n − 1 ] W_T∈[1,2^{n}-1] WT∈[1,2n−1]
信道利用率: η = W T × t S 2 t S + 2 t P = 1 2 × W T × L / C L / C + t P = 1 2 × W T × L L + t P × C \Large η=\frac {W_T\times t_S}{2t_S+2t_P}=\frac {1}{2}\times \frac {W_T \times L/C}{ L/C+t_P}=\frac {1}{2}\times \frac {W_T \times L}{L+t_P\times C} η=2tS+2tPWT×tS=21×L/C+tPWT×L/C=21×L+tP×CWT×L
现在是,我们需要考虑到最极端的情况,则即什么样的 “帧序号 n n n 的编码数” 能满足 “无论何时都能够使得信道利用率最高”。
我们对 信道利用率 做一点改动: η = 1 2 × W T × L L + t P × C = 1 2 × W T 1 + t P × C L \Large η=\frac {1}{2}\times \frac {W_T \times L}{L+t_P\times C} = \frac {1}{2}\times \frac {W_T}{1+ \frac {t_P\times C}{L}} η=21×L+tP×CWT×L=21×1+LtP×CWT
从上述公式,不难看出,如果我们使得在分母 L L L 最小的时候,就能使得 信道利用率达到最高的难度 变得最难。
我们将 L = 128 × 8 b L=128\times8\,b L=128×8b 带入上述公式得: η = 1 2 × W T 1 + 270 m s × 16 k b / s 1024 b = W T 10.4375 \Large η= \frac {1}{2}\times \frac {W_T}{1+ \frac {270\,ms\times 16\,kb/s}{1024\,b}} =\frac {W_T}{10.4375} η=21×1+1024b270ms×16kb/sWT=10.4375WT
我们应该知道,在理论上无论使用 128B 还是 512B 都可以使 信道利用率 达到最大的 100%。只要 W T W_T WT 足够大。而这里我们要做的是,选择最小的 “帧序列的比特数 n n n” 都能够使得 信道利用率 达到最大,即 100 % 100\% 100%。
$ 故 η= \frac {2^{n}-1}{10.4375}>=1,解得:n>=4$
所以答案选 B。
四、补充说明
● 因为本文重点针对的是 “信道利用率” 的计算。
● 所以弱化了对 “停止 - 等待协议” 和 “回退 N 帧的 ARQ 协议” 的定义的讲解。
● 另外,还有一种 “选择 ARQ 协议”,考试中大题考得较少,就没写,但是理论还是要掌握。
via:
-
【计算机网络】数据链路层:停止 - 等待协议 ( 无差错情况 | 有差错情况 | 帧丢失 | 帧出错 | ACK 确认帧丢失 | ACK 确认帧延迟 | 信道利用率公式 | 信道利用率计算 )★_数据链路层采用停止等待协议,是为了解决该层在传输中的哪些问题?是通过什么样的 - 优快云 博客 韩曙亮于 2020-08-18 00:22:42 发布
https://blog.youkuaiyun.com/shulianghan/article/details/108065792 -
计算机网络(19)数据链路层:停止 - 等待协议、后退 N 帧协议、选择重传协议_停止等待协议,gsn-优快云 博客 李白于 2020-05-09 21:36:31 发布
https://baichao0817.blog.youkuaiyun.com/article/details/106012223 -
深入探讨 —— 信道利用率 [停止 - 等待协议、回退 N 帧的 ARQ 协议]-优快云 博客 一支王同学已于 2022-10-23 14:41:59 修改
https://blog.youkuaiyun.com/Wang_Dou_Dou_/article/details/123620115
数据链路层重传协议及信道利用率解析
2479

被折叠的 条评论
为什么被折叠?



