数据链路层
数据链路层的主要问题
-
封装成帧
在网络层的IP数据报前面和后面分别添加上首部和尾部,就构成了一个帧。首部和尾部的一个重要作用就是帧定界。
每一种数据链路层协议都规定了所能传送的帧的数据部分长度上限-最大传送单元MTU。
-
透明传输
发送端的数据链路层在数据中出现控制字符的前面插入一个转义字符,而在接收端的数据链路层把数据送往网络层之前删除这个插入的转义字符。
-
差错检测
数据链路层目前广泛使用循环冗余检验CRC(Cyclic Redundancy Check)的检错技术。
CRC:
在要传送的数据M(k位比特)后添加n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。
收发双方事先约定长度为(n+1)的除数P.
发送方:
- 用二进制的模二运算(加减法不进位)计算M乘以2的n次方,即在M后面添加n个0.
- 得到的(k+n)位的数除以长度为(n+1)为的除数P,得到余数R(n位)
- 余数R就作为冗余码拼接在M后面发送出去。
接收方:
- 把收到的每一帧都除以除数P(模二运算)
- 检查余数,若余数R=0,则帧无差错。
在数据链路层,发送端冗余码的生成和接收端的检验都是通过硬件完成的。
-
对于通信质量良好的有线传输链路,数据链路层不使用确认和重传机制,由上层协议完成。
-
对于通信质量较差的无线传输链路,数据链路层使用确认和重传机制。