zoukankan      html  css  js  c++  java
  • 第三章 数据链路层

    思维导图:

    一、 数据链路层概述

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

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

    帧(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
    •   发送窗口通常小于接收窗口

     三个协议窗口大小比较

  • 相关阅读:
    (一)IOC 容器:【2】@ComponentScan 自动扫描组件&指定扫描规则
    (一)IOC 容器:【11】Aware 注入Spring底层组件
    (一)IOC 容器:【10】@Autowired 自动装配
    (一)IOC 容器:【3】@Scope 设置组件作用域
    (一)IOC 容器:【8】Bean组件的生命周期
    每日日报7月13日
    每日日报7月12日
    每日日报7月11日
    Prism中的WeakEventHandlerManager
    博客开通标记
  • 原文地址:https://www.cnblogs.com/zxj-262410/p/10620604.html
Copyright © 2011-2022 走看看