《计算机网络》— 数据链路层
主要内容:
- 点对点信道和广播信道的特点和协议
- 数据链路层的三个基本问题:封装成帧、透明传输、差错检测
一、使用点对点信道的数据链路层
1. 帧的基本概念和组成
帧时数据链路层数据传输的基本单元,网络层交下来的数据构成帧后才在链路上发送,或者把接收的帧数据取出交给网络层,数据链路层并不需要考虑物理层是以何种方式传输数据,只需要将符合协议规定的数据帧交给物理层发送即可。
2. 三个基本问题
2.1. 封装成帧
封装成帧就是在IP数据报的前后分别添加首部和尾部,这样接收端就可以根据首部和尾部判断一个帧的开始和结束。当传输的数据是由ASCII码打印字符组成的文件数据时,就可以使用ASCII码控制字符中SOH表示开始、EOT表示结束,SOH和EOT称为帧定界符。
当数据传输出现错误时,帧定界符就可以发挥作用,当因为故障接收到不完整的帧或者并不是以SOH开始且以EOT结束的帧就会被丢弃,只有完整的帧才会被接收。
2.2. 透明传输
当传送的帧时由文本文件组成的帧时(所有字符都可由键盘输入),显然在数据中不会出现SOH和EOT,可见不管由键盘输入何种字符都可由帧传送出去,这样的传输就是透明传输。
但是当传送二进制文件(图片、视频等)时情况就不同了,二进制文件的二进制数据是不确定的,所以在数据中可能出现刚好与 SOH(00000001) 和 EOT(00000100) 相同的二进制代码,这样在接收数据时就会错误的把数据内容当中帧定界符导致数据传输不完整,这种传输显然不时透明传输。
对于非透明传输的解决办法,当在数据中发现存在帧定界符时,就在其前面加上一个转义字符ESC(00011011),若在数据中存在ESC则在其前面同样加上一个ESC,接收端接收数据后删除添加的ESC,这种方法称为字符填充或字节填充。
2.3. 差错检测
现实的通信链路都不会是理想的,在传输过程中可能会产生差错,例如1变为0或者0变为1,这种差错叫做比特差错。下面介绍一种检验比特差错的方法,使用循环冗余检验CRC的检错方法。
首先,在发送端对发送的数据单元M(假设M=101001)进行CRC运算得到冗余码(001),然后将冗余码拼接在M的后面(101001001),最后再将拼接好的数据发送出去。
在接收端接收到数据后,对每个接收到的帧都进行CRC检验,若经过检验后无差错就接收该帧,若出现差错就丢弃该帧。
3. 点对点协议 PPP
点对点协议PPP是当前使用最广泛的数据链路层协议,PPP协议就是计算机和ISP(移动、电信、联通等)进行通信时所使用的数据链路层协议。
PPP协议应满足的要求:
- 简单:不用提供可靠的数据传输服务,不需要纠错和流量控制。
- 封装成帧
- 透明传输
- 支持多种网络层协议(IP和IPX等)
- 支持多种类型的链路(例如PPPoE协议)
- 差错检测:丢去发生错误的帧
- 检测连接状态
- 最大传送单元:每个帧的数据部分的长度都必须满足一定长度
- 网络层地址协商
- 数据压缩协商
以上图片均来自《计算机网络》第七版