为讨论问题方便,设发送方为 A,接收方为 B。
【注】对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就够了,序号有 0 和 1。对确认帧也是同样的道理。
信道利用率:
U = T D T + R T T + T A \begin{equation} U=\frac{T_D}{T+RTT+T_A} \end{equation} U=T+RTT+TATD
因为确认分组长度远小于数据分组长度: T A < < T D T_A<
U = T D T + R T T \begin{equation} U=\frac{T_D}{T+RTT} \end{equation} U=T+RTTTD
【注】设时间 T T T内发送 L L L比特数据,数据传输率为 C C C,则:
信道利用率 = L C T 信道利用率=\frac{\frac{L}{C}}{T} 信道利用率=TCL
信道吞吐率 = 信道利用率 × 发送方的发送速率 信道吞吐率=信道利用率 \times 发送方的发送速率 信道吞吐率=信道利用率×发送方的发送速率
【例 1】主机甲采用停-等协议向主机乙发送数据,数据传输速率是 3kbps,单向传播延时是 200ms,忽略确认帧的传输延时。当信道利用率等于 40% 时,数据帧的长度为(D)。
A. 240 比特
B. 400 比特
C. 480 比特
D. 800 比特
【解】设数据帧长度为 x b x b xb,代入数据得:
信道利用率 = 数据帧的发送时延 数据帧的发送时延 + 单向传播时延 × 2 40 % = x b 3 k b / s x b 3 k b / s + 200 m s × 2 \begin{align*} 信道利用率 &= \frac{数据帧的发送时延}{数据帧的发送时延+单向传播时延 \times 2} \\ 40\% &= \frac{\frac{x b}{3kb/s}}{\frac{x b}{3kb/s} + 200ms \times 2} \end{align*} 信道利用率40%=数据帧的发送时延+单向传播时延×2数据帧的发送时延=3kb/sxb+200ms×23kb/sxb
解得 x = 800 b x=800b x=800b
发送窗口:发送方需要维护一个发送窗口 W T W_T WT,在未收到接收方确认分组的情况下,发送方可将序号落入 W T W_T WT内的所有数据分组连续发送出去。采用 n 个比特给分组编序号,则 W T W_T WT的取值范围是 1 < W T ≤ 2 n − 1 1
【注】若 W T > 2 n − 1 W_T>2^n-1 WT>2n−1,则接收方无法分辨新旧数据分组。
接收窗口:接收方需要维护一个接收窗口 W R W_R WR,只有正确到达接收方(无误码)且序号落入 W R W_R WR内的数据分组才被接收方接收。 W R W_R WR的取值只能是 1。
为讨论问题方便,设发送方为 A,接收方为 B,假设采用 3 个比特给分组编序号,则 W T W_T WT的取值范围是 2~7,这里取 W T = 5 W_T=5 WT=5。
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | √ | ||||||
发送方 A 已发送 | |||||||||||
接收方 B 的 W R W_R WR | √ | ||||||||||
接收方 B 已确认 |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | √ | ||||||
发送方 A 已发送 | √ | ||||||||||
接收方 B 的 W R W_R WR | √ | ||||||||||
接收方 B 已确认 |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | √ | ||||||
发送方 A 已发送 | √ | ||||||||||
接收方 B 的 W R W_R WR | √ | ||||||||||
接收方 B 已确认 | √ |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | √ | ||||||
发送方 A 已发送 | √ | √ | √ | √ | √ | ||||||
接收方 B 的 W R W_R WR | √ | ||||||||||
接收方 B 已确认 | √ | √ | √ | √ | √ |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | √ | ||||||
发送方 A 已发送 | √ | √ | √ | √ | √ | ||||||
接收方 B 的 W R W_R WR | √ | ||||||||||
接收方 B 已确认 | √ |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | √ | ||||||
发送方 A 已发送 | |||||||||||
接收方 B 的 W R W_R WR | √ | ||||||||||
接收方 B 已确认 |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | √ | ||||||
发送方 A 已发送 | √ | √ | √ | √ | √ | ||||||
接收方 B 的 W R W_R WR | √ | ||||||||||
接收方 B 已确认 | √ | √ |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | √ | ||||||
发送方 A 已发送 | √ | √ | √ | √ | √ | √ | √ | ||||
接收方 B 的 W R W_R WR | √ | ||||||||||
接收方 B 已确认 | √ | √ | √ | √ | √ | √ | √ |
【例 1】数据链路层使用后退 N 帧(GBN)协议,发送方已经发送了编号 0~7 的帧。当计时器超时时,若发送方只收到了 0、2、3 号帧的确认,则发送方需要重发的帧数是(C)。
A. 2
B. 3
C. 4
D. 5
【例 2】主机甲与主机乙之间使用后退 N 帧(GBN)协议传输数据,甲的发送窗口尺寸为 1000,数据帧长为 1000 字节,信道带宽为 100Mbps,乙每收到一个数据帧就立即利用一个短帧(忽略其传输延迟)进行确认,若甲乙之间的单向传播延迟是 50ms,则甲可以达到的最大平均数据传输速率约为(C)。
【解】
最大平均数据传输速率 = 可发送的数据量 数据帧的发送时延 + 单向传播时延 × 2 = 1000 × 8 × 1000 1000 100 × 1 0 6 + 50 × 1 0 − 6 × 2 = 80 M b p s \begin{align*} 最大平均数据传输速率 &= \frac{可发送的数据量}{数据帧的发送时延+单向传播时延 \times 2} \\ &= \frac{1000 \times 8 \times 1000}{\frac{1000}{100 \times 10^{6}} + 50 \times 10^{-6} \times 2} \\ &= 80Mbps \end{align*} 最大平均数据传输速率=数据帧的发送时延+单向传播时延×2可发送的数据量=100×1061000+50×10−6×21000×8×1000=80Mbps
为了使发送方仅重传出现差错的数据分组,接收方不再采用累积确认,而需要对每一个正确接收的数据分组进行逐一确认。用 n ( n > 1 ) n(n>1) n(n>1)个比特给分组编号:
{ 1 < W R ≤ W T W T + W R ≤ 2 n \left\{ \begin{aligned} %\nonumber 1
因此有: 1 < W R ≤ 2 n − 1 1
当 W R W_R WR取最大值 2 n − 1 2^{n-1} 2n−1时, W R W_R WR也取最大值 2 n − 1 2^{n-1} 2n−1
【注】为何如此取值?
- 1 < W R ≤ W T 1
1<WR≤WT : W R W_R WR超过 W T W_T WT没有意义。- W T + W R ≤ 2 n W_T+W_R≤2^{n} WT+WR≤2n:确保接收窗口向前滑动后,落入接收窗口内的新序号与之前的旧序号没有重叠,避免无法分辨新旧数据分组。
现假设采用 3 个比特给分组编序号,则序号范围是 [ 0 , 2 3 − 1 ] [0,2^3-1] [0,23−1],发送窗口取最大值 W T = 2 3 − 1 = 2 2 W_T=2^{3-1}=2^2 WT=23−1=22,接收窗口取最大值 W R = 2 3 − 1 = 2 2 W_R=2^{3-1}=2^2 WR=23−1=22。
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | |||||||
发送方 A 已发送 | |||||||||||
接收方 B 的 W R W_R WR | √ | √ | √ | √ | |||||||
接收方 B 已确认 |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | |||||||
发送方 A 已发送 | √ | √ | √ | √ | |||||||
接收方 B 的 W R W_R WR | √ | √ | √ | √ | |||||||
接收方 B 已确认 |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | |||||||
发送方 A 已发送 | √ | √ | √ | √ | |||||||
接收方 B 的 W R W_R WR | √ | √ | √ | √ | |||||||
接收方 B 已确认 | √ | √ |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | |||||||
发送方 A 已发送 | √ | √ | √ | √ | |||||||
接收方 B 的 W R W_R WR | √ | √ | √ | √ | |||||||
接收方 B 已确认 | √ | √ | √ | √ |
数据序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|
发送方 A 的 W T W_T WT | √ | √ | √ | √ | |||||||
发送方 A 已发送 | √ | √ | √ | √ | |||||||
接收方 B 的 W R W_R WR | √ | √ | √ | √ | |||||||
接收方 B 已确认 | √ | √ | √ | √ |
【例 1】数据链路层采用选择重传协议(SR)传输数据,发送方已发送了 0~3 号数据帧,现已收到 1 号帧的确认,而 0、2 号帧依次超时,则此时需要重传的帧数是(B)。
A. 1
B. 2
C. 3
D. 4
协议 | 发送窗口 W T W_T WT | 接收窗口 W R W_R WR |
---|---|---|
停止-等待协议 | 1 1 1 | 1 1 1 |
后退 N 帧协议 | 1 < W T ≤ 2 n − 1 1 |
1 1 1 |
选择重传协议 | 1 < W R ≤ W T , W T + W R ≤ 2 n 1 |
1 < W R ≤ 2 n − 1 1 |