1、概述
链路 是指从一个节点到相邻结点的一段物理线路(有线或无线),中间没有其他交换结点
数据链路 是基于链路。当在⼀条链路上传送数据时,除需要链路本身,还需要⼀些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
不同类型的数据链路,所用的通信协议可能不同
- 广播信道:CSMA/CD协议
- 点对点信道:PPP协议
计算机中的⽹络适配器(俗称⽹卡)和其相应的软件驱动程序就实现了这些协议。⼀般的⽹络适配器都包含了物理层和数据链路层这两层的功能。
2、数据链路层的三个问题
2.1、封装成帧
帧的数据部分是网络层传递下来的数据包(IP数据包,Packet)

-
以太网V2的MAC帧

-
PPP帧

封装成帧 是指数据链路层给上层交付下来的协议数据单元PDU添加⼀个⾸部和⼀个尾部,使之成为帧。
帧的⾸部和尾部中包含有⼀些重要的控制信息,帧⾸部和尾部的作⽤之⼀就是帧定界,并不是每⼀种数据链路层协议的帧都包含有帧定界标志。
2.2、透明传输
透明传输是指数据链路层对上层交付下来的协议数据单元PDU没有任何限制,⾯向字节的物理链路使⽤字节填充的⽅法实现透明传输,⾯向⽐特的物理链路使⽤⽐特填充的⽅法实现透明传输。
2.3、差错检验
在帧尾部加上校验码,接收方通过校验算法,检查传输过程中有没有比特出错(0 变 1、1 变 0)。
产生原因:链路噪声、干扰、衰减,导致比特位出错

2.4、CRC循环冗余校验
数据链路层⼴泛使⽤漏检率极低的循环冗余校验检错技术。
收发双方预先约定生成多项式 G (X),发送方依据待发送数据与该多项式计算出冗余差错检测码并附加在数据后一同传输,接收方再利用同一生成多项式 G (X) 校验收到的数据和冗余码,判断传输过程是否产生误码。
- 发送方 CRC 操作
收发双方预先约定同一个生成多项式 G (X);
把待发送原始数据比特串后面,补上G (X) 最高次项个数的 0;
用模 2 除法(异或、无借位减法),让补 0 后的数据除以生成多项式对应的比特串;
得到的余数就是CRC 冗余码(位数固定,比 G (X) 位数少 1);
将原始数据 + 冗余码拼接在一起,组成完整帧发送出去。 - 接收方 CRC 操作
接收收到完整的数据 + CRC 冗余码比特串;
用同样生成多项式 G (X) 对应的比特串,对接收的整体比特串做模 2 除法;
若余数为 0:判定传输无差错,保留有效数据;
若余数不为 0:判定传输出现比特误码,直接丢弃该帧。
3、Ethernet V2标准
为了能够检测正在发送的帧是否产⽣了冲突,以太⽹的帧⾄少要64字节
3.1、Ethernet V2帧格式

⾸部:⽬标MAC + 源MAC + ⽹络类型
以太⽹帧:⾸部 + 数据 + FCS
数据的⻓度⾄少是:64 - 6 - 6 - 2 - 4 = 46字节
3.2、以太⽹MAC帧协议
接收⽅可能收到的⽆效MAC帧包括以下⼏种:MAC帧的⻓度不是整数个字节,通过MAC帧的FCS字段的值检测出帧有误码,MAC帧的⻓度不在64 ~ 1518字节之间。
接收⽅收到⽆效的MAC帧时,就简单将其丢弃,以太⽹的数据链路层没有重传机制
4、PPP协议
4.1、概述
是数据链路层(OSI 第二层)的标准协议,用于两台设备之间的点对点(P2P)全双工链路,可承载多种网络层协议(主要是 IP),兼具封装、透明传输、差错检测、链路管理、认证与参数协商能力。

帧检验序列字段:其值是使用循环冗余校验CRC计算出来的检错码。