数据链路层是 OSI 七层模型的第二层,位于物理层之上、网络层之下,核心作用是将物理层传输的原始比特流封装成帧,实现相邻节点(如两台直连的路由器、电脑与交换机)之间的可靠数据传输,同时处理物理层可能出现的错误(如比特差错),为上层网络层提供无差错的链路服务。
一、核心功能
数据链路层的所有机制均围绕以下五大核心功能展开,确保相邻节点间数据传输的 “可靠、高效、有序”:
1. 帧封装与解封装
这是数据链路层最基础的功能,解决 “如何界定数据边界” 的问题:
- 封装过程:接收网络层传来的 IP 数据报(或其他网络层协议数据单元),在其前后分别添加帧头(Header) 和帧尾(Trailer),形成 “帧”(数据链路层协议数据单元,PDU)。
- 帧头:包含源 MAC 地址(发送节点的物理地址)、目的 MAC 地址(接收节点的物理地址)、帧类型(如标识上层是 IP 协议还是 ARP 协议)。
- 帧尾:主要包含差错检测字段(如 FCS 校验码),用于检测传输中的比特错误。
- 解封装过程:接收端从物理层获取比特流,先通过帧头 / 帧尾识别帧的边界,验证帧尾的差错检测字段,若无误则去除帧头帧尾,将内部的 IP 数据报交给网络层。
2. 差错检测与纠正
物理层仅传输比特流,无法处理 “比特翻转”(如 0 变 1、1 变 0)等错误,数据链路层通过以下机制保障数据正确性:
- 差错检测:最常用的是循环冗余校验(CRC,Cyclic Redundancy Check),发送端根据帧的数据部分计算出 CRC 校验码并放入帧尾;接收端重新计算数据的 CRC,若与帧尾校验码不一致,则判定帧出错,直接丢弃(不通知发送端)。
- 差错纠正:比检测更复杂,需通过海明码(Hamming Code) 等编码方式,在数据中嵌入冗余信息,接收端可通过冗余信息直接恢复出错的比特(无需重传)。但因开销较大,仅用于卫星通信等误码率高的场景,主流局域网(如以太网)仅用 CRC 检测,出错后通过 “重传” 修复。
3. 流量控制
解决 “发送端速率过快,接收端来不及处理导致数据丢失” 的问题,核心是 “让发送端的速率匹配接收端的处理能力”:
- 最典型的机制是滑动窗口协议(如停止 - 等待协议、Go-Back-N 协议、选择重传协议):
- 接收端通过 “窗口大小” 告知发送端 “当前可接收的最大帧数量”;
- 发送端在窗口范围内连续发送帧,无需等待每帧的确认;
- 接收端处理完帧后,更新窗口大小并反馈给发送端,动态调整发送速率。
4. 链路管理
负责 “建立、维护、释放相邻节点间的数据链路”,是数据传输的前提,主要场景包括:
- 点对点链路(如拨号上网的 PPP 链路):通过 “链路建立” 协商双方的帧格式、校验方式等参数;传输结束后执行 “链路释放”,释放资源。
- 广播链路(如以太网):无需显式建立链路,但需通过 MAC 地址管理节点身份,确保数据定向传输。
数据链路层是 “相邻节点通信的桥梁”,其核心价值在于:
- 屏蔽物理层差异:无论物理层是双绞线、光纤还是无线信道,数据链路层均通过统一的帧格式,为上层提供一致的链路服务;
- 保障传输可靠性:通过差错检测、流量控制、重传机制,解决物理层的比特差错和速率不匹配问题;
- 管理共享介质:通过 MAC 协议避免多节点冲突,高效利用传输资源;
- 衔接上下层:向上为网络层提供 “无差错的帧传输服务”,向下将网络层数据封装成物理层可传输的比特流。
简言之,没有数据链路层,网络层的 IP 数据报就无法 “落地” 到具体的物理链路中,相邻节点间的通信也无法实现。
1650

被折叠的 条评论
为什么被折叠?



