目录
数据链路
链路
(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 协议的工作状态(注意一下状态图)