数据链路层的作用
- 封装成帧
- 透明传输
- 差错监测
1. 封装成帧
-
帧是数据链路层的最小传输单位
-
发送端在一段数据开头和末尾加上特定字段,形成帧后传输
-
接收端根据前后特定标记识别出帧
帧的结构
-
如上图所示,数据链路层将把IP层传输过来的IP数据包加上首部和尾部,形成一个帧结构。之后它将帧传送到物理层,形成类似[010000011...]的比特流。
-
SOH是帧头部的特定比特流,EOT是帧尾部的特定比特流。
如果IP数据包中也恰好也有SOH、EOT怎么办?
答:那就需要用到差错检测了。
2. 透明传输
-
即使控制字符在帧数据中,但是要当做不存在去处理。
转译字符
- 当IP数据报中也出现了特殊的比特流,比如EOT,我们需要在EOT的前面加上一个转译字符ESC,这样就不会把EOT当成结束的特殊字符而导致传输错误。
- 当IP数据报里面出现了转义字符ESC,只需要在ESC前面再加一个ESC即可。
3. 差错检测
- 物理层只负责传输比特流,但可能由于闪电,宇宙射线等其他原因导致比特流发生错误。
- 链路层则负责进行差错检测。
- 常用的差错检测方法有:奇偶校验码,CRC。
3.1 奇偶校验码
通过对前面数据所有位的相加,判断最后相加结果的奇偶来添加一位检验位,如果相加结果是奇数,则添加1,否则添加0。

- 局限性:如果出现偶数位的差错,则检测不到错误。
3.2 循环冗余校验码CRC
- 一种根据传输或保存的数据而产生【固定位数校验码】的方法
- 【检测】数据传输或保存后可能出现的错误
- 生成的数字计算出来并【附加到数据后面】
3.2.1 模2除法
- 模2除法是二进制下的除法
-
与算术除法类似,但除法不借位,实际上是“异或”操作
模“2”除法
3.2.2 CRC的生成步骤
-
选定一个用于校验的多项式【G(x)】,并在尾部添加【r】个0,【r】是二进制多项式的最高阶数。
第一步
-
将添加r个0后的数据,使用【模2除法】除以【多项式的位串】
第二步
-
【得到的余数填】充在【原数据r个0的位置】得到可校验的位串
第二步
3.3接收端进行检测
-
接收端用接收到的数据除G(x)的位串,如果余数为0,则没有问题。
检测
4 以太网协议

MAC地址
- MAC地址又称为物理地址,每一台设备(电脑、手机)全世界都只有唯一的一个MAC地址,可以理解为设备的身份证。
- MAC地址有48位,使用十六进制表示。(30-B4-9E-ED-85-CA)
以太网协议
- 以太网协议是一种广泛使用的局域网技术,也是一种应用于数据链路层的协议
- 使用以太网可以完成【相邻设备】的数据帧传输
数据格式

路由转发过程
-
路由器通过路由表来寻找MAC地址对应的接口
数据转发
-
当路由表中没有对应MAC地址,他会向所有接口广播,广播后会收到回应并记录地址
路由表找不到地址
跨设备传输数据
-
由于E只知道A、D、F的MAC地址,所以如果A想传输数据给B、C则需要跨越多个路由器,这时就需要用到网络层。
跨设备传输
网友评论