来源于湖科大教书匠
数据链路层
- 数据包只在数据链路层沿水平方向传送
- 链路:就是从一个节点到相邻节点的一段物理线路,而中间没有任何其他的交换节点。
- 数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
- 数据链路层以帧为单位传输和处理数据
封装成帧
差错检测
基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。
接收方主机通过检错码和检错算法就可判断帧在传输过程中是否出现了误码。
可靠传输
使用广播信道的数据链路层(共享式局域网)
编址问题
A向C发送数据,C如何知道这是发给它的,目的地址,源地址。
当B,C同时发送数据时,使用广播信道传输可能发生碰撞。图中为载波监听多点接入/碰撞检测。
无线局域网为载波监听多点接入/碰撞避免。
封装成帧
- 帧头和帧尾的作用之一就是***帧定界***。例如ppp的前后两个标志
- 并不是每一种数据链路层协议中都包含帧定界标志。例如以太网V2的MAC帧
- 前同步码使接收方的时钟同步
- 帧开始定界符表明其后面紧跟着的就是MAC帧
透明传输
指的是数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
- 对于面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
- 对于面向比特的物理链路使用比特填充的方法实现透明传输。
- 每出现一个帧界符就在其前面加一个转义字符
- ESC并不是指E.S.C这三个字母,其十进制值为27
- 在发送前用零比特填充法进行扫描:每5个连续的比特1后面就插入1个比特0,这样就确保帧定界在整个帧中的唯一性,也就可以实现透明传输
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。
考虑到查错控制等因素,每种数据链路层协议都规定了帧的数据部分的长度上限,即***最大传送单元MTU***。
差错检测
帧检验序列FCS字段其作用:让接收方的数据链路层检查帧在传输过程中是否产生了误码
奇偶校验
循环冗余校验CRC
- 检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
- 要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
- 循环冗余校验CRC有很好的漏检能力,虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。 <