流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每个帧
1.发送窗口:发送方维持一组连续的允许发送的帧的序号。发送窗口的大小代表在还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。发送窗口用来对发送方进行流量控制。

2.接收窗口:接收方维持一组连续的允许接收的帧的序号。接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。帧的序号落入接收窗口之内,将该数据帧收下;帧的序号落在接收窗口之外,则将其丢弃。
3.只有接收窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能(只有发送方收到确认帧后才一定)向前滑动
4.接收窗口的大小为1时,可保证帧的有序接收
5.数据链路层与传输层
| 数据链路层 | 传输层 | |
|---|---|---|
| 流量控制 | 点对点(两个相邻接点之间) | 端到端(两主机之间) |
| 流量控制手段 | 接收方收不下就不回复确认 | 接收端给发送端一个窗口公告 |
| 窗口的大小 | 固定 | 不固定 |
6.可靠传输
通常使用确认和超时重传两种机制确认帧
(1)确认帧:是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收
(2)稍待确认:为了提高传输效率,将确认捎带在一个回复帧中
(3)超时重传:发送方在发送某个数据帧后就开启一个计时器,一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止
(4)自动重传请求ARQ:接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法。包括:停止-等待ARQ、后退N帧ARQ、选择重传ARQ。
发送窗口=接收窗口=1
每次只允许发送一帧,然后等待接收方确认,如果接收方不反馈应答信号,那么发送方必须一直等待,因此传输效率很低。

1.有差错情况
(1)数据帧丢失或检测到帧出错
每次发送帧时都要启动超时计时器,当计时器到期还未收到确认帧,那么再次发送相同的帧,直到该数据帧无错误地到达为止。

超时计时器:每次发送一个帧就启动一个计时器。超时计时器设置的重传时间>比帧传输的平均RTT
(2)数据帧正确而确认帧丢失
发送方超时未收到1号帧的确认,则重传1号帧,接收方再次收到1号帧时丢弃,并重传一个1号帧的确认。

(3)ACK迟到
超时后发送方重传。发送方收到第一个0号确认帧后即可发送新帧,收到第二个0号确认帧就丢弃。

2.帧缓冲区
为了超时重发和判定重复帧的需要。发送端在发送完数据帧时,必须在其发送缓存中保留此数据帧的副本,这样才能在出差错时进行重传。只有在收到对方发来的确认帧ACK时,方可清除此副本
3.信道利用率
信道利用率=
L
/
C
L
/
C
+
R
T
T
{L/C \over L/C+RTT}
L/C+RTTL/C
其中L为数据帧长度,C为数据传输速率,RTT等于两倍的单向传播时延
发送方无需在收到上一个帧的ACK后才能开始发送下一帧,而是可以连续发送帧。
(1)发送窗口≥1,接收窗口=1
(2)发送窗口大小需满足:1≤WT≤2n-1
其中n为帧序号的比特数,2n为窗口总数,发送窗口最大为2n-1,即最多可以有2n-1个帧已发送但未收到确认
(3)接收方对于 错误的帧或不是自己期待的帧 均丢弃,等待发送端超时重传,即接收方只允许按序接收,如果出现错误,发送方需重发最后一个正确接收的信息帧之后的所有未被确认的帧
(4)累计确认。ACKn表示已正确收到第n号帧及以前的所有帧,下一次期望收到第n+1号帧
(5)优点:连续发送数据帧而提高了信道的利用率;缺点:若信道的传输质量很差导致误码率较大时,后退N帧协议不一定优于停止-等待协议
(1)发送窗口>1,接收窗口>1
(2)接收窗口+发送窗口≤2n,一般发送窗口=接收窗口=窗口总数/2,WTmax=WRmax=2n-1
其中2n为窗口总数,WT表示发送窗口(transmission window ),WR表示接收窗口(receive window),n为帧序号的比特数。若帧序号有k种,则n=log2k
(3)接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧,即可以无序接收。对于窗口内的帧均可接收,但不采取累计确认,收一个确认一个。
(4)每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。一旦接收方怀疑帧出错,就会发一个否定帧NAK给发送方,要求发送方对NAK中指定的帧进行重传
(5)优点:提高了信道的利用率;缺点:需要开辟缓存空间用来存储数据
(6)发送方在接收ACK0后可以后移一格,使下界为1

发送方在收到下界ACK后才能后移至下界为待确认的帧,如3已被确认,在收到2确认后可后移两格使下界为4

(7)接收方正确接收0后即可后移一格使下界为1

直到所有帧皆被收到才可以将一批帧按序交付给上层,然后向前移动滑动窗口。如:接收方已正确收到6号帧并放入缓存,在正确收到窗口下界(5号)帧后即可后移两格,使下界为7

1.信道利用率
信道利用率=
L
×
发
送
窗
口
尺
寸
/
C
L
/
C
+
R
T
T
+
确
认
帧
的
传
输
时
延
{L×发送窗口尺寸/C \over L/C+RTT+确认帧的传输时延}
L/C+RTT+确认帧的传输时延L×发送窗口尺寸/C
(1)忽略确认帧的传输时间:信道利用率=
L
×
发
送
窗
口
尺
寸
/
C
L
/
C
+
R
T
T
{L×发送窗口尺寸/C \over L/C+RTT}
L/C+RTTL×发送窗口尺寸/C
(2)确认帧使用捎带确认:信道利用率=
L
×
发
送
窗
口
尺
寸
/
C
2
×
L
/
C
+
R
T
T
{L×发送窗口尺寸/C \over 2×L/C+RTT}
2×L/C+RTTL×发送窗口尺寸/C
其中:L表示一个数据帧的长度,C表示信道带宽或数据传输速率,RTT表示往返时延
2.数据传输速率
数据传输速率=
L
×
发
送
窗
口
尺
寸
L
/
C
+
R
T
T
+
确
认
帧
的
传
输
时
延
{L×发送窗口尺寸 \over L/C+RTT+确认帧的传输时延}
L/C+RTT+确认帧的传输时延L×发送窗口尺寸
3.信道吞吐率=信道利用率×发送方的发送速率。