链路层知识梳理(一)
一、链路层功能
(一)概述
链路层在网络层提供服务的基础上向网络层提供服务。其最基本的服务是将源自网络层来的数据可靠的传输到相邻节点的目标主机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
具体分为一下这么几点:
1.为网络层提供三种服务:无确认无连接服务、有确认无连接服务、有确认面向连接服务
2.链路管理:链路的建立、维持、释放(用于面向连接的服务)
3.组帧:帧同步、帧定界、透明传输
4.流量控制:点对点,只限制发送方
5.差错控制:帧错误、位错误
(二)名词解释
帧界定:确定帧的界限。
帧同步:分出帧的起始与终止。
透明传输:不管传输的是怎样的比特组合,都能在链路上传送。
二、组帧
(一)概念
发送方依据规则将网络层递交的分组封装成帧,帧要加首部和尾部(分组只是帧的数据部分,所以不需要加尾部)。出错时只重发出错的帧。
帧同步:接收方应该能从接收到的比特流中区分帧的起始和结束。
透明传输:不管传输的是怎样的比特组合,都能在链路上传送。
帧定界:确定帧的界限。
(二)组帧的四种方法
分别是字符记数法、字符(节)填充法、零比特填充法、违规编码法
1.字符记数法
帧首部使用一个计数字段(第一个字节,8位(bit)),来表明帧内字符数
缺点:会发生连环错误(鸡蛋装在同一个篮子里了,一错后续皆错)。
2.字符填充法
使用特定的字符加上一个转义字符(ESC)表示出帧的开始(SOH,start of header)和结尾(EOT,end of transmission)。
缺点:实现上比较复杂且不兼容。
3.零比特填充法
用01111110标记开始和结尾。
在发送端扫描整个信息字段,只要发现发现连续的5个1,就填入一个0。
接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续的5个1时,就删掉后面的一个0。(常用)
该方法保证了透明传输,即传输的比特流中可以传输任意组合,而不会引起对帧边界的错误判断。
4.违规编码法
用违规编码来表示帧的开始和结束,局域网IEEE802标准(常用)。
三、差错控制
(一)差错从何而来
总的的来说都是由于噪声影响的。
1.线路本身电器特征产生的随机噪声,信道固有的。
解决办法:提高信噪比、避免干扰
2.外界干扰产生的随机噪声,是产生差错的主要原因。
解决办法:利用编码技术来解决
(二)差错分类
1.位错误:1变成0,0变成1
2.帧错误:丢失、重复、失序
(三)解决措施
1.检错编码:奇偶校验码、CRC校验码
(1)奇偶校验码
奇校验:加上一位的校验位后,使得1 的总个数为奇数;偶校验则为偶数。
奇偶校验无法检测出双位错误。检错能力为50%。
(2)CRC校验码(循环冗余校验码)
对于m比特的帧,用生成器生成一个多项式G(x),通过其计算出FCS(r)附加在原比特后(m+r)。若m+r在接收方被G(x)除无余数,则无差错。如下图容易看懂。
最终要发的数据 = 要发的信息 + 帧检验序列(FCS)
计算冗余码:分为发送方与接收方
a.发送方
第一步:加0,生成多项式G(x)的阶为r,则加上r个0;
第二步:加0后除以多项式,余数作为冗余码(FCS)。
b.接收方
把收到的帧除以余数,检查得到的余数R。若R为0表示没有差错接收该帧,否则该帧出现差错,直接丢弃。
生成端及接收端的计算过程均由硬件实现,速度很快因此不会对数据传输产生延迟。
2.纠错编码:海明码
工作原理:牵一发而动全身
特点:发现双比特错误,纠正单比特错误。
计算方法:
第一步:确定校验位数r
第二步:确定校验码的数据的位置
注意从0开始
第三步:求出校验码的值
P1(0001)校验结尾是1的数据位,分别为D1、D2、D4、D5,异或的结果:
P1异或1异或0异或1异或0,最终结果等于0;
P2(0010)校验倒是第二位是1的数据位,为别是D1、D3、D4、D6,
P2、D1、D3、D4、D6做异或,结果等于0;
以此类推P3、P4的值均可计算。
最后得到的海明码:0010011101
第四步:检错并纠错
找出错误的位过程:
P1 异或 D1 异或 D2 异或 D4 异或 D5, 最终结果等于1;
P2 异或 D1 D3 D4 D6 ,结果0;
P3,P4以此类推,得到P1P2P3P4=0101=5(10),及第五位出错。
流量控制与可靠传输机制
(一)概述
因为较高的发送速度和较低的接收速度的不匹配会造成信息传递出错,因此流量控制也是数据链路层的一项重要任务。
链路层控制采取的手段:接收方收不下就不回复确认
传输层采取的手段:接收端给发送端一个窗口公告
(二)流量控制的方法
1.停止等待协议
原理:每发送完一个分组就停止发送等待对方确认,收到确认后再发送下一个分组。
特点:发送窗口大小等于1,接收窗口大小等于1。
典型情况:
(1)停等协议——无差错情况
(2)停等协议——数据丢失或帧出错
(3)停等协议——ACK丢失
(4)停等协议——ACK迟到
性能分析:信道利用率太低
信道利用率计算公式:( L / C ) / T
L:一个周期内发送的比特数
C:发送方数据传输率
T:发送周期,从发送方开始发送到接收到第一个确认帧的时间
2.后退N帧协议(GBN)
概念:发送方依次发送 N 个帧;接收方只对正确接收到的帧确认,未被确认的之后的所有帧都重发。第 N 个帧定时器超时未收到确认,之前的所有帧都重发。连续发送可提高信道利用率,但重传时需要把出错帧及之后的全部重传。在信道传输质量很差导致误码率较大时,不一定比停止等待协议更优。发送窗口 Wt 尺寸为:1 <= Wt <= (2^n)-1 ,n 为用 n 个比特对帧编号,至少预留一种编号以区别上次发帧的编号,编号有不同的为新帧。
特点:a.发送窗口大小大于1,接收大小等于1;b.采用累积确认的方式c.之按顺序接受,无序直接丢弃d.(接收方)确认序号最大的并且按序到达的帧
GBN发送方必须要干的三件事:
(1)上层的调用
如果发送窗口未满,则产生一个帧将其发送;若满,将数据返给上层,并通知上层窗口已满。实际中,也可能将数据缓冲。
(2)收到一个ACK后
采用累计确认的方式,若收到一个ACK序号为n,表明接收方已经收到n和n之前的帧。
若该ACK序号是窗口的下界那么就向前移动一格窗口。
(3)超时事件
若超时没有收到ACK,定时器到期后再次发送所有的已经发送过但是未确认的帧。
示意图:
3.选择重传协议(SR)
概念:只重传出现差错的帧、计时器超时的数据帧。加大接收窗口,收下发送序号不连续但仍处于接收窗口中的那些帧。所有缺失序号收到后一起交给主机。发送缓冲区对应一个计时器,超时重传;接收方怀疑帧出错,会发送一个否定帧 NAK 给发送方,要求发送方对 NAK 中指定的帧进行重传。为保证接收方向前移动窗口后,新窗口序号与旧窗口序号无重叠,应满足:接收窗口 + 发送窗口 <= (2^n);(小结:接收窗口 <= 2^(n-1);因为:接收窗口 = 发送窗口)。
特点:a.窗口内的帧来者不拒 b.接收方有缓存 c.只重传出错帧
SR发送方必须要干的三件事:
(1)上层的调用
如果发送窗口未满,则产生一个帧将其发送;若满,将数据返给上层,并通知上层窗口已满。实际中,也可能将数据缓冲。
(2)收到一个ACK后
若收到ACK,发送方将这个ACK序号的帧确定为已接收。若该序号是窗口下界则窗口向前移动到已经收到确认ACK的最小序号处。
(3)超时事件
若超时没有收到ACK,定时器到期后,一个超时事件只重发一个帧。
运行示例图:
------------恢复内容结束------------