第三章 数据链路层

思维导图:

一、 数据链路层概述

保证数据传输的有效、可靠

  •   差错检测和控制
  •   流量控制
    •    基于速率
    •    基于反馈

帧(frame) = 帧头(head)+ 载荷 (payload field)+  帧尾(Trailer)

  •   head中有物理地址,trailer中有校验

成帧

  •   将原始的位流分散到离散的帧中  

 

四种成帧的方法

1.  字符统计法

  •   在每个帧中第一个字段,标识长度。缺点:一旦出错,无法恢复

2.  字节填充的标志字节法

  •   考虑了重新同步问题,每一帧采用一个特殊字节做帧界
  •   标志/标记字节(flag byte)
  •   传输数据中有特殊字节时,可以在前面加上转义符

3.  比特填充的标志比特法

  •   位填充法(零比特填充法/透明传输)
  •   以01111110作为帧界,如果数据中出现该子段,在第五个1后面加上一个0即可

4.  物理层编码违例法

  •   使用冗余信号,作为帧界
  •   如:4B/5B编码,32个模式只用了16个,剩下的作帧界

 

 二 、差错处理概述

错误类型

  •   单个错误
  •   突发错误

处理类型

  •   纠错:能够恢复正确,主要用于无限网络
  •   检错:仅仅检测出错误,不恢复,通常伴随重传,主要用于以太网

码字

  •   包含数据位和校验位的n位单元(模式)

海明距离

  •   两个码字之间不同位的数目,可用异或计算
  •   全部码字海明距离,取最小值
  •   海明距离为d+1的编码能检测出d位差错,如奇偶校验码,海明距离为2,可检测1位数字
  •   海明距离为2d+1的编码,能纠正d位差错。如:海明距离为5,可纠正2位的数字
    •   接受方与合法码字校验,取海明距离最小的那个合法码字

 

 三、纠一位错的海明码

纠一位错需要的冗余位跟数据位的关系

    

从而得到:

    

其中,r:冗余位,m:传输数据数目

 

校验位:凡是编号为2的乘幂的位

  • 校验位:1、2、4、8、16、32
  • 数据位:3、5、6、7、9、10、11

校验位可以设置,依据为包括自身在内的一些位的集合的奇偶值

  •  将某一位数据位的编号展开成2的乘幂的和,那么每一项所对应的位即为该数据位的校验位(收方使用),反过来,校验位的校验集合也包括这个数据位
  •  如:11 = 1 + 2 +8 ,29 = 1+ 4 + 8 +16
  •  校验位1的校验集合为所有奇数位;校验位为2的校验集合:2、3、6、7、10、11

 

具体流程

  •   发送方:根据校验集合填充校验位;数据直接填入数据位
  •   接受方:根据校验集合判定校验位是否出错,出错的位编号累加到计数器中。计数器为0,就没出错,否则相应的位数出错。

  

 可以用其解决一些突发性错误

  •   如,在k行,m+r列,按照列发送数据。纠正的突发性错误的个数小于等于发送矩阵的行数k
  •  

 

 四、检错码

常见的检错码

  • 奇偶校验和
    •   奇偶取值等同于对数据位进行模2和运算
  • 互联网校验和
    •   校验和:进行模2加运算
    •        追加到报文尾部
    •        16位互联网校验和
  • 循环冗余校验和

 

循环冗余检错码CRC

  •   工作原理:K位的帧 = K-1 次的多项式
  •   如1011001,(6阶7项多项式)
  •   生成多项式:G(x),G(x)为r阶
  •   m位帧的多项式:m > r , M(x) > G(x)

发送方:发送的码字就是被除数减去模2除法的余数

    

发送方:判定余数是否为零,为零就无错误

    

模2运算,等同于异或运算

生成多项式国际标准,通常采用CRC32标准:

    

 

 五、基本数据链路协议

协议一(无限制的单工协议)

  • 数据单项传递
  • 收发双方的网络层都处于就绪状态(随时待命)
  • 处理的时间可以忽略不记(瞬间完成)
  • 可用的缓存空间无穷大(无限空间)
  • 信道不损坏、不丢帧(完美通道)

协议二(半双工)

  • 取消接受方无限量允许发送
    • 接受方能够接收,就向发送方发送哑帧

协议三(肯定确定重传)PAR(Positive Acknowledgement with Retransmission)

也可叫做自动重传请求,ARQ(Automatic Repeat ReQuest)

  • 取消完美信道——有噪声
    • 接收方采用对正确帧的确认
    • 发送方启动一个定时器,过时就重传
    • 每个帧具有一个独一无二的序号,可以用来重排、重组和防止重复接收

      

以下途径可提高效率:

  • 使用全双工(双方既可以是发送方,又是接收方)
  • 捎带确定——确认帧搭上外发的数据帧,启动一个捎带确认的定时器
  • 批发数据,也叫管道化的数据

六、滑动窗口协议 ——协议四

发送窗口:已经发送,未被确认

接收窗口:期待被接收的帧的序列号

  • 发送窗口在规定时间内,没收到确认,导致重复发送,可以工作,但是浪费信道
  • 协议四,有了一个假设:忽略接收方处理到达帧的时间,RTT(Round Trip Time)来回时间,发送方,发出帧后,等待确定的这段时间,被阻塞

提高带宽的利用率——批量发送

  • 信道容量:一帧从发出到目的期间,信道上能够容纳的帧数量
  • 带宽延迟积:B*D
  • 窗口值:W = 2*BD + 1,实际情况W比计算出来的值小

出错处理策略

  •   丢弃出错帧和后续帧——协议五
  •   重传出错的帧——协议六

小结

七、回退n帧——协议五

适合出错率较少的高速信道

  • 有一个隐含的接收窗口
  • 定义序列号seq的取值范围和滑动窗口W
  • 发送方连续发送至发送窗口满
  • 接收窗口为1,对出错帧不确认(引发超时)
  • 发送方超时重传,从未被确认帧开始

发送方和接收方

 注意:

  • 采用统计确认,发送方一直保存着未被确认的帧
  • 滑动窗口长度(发送窗口):  W <= MAX_SEQ,防止确认帧的情况混淆

 

八、 选择性重传——协议六

工作原理

  •  

否定确认NAK:接收方发送帧要求重传出错帧

 

 回退n帧和选择性重传的比较

窗口选择

  •   发送窗口: W = (MAX_SEQ + 1) / 2
  •   发送窗口通常小于接收窗口

 

 

 三个协议窗口大小比较

 

posted @ 2019-03-29 13:01  Zhao_Xu_Jie  阅读(708)  评论(0编辑  收藏  举报