一、流量控制
流量控制是指由接收方及时控制发送方发送数据的速率,使接收方来得及接受。
• 停止等待流量控制
• 滑动窗口流量控制
1、停止—等待流量控制
停止-等待流量控制的基本原理是发送方每发出一帧后,就要等待接收方的应答信号,收到应答信号后,发送方才能发送下一帧;接收方每接受一帧,就要返回一个应答信号,表示可以接受下一帧,若接受方不返回应答信号,则接收方必须一直等待。这种方式是流量控制中最简单的方式,传输效率很低。
2、滑动窗口流量控制
• 每次只允许发送一帧,滑动窗口流量控制允许一次发送多个帧,因此提高了传输效率。
• 发送窗口:滑动窗口流量控制的基本原理是在任意时刻,发送方都维持一组连续的允许发送的帧
的序号,称为发送窗口;
• 接收窗口:同时,按收方也维持一组连续的允许接收的帧的序号,称为接收窗口。
如图(a)所示,发送端的发送窗口大小为5,在发送开始时,允许发送帧序号为0~4的共5个帧。每发送一帧后,若未收到确认,发送窗口自动减1,如图(b)所示。若序号为0~4的帧都已经发送完毕,且未收到一个确认帧,则无法继续发送后续帧,如图(c)所示。而当发送端每收到一个确认帧之后,发送窗口就向前滑动一个帧的位置,图(d)给出了收到三个确认帧之后的发送窗口示意,此时可继续发送序号为5~7的3个帧。
接收窗口的大小与发送窗口无关,当接收窗口大小为1时,如图所示,收到一个数据帧后,将窗口向前移动一个位置,并发送确认帧。若收到的数据帧落在接收窗口之外,则一律丢弃该数据帧。注意到,当接收窗口大小为1时,可保证帧的有序接收。另外,需要注意的是,数据链路层的滑动窗口协议,窗口的大小在传输过程中是固定的。
滑动窗口流量机制可以在收到确认信息之前发送多个数据分组,提高了网络的吞吐量,解决了端到
端的通信流量控制问题。
3、可靠传输机制
• 〝可靠传输”是指数据链路层的发送端发送什么,接收端就接收什么。
• 数据链路层的可靠传输通常采用确认和重传两种机制来完成。
确认可以是每发送一帧就确认一次,也可以是一次累积确认多个帧,后一种情況可以把确认
捎带在一个回复帧中(称为捎带确认)。
重传可分为超时重传和自动重传请求ARQ两种方式。
• 超时重传是指发送方在发送某个帧后就启动一个计时器,在设定时间内如果没有得到发送的
帧的确认,就重新发送该帧,直到发送成功为止。
• ARQ通过接收方请求发送方重传出错的帧。ARQ通常分为三种,即停止-等待 (Stop-and-
Wait) ARQ、后退N帧(Go-Back-N) ARQ和选择重传 (Selective Repeat)ARQ。
• 停止-等待(Stop-and-Wait)协议:发送窗口尺寸和按收窗口的大小都等于1;
• 后退N帧GBN(Go-Back-N)协议:发送窗口大于1,接收窗口等于1;
• 选择重传SR (Selective Repeat) 协议:发送窗口和接收窗口的大小均大于1。
4、流量控制与可靠传输机制
在发送结点:
1)从主机取一个数据帧;
2)将数据帧送到数据链路层的发送缓存;
3)将发送缓存中的数据帧发送出去;
4)等待;
5)若收到由接收结点发过来的信息(此信息的格式与内容可由双方事先商定好),则从主机取一个新的数据帧,然后转到2)。
在接收结点:
1)等待;
2)若收到由发送结点发过来的数据帧,则将其放入数据链路层的接收缓存;
3)将接收缓存中的数据帧上交主机;
4)向发送结点发一信息,表示数据帧已经上交给主机;
5)转到1)。
1)发送端发送数据帧后,等待接收端的应答帧;
2)接收端收到数据帧后,通过 CRC 校验,如果无差错,回送一个确认帧 ACK ,否则,回送一个否认帧 NAK ;
3)发送端收到应答帧,如果是 ACK ,发送下一数据帧,如果是 NAK ,重发数据帧
1)正常情况
接收方在收到一个正确的数据帧后,即交付给主机B,同时向主机A发送一个确认帧ACK。当主机A收到确认帧后才能发送一个新的数据帧。
2)数据帧出错
当结点B检验出收到的数据帧有差错时,结点B就向主机A发送一个否认帧NAK,以表示主机A应当重传出现差错的那个数据帧。
3)数据帧丢失
由于某些原因,结点B收不到结点A发来的数据帧。若到了重传时间t仍收不到结点B的任何确认
帧,则结点A就重传前面所发送的帧。
4)确认帧丢失
主机A在重传时间内没有收到B发来的确认帧,则A就重传前面所发送的数据帧。通过上面的分析可知,在停止-等待协议中要解决两个问题,即死锁问题和重复帧问题。
5)死锁问题
发生帧丢失时结点B不会向结点A发送任何确认帧,如果结点A要等到收到结点B的确认信息后再发送下一个数据帧,那么就将永远等待下去。于是就出现了死锁现象。
解决死锁问题的方法是,在结点A发送完一个数据帧时,就启动一个超时计时器。若到了超时计时器所设置的重传时间t而仍收不到结点B的任何确认帧,则结点A就重传前面所发送的这一数据帧。若在重传时间内收到确认,则将超时计时器清零并停止。
6)重复帧问题
当出现确认帧丢失时,则超时重传将使主机 B 收到两个同样的数据帧。由于主机 B 无法识别重复帧,因而在主机 B 收到的数据中出现了重复帧差错。
解决重复帧的方法是,使每一个数据帧带上不同的发送序号。每发送一个新的数据帧就把它的发送序号加1。若结点 B 收到发送序号相同的数据帧,就表明出现了重复帧。这时应丢弃重复帧,因为已经收到过同样的数据帧并且也交给了主机 B 。但此时结点 B 还必须向 A 发送确认帧 ACK ,因为 B 已经知道 A 还没有收到上一次发过去的确认帧 ACK 。
与帧的编号有关的需要注意的几个问题如下:
任何一个编号系统的序号所占用的比特数一定是有限的。因此,经过一段时间后,发送序号就会重
复。
②序号占用的比特数越少,数据传输的额外开销就越小。
③对于停止等待协议,由于每发送一个数据帧就停止等待,因此用一个比特来编号就够了(一个比特可表示0和1两种不同的序号)。
④数据帧中的发送序号 N ( S )以0和1交替的方式出现在数据帧中。
⑤每发一个新的数据帧,发送序号就和上次发送的不一样。用这样的方法就可以使收方能够区分开新的数据帧和重传的数据帧了。
停止-等待协议ARQ的优点是比较简单;缺点是通信信道的利用率不高,也就是说,信道还远远没有被数据比特填满。
后退 N 帧
GBN 协议的基本思想是,发送方连续发出 N 个帧,接收方以流水线方式顺序接收各个帧,并进行差错检测。一旦某个帧有错,则接收方就丢弃该帧和它之后所收到的所有帧(不管这些帧是正确的还是错误的),对出错的帧不发送确认帧;发送方在出错帧的确认帧超时后,从出错的帧开始重传所有已发送但未被确认的帧。
后退 N 帧( GBN )协议基于滑动窗口流量机制,发送窗口尺寸大于1(若采用 n 比特对帧进行编号,则发送窗口尺寸 W ,必须满足1< W ,≤2"-1),接收窗口尺寸等于1。若发送窗口尺寸大于2"-1,会造成接收方无法分辨新帧和旧帧。因为接收窗口尺寸为1,所以接收方只能按序来接收数据帧。
选择重传(SR)协议
使用 GBN 协议时,如果线路很糟糕,就会回退重发大量数据帧而浪费带宽资源。解决的策略可以有以下几种:①允许接收并缓存坏帧或丢失帧后面的帧;②接收方只把出错的帧丢弃,其后续帧保存在缓存中,向发送方发送对出错帧的非确认帧( NAK );③如果落在窗口内并从未接收过,就接受此帧,并存储起来。直到比它序号小的所有帧都按次序已经交给了网络层后,此帧才提交给网络层。以上这些需要加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧,这也是选择重传思想。
选择重传协议避免了重复传送那些本来已经正确到达接收端的数据帧,提高了信道利用率,但
代价是在接收端要设置具有相当容量的缓存空间。
选择重传协议也是基于滑动窗口流量控制机制,它的发送窗口尺寸 W ,和接收窗口尺寸 W 都大于1,一次性可发送或接收多个帧。
5、信道利用率
信道利用率,也称为信道效率。
发送方在一个发送周期的时间内,有效地发送数据所需要的时间占整个发送周期的比率
例如,发送方从开始发送数据,到收到第一个确认帧为止,称为一个发送周期,设为T;
发送方在这个周期内共发送L比特的数据;
发送方的数据传输率为C;
则发送方用于发送有效数据的时间为L/C,信道的利用率为(L/C)/T
信道吞吐率=信道利用率*发送发的发送速率
二、数据链路层
1:发送周期(注意是收到第一个确认帧为止,不一定是发一个帧就确认一个!):发送方从开始发送数据,到收到第一个确认帧为止,称为一个发送周期,设为T;
2:发送多少比特(看清楚单位,往往这里需要换算)的数据:发送方在这个周期内共发送L比特的
数据;在T内最多可以发送多少个数据帧=发送窗口/滑动窗口的大小=2n
3:发送有效数据的时间(时间往往需要换算计算):