【计算机网络】流量控制与可靠传输
前言
流量控制与可靠传输在计算机网络中的数据链路层和传输层均有所体现,只是体现形式不一致,但是对应的协议相同相同,为此本章主要介绍滑动窗口协议、停止-等待协议、后退N帧协议和选择重传协议。
一、流量控制
流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。
- 数据链路层的流量控制
在数据链路层流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每个帧。例如,在面向帧的自动重传请求系统中,当待确认帧的数量增加时,有可能超出缓冲存储空间而造成过载。
流量控制的基本方法是由接收方控制发送方发送数据的速率,常见的方式有两种: 停止-等待协议和滑动窗口协议
1. 停止-等待流量控制基本原理
发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因而传输效率很低。
2. 滑动窗口流量控制基本原理
在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口﹔同时接收方也维持一组连续的允许接收帧的序号,称为接收窗口。发送窗口用来对发送方进行流量控制,而发送窗口的大小 W T W_T WT 代表在还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。同理,在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。在接收方,只有收到的数据帧的序号落入接收窗口内时,才允许将该数据帧收下。若接收到的数据帧落在接收窗口之外,则一律将其丢弃。
数据链路层与传输层的流量控制区别
数据链路层的流量控制是点对点
的,而传输层的流量控制是端到端
的。
数据链路层流量控制手段:接收方收不下就不回复确认。
传输层流量控制手段:接收端给发送端一个窗口公告。
二、可靠传输
可靠传输:发送端发啥,接收端收啥。
数据链路层的可靠传输通常使用确认
和超时重传
两种机制来完成。确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认。超时重传是指发送方在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。
三、停止-等待协议
- 为什么要有停止-等待协议?
除了比特出差错
,底层信道还会出现丢包问题。
eg: 数据链路层的帧错
丢包
:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失。(在不同阶段包代表的含义不同,如数据链路层是帧,网络层是分组或数据报)
- 研究停等协议的前提?
虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)。
因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。
“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
- 停等协议有几种应用情况?
-
无差错情况
-
有差错情况
有差错情况分下述几种:
1.数据帧丢失或检测到帧出错
2.ACK丢失
3.ACK迟到
停等协议——无差错情况
每发送1个数据帧就停止并等待,因此用1bit来编号就够。
停等协议——有差错情况
1.数据帧丢失或检测到帧出错
2.ACK丢失
3.ACK迟到
停等协议性能分析
信道利用率
发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
信道吞吐率=信道利用率*发送方的发送速率
四、后退N帧协议(GBN)
1.必须增加序号范围。
2.发送方需要缓存多个分组。
发送窗口:发送方维持一组连续的允许发送的帧的序号。
接收窗口:接收方维持一组连续的允许接收帧的序号。
GBN发送方必须响应的三件事
- 上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
- 收到了一个ACK
GBN协议中,对n号帧的确认采用累积确认
的方式,表明接收方已经收到 n号帧和它之前的全部帧。
- 超时事件
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。
GBN接收方要做的事
- 如果正确收到n号帧,并且按序,那么接收方为 n帧发送一个ACK,并将该帧中 的数据部分交付给上层。
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序 号)。
接收方只按顺序接收帧。不按序无情丢弃
GBN 的滑动窗口长度
n个比特对帧编号:指的的滑动窗口的编号采用 2 n 2^n 2n个编号(即序列号为 0 ~ 2 n − 1 2^n-1 2n−1)
GBN协议重点总结
1.累积确认(偶尔捎带确认)
2. 接收方只按顺序接收帧。不按序无情丢弃
3.确认序列号为最大的、按序到达的帧
4发送窗口最大为
2
n
−
1
2^n-1
2n−1。接收窗口大小为1
主机甲与主机乙之间使用后退N帧协议(GBN )传输数据,甲的发送窗口尺寸为1000,数据帧长为1000字节,信道带宽为100Mb/s,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲、乙之间的单向传播时延是50ms,则甲可以达到的最大平均数据传输率约为( )。
A. 10Mb/s B. 20Mb/s C. 80Mb/s D. 100Mb/s
五、选择重传协议(SR)
选择重传协议中的滑动窗口
SR发送方必须响应的三件事
- 上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
- 收到了一个ACK
如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
- 超时事件
每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
SR接收方要做的事
SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并
返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的
帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动
窗口。
如果收到了窗口序号外(小于窗口下界)的帧,就返回一个ACK。其他情况,就忽略该帧。
SR协议滑动窗口长度
发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
W T m a x = W R m a x = 2 ( n − 1 ) W_Tmax=W_Rmax=2^{(n−1)} WTmax=WRmax=2(n−1)
SR协议重点总结
- 对数据帧逐一确认。收一个确认一个
- 只重传出错帧
- 接收方有缓存
- W T m a x = W R m a x = 2 ( n − 1 ) W_Tmax=W_Rmax=2^{(n−1)} WTmax=WRmax=2(n−1)