计算机网络(二)——数据链路层

ARQ(automatic repeat request,自动重传请求):停止等待协议和连续ARQ协议,滑动窗口;面向比特的链路控制规程HDLC;PPP协议。
链路层传输是数据单位是帧(frame),中继为网桥。

链路层的主要功能

1) 链路管理:建立-维持-释放数据链接。
2) 帧同步(帧定界):接收方能从收到的比特流中区分帧开始和结束的位置。
3) 差错控制
4) 流量控制
5) 将数据和控制信息分开
6) 透明传输
7) 寻址
数据链路层不同链路层协议的帧格式中的最大传送单元(MTU,maximum transfer unit,数据字段的最大长度)不同

停止等待(stop-and-wait)协议

有效的检错重传机制。信道不能保证所传数据不会出差错,且需要对数据的发送端进行流量控制。(发送端和结束端的滑动窗口大小都为1)。
在数据链路层的收发方各有一个发送缓存和接收缓存,有缓存的原因是:在计算机内部数据是以字节为单位并行传输的,而通信线路上数据是以比特流的形式串行传输的。
1)停止等待协议的实现过程
主机A向主机B发送一个数据帧(数据帧中加了CRC(cyclic redundancy check,循环冗余校验)),主机B用硬件检测数据帧是否有错,若没错则交付给B,同时向A发送一个ACK(acknowledge,确认帧),A收到ACK后才能发送下一个数据帧,这样就实现了收发方的流量控制;若B检测出数据帧有错,则B向A发送一个NAK(negative acknowledge,否认帧),表示A应当重传那个出错的数据帧(发送端保存了数据帧的副本,防止多次重传造成通信质量下降)。
A->B:丢失数据帧 -> 造成死锁,解决:设置超时定时器(timeout timer)。
B->A:丢失确认帧 -> 造成B收到重复帧,解决:每一个数据帧带上不同的发送序列。若B收到重复帧则丢弃。
对于停止等待协议,每发送一个数据帧就停止等待,因此只需要1 bit为数据帧编号。
2)CRC(cyclic redundancy check,循环冗余校验)
需要传输的数据M加上n bit的冗余码一起发送。
(1)发送方CRC的生成:被除数在M后面加n个0,变成k+n位,除以n+1位的除数P,得到的余数为R,则发送的数据为M+R。(设定n+1 位的除数P:110101,用多项式表示P则叫生成多项式:P(X)=X^5+ X^4+ X^2 +1。)
(2)接收方将M+R除以P,若能整除则表示传输没有差错。
注意:模2运算,加法时不进位,减法时不退位。模二运算是二进制运算的一种。
CRC只能保证接收的帧在传输过程中没有产生差错,但要做到可靠传输,还比必须加上确认和重传机制。CRC校验器能够自动检测到出错的帧,数据帧重传是自动进行的,这种差错检测机制叫ARQ(automatic repeat request,自动重传请求)
3)停止等待协议算法:
ACK0表示第1帧已经被接收到。

连续ARQ(automatic repeat request,自动重传请求)协议

1) 工作原理
发送完一个数据帧后,不是停下来等待确认帧,而是可以连续再发送若干个数据帧。如果这时收到了接收端发来的ACK,它还可以继续发送数据帧。由于减小了等待时间,整个系统的吞吐量就提高了(数据率提高)。(发送端窗口大于1,接收端窗口等于1,只用当接收端窗口滑动时,向发送端发送ACK信息,发送端窗口才能滑动。)
(1)接收端只按序接收数据帧;
(2)每发送完一个数据帧,都要设置该帧的超时计时器。如果在所设置的超时时间内未收到确认帧,就要重传相应的数据帧。如未收到1号帧,虽然已经发完了7号帧,但1号帧以后的帧全部需要重传。连续ARQ又叫go-back-N ARQ,意思是出现差错必须重传,且要向回走N个帧,然后开始重传。
2) 滑动窗口
发送窗口用来对发送端进行流量控制,而发送窗口的大小WT代表在还没有收到对方确认信息的情况下发送端最多可以发送多少个数据帧。
在连续ARQ协议中,需要对已经发送但还未被确认的数据帧的数目加以限制,防止未被确认的数据帧数目太多,一旦出错会造成重传的大量开销;同时需要对发送出去的大量数据帧进行编号,也要占用较多的比特数。
窗口大小:当用n个比特进行编号,接收端的窗口大小为1时,发送端的窗口大小约束为:WT <= 2^n-1。
3) 信道利用率
若数据帧的帧长取得很短,则控制信息在每一帧中占的比例就会很大,额外开销大,导致信道利用率下降;当帧长取得很长,数据帧在传输过程中出错的概率增大,重传次数增加,信道利用率也会下降。

选择重传ARQ协议

为了进一步提高信道利用率,可以只重传出错的数据帧或计时器超时的数据帧。但这时必须加大接收窗口,以便先接收下发送序列不连续但处在接收窗口中的那些数据帧。
发送窗口大小约束:WT <= 2^n-1;接收端窗口大小约束:WT <= 2^(n-1)。

面向比特的链路控制协议:HDLC(high-level data link control,高级数据链路控制)

HDLC适用于链路的两种基本配置:非平衡和平衡配置。
面向比特的链路控制协议:HDLC(high-level data link control,高级数据链路控制)

HDLC(high-level data link control,高级数据链路控制)协议格式

面向字节的链路控制协议:PPP(point-to-point,点对点)协议

所有帧长度都是整数个字节。虽然HDLC协议曾在历史上起过很大的作用,但现在链路层协议用得最多的是PPP协议。