Skip to content

(一)功能

1. 数据链路层的功能

1.1. 链路

img_31QvIDIVCh

  • 链路:一条无源的,点到点的物理线路,中间无任何交换节点;

  • 数据链路的传输单位是帧(Frame)

1.2. 组帧

img_ER9V2wkvwV

  • 封装:在一段数据的前后分别添加首部和尾部,就构成一个帧;

  • 首部和尾部的作用:确定数据帧的界限(定界)

  • MTU(Max Transmission Unit):最大传输单元,数据大于 MTU 长度时,就需要分片;

  • 控制字符 SOH,EOT 定界举例

    img_bIENVEqCc8

    • 透明传输问题:当数据中出现 SOH,EOT 字符时,可能造成误判,导致帧被分割或部分被丢弃;

    • 解决(字节填充法):

      • 发送端数据链路层在数据中出现 SOH,EOT 字符时,在前面插入一个转义字符 ESC (Hex: 1B);

      • 接收端在把数据发往网络层之前,删除对应的转义字符;

      • 若数据中本身含有转义字符,则在前面再加一个,删除时,对于连续的两个转义字符只删一个

    • 解决(零填充法)

      • 对于一些特殊的控制字段码,可以通过在数据中连续若干个 1 之后填一个 0 来避免出现重复;

      • 例:控制字段为 7E = 0111 1110

        • 注意到中间有 6 个连续的 1,则在数据中每连续 5 个 1 后插入 1 个 0 就可以避免重复

1.3. 差错控制

  • 循环冗余检验 CRC

    • 冗余码

      • 在发送端先将数据分组,假设每组数据长度为 k,即 k 个 bit;

      • 在每组数据的后面,添加 n 位的冗余码,作为最终发送的 k+n 位数据;

      • 冗余码的计算

        • 先将原数据 M 左移n 位,得到 M0=2n+M

        • 通信双方事先约定好一个 n+1 位的操作数 P,**在模 2 除法意义下,**计算 M0modP=RR 是一个 n 位二进制;

        • R 即是冗余码,也称帧检验序列(FCS),最终发送的数据 M=2n×M+R

        • 模 2 除法(⭐):和普通整数除法相似,但是用异或代替减法,没有进位退位运算

          • 例:101001000 / 1101 = 110101,余 001

          • 注意不是普通整数除法!

      • 例:k=6M=(101001)2n=3P=(1101)2,得到 R=(001)2

    • 接收端检验:若收到的数据 M 模 2 除法意义下,MmodR=0 则合法,否则不合法,应丢弃;

    • 可以做到无差错接收:通过 CRC 检验的数据帧传输无错的概率非常接近 1

  • 汉明码:是一个错误校验码集合,可以进行 1 位纠错