目录
数据链路
链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他 的交换结点。
数据链路层使用的信道类型
- 点对点信道
- 广播信道
数据链路层的四个基本问题
- 封装成帧:在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。
- 透明传输
- 差错检测
- 多路访问(使用广播信道的数据链路层需要考虑)
帧定界(考点√)
用控制字符进行帧定界的方法
解决 透明传输问题: 字节填充 (byte stuffing) / 字符填充 (character stuffing)。
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”
用特殊比特进行帧定界的方法
当数据是由二进制组成的比特块时,帧定界可以使用特殊的 比特串
帧开始和结束用 01111110
比特填充 (bit stuffing) 法 ( 用于发送前 / 接收后 )
发送方:报文中 5 个连续 1 ,插入0
接收方:收到 5 个连续 1 :后为 0 ,去掉;为 1 ,后为 0,则帧结束;否则出错
例如:
尤其是最后一位。
差错检测
在传输过程中可能会产生比特差错:1 可能会变成 0, 而 0 也可能变成 1
检错技术:
- 奇偶校验
- 循环冗余检验 CRC
奇偶校验
注意一下二维奇偶校验,列或者行1个数为奇数就填1,否则填0.最后右下角那位看最后一行
循环冗余检验(考点☆)
- 设某组数据M ,M作为待处理的被除数
- 事先选定好一个长度为 (n + 1) 位的除数 P
- 用2^n 乘 M (相当于在 M 后面添加 n 个 0)得到 (k + n) 位被除数 M’
- 用M’除以 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位 ,即 n 位。
- 将余数 R 作为冗余码拼接在数据 M 后面(或者说替代刚才的n 个 0 ),一起发送出去
举例:现在设一组数据M = 101001。 选择一个除数 P = x3+x2+1=1101。
解:p有四位,n=3。被除数是M*2^n=101001 000.
余数 R = 001
发送数据 =101001 001
最终发送数据共 (k + n) 位
接收端对收到的每一帧进行 CRC 检验
(1) 若得出的余数 R = 0 ,则判定这个帧没有差错,就 接受 (accept) 。
(2) 若余数 R ≠ 0,则判定这个帧有差错,就 丢弃 。
但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
只要经过严格的挑选,并使用位数足够多的除数 P ,那么出现检测不 到的差错的概率就很小很小
总结:
点对点协议 PPP
对于点对点的链路,目前使用得最广泛的数据链路层协议 是 点对点协议 PPP (Point-to-Point Protocol) 。
透明传输问题
当 PPP 用在 异步 传输时,就使用一种特殊的 字符填充 法 。
当 PPP 用在 同步 传输链路时,协议规定采用硬件来完 成 比特填充 (和 HDLC 的做法一样)。
PPP 协议的工作状态(注意一下状态图)