一、课程背景与网络体系回顾
在网络体系结构(OSI/Internet Stack)中,数据链路层位于物理层之上、网络层之下。 它主要负责在相邻节点间可靠地传输帧(frames),即在同一局域网或点对点链路上实现数据交付。
回顾前置知识
- 应用层(L7):HTTP、DNS、SMTP 等应用协议。
- 传输层(L4):TCP(可靠)、UDP(不可靠)。
- 网络层(L3):IP、路由(BGP、OSPF 等)。
- 链路层(L2):以太网、Wi-Fi(802.11)、PPP 等。
- 物理层(L1):比特流与信号传输(铜线、光纤、射频)。
数据链路层的职责是将物理层提供的不可靠比特流封装成逻辑上可靠的帧,为上层网络层提供“无差错”的数据传输。
二、数据链路层的主要功能
| 功能 | 说明 |
|---|---|
| Framing(成帧) | 将网络层的 IP 数据报封装成帧,加入首部和尾部(含地址和错误校验)。 |
| Link Access(介质访问控制) | 定义节点如何共享介质,即 MAC(Medium Access Control)协议。 |
| Reliable Delivery(可靠传输) | 在错误率高的链路(如无线)上重传或确认。 |
| Error Detection & Correction(差错检测与纠正) | 通过校验和或 CRC 发现并可能纠正比特错误。 |
| Encoding(编码) | 将 0/1 转换为物理信号形式(电压、光强或无线电幅度)。 |
三、数据链路层与物理设备
链路类型
-
点对点(Point-to-Point)
- 典型场景:主机与交换机之间的以太网线缆。
- 仅两方通信,无需碰撞检测。
- 例:光纤专线、拨号链路。
-
广播型(Broadcast)
- 多个节点共享同一物理介质。
- 例:早期以太网总线结构、无线 LAN(802.11)。
- 可能发生碰撞(collision)。
无线信道本质上是共享的广播介质,因此链路访问控制在 Wi-Fi 中尤为重要。
四、介质访问控制(MAC)与多路访问算法
共享信道需要解决的问题:多个节点不能同时发送,否则会碰撞。
三类典型算法
| 类别 | 思想 | 优点 | 缺点 |
|---|---|---|---|
| 信道划分(Channel Partitioning) | 将信道划分为固定的时间、频率或码片段(如 TDM/FDM/CDMA)。 | 简单公平 | 不灵活,利用率低。 |
| 轮流访问(Taking Turns) | 节点轮流发送(如 Token Ring)。 | 保证公平性 | 令牌丢失或节点故障需恢复机制。 |
| 随机访问(Random Access) | 所有节点竞争发送,若冲突则随机退避重传。 | 高利用率 | 需要碰撞检测与退避算法。 |
现代以太网采用第三种方式:随机接入(CSMA/CD)。
五、以太网(Ethernet)与 CSMA/CD 协议
一、基本原理
CSMA/CD:Carrier Sense Multiple Access with Collision Detection 即“载波监听多路访问 / 碰撞检测”。
三个关键思想
- Carrier Sense(载波监听):发送前先听信道是否空闲。
- Collision Detection(碰撞检测):若检测到信号冲突,立即中止并发送“Jam 信号”。
- Random Backoff(随机退避):等待随机时间后重新尝试。
类比:就像多人会议发言——“听别人说完再说”,若同时开口则暂停并随机等待。
二、时延与帧长限制
由于信号传播需要时间 ( d_{prop} ),两个节点可能“几乎同时”认为信道空闲而发送,从而产生碰撞。
因此:
-
节点必须持续发送至少 2d 的时间以检测碰撞;
-
10 Mbps 以太网规定:
- 最大线缆长度:2500 m
- 最小帧长:512 bit(64 B)
若帧太短,则发送完后还没检测到碰撞,可能误认为成功发送。
三、二进制指数退避(Binary Exponential Backoff)
- 第 m 次碰撞后,随机选择等待时隙 ( K \in [0, 2^m - 1] )。
- 等待时间 ( = K × 512 bit times )。
- 若信道仍忙则继续等待至空闲。
伪代码:
if collision detected:
m += 1
K = random(0, 2^m - 1)
wait(K * 512 bit times)
retry()
四、协议效率分析
定义: 效率(Efficiency) = 有效传输时间 ÷ 总信道时间 ≈ 1 / (1 + 5 × d_prop / d_trans)
- 当传播时延 d_prop → 0 时,效率趋近于 1。
- 当帧传输时间 d_trans 远大于传播时延时,效率同样较高。
- 如果帧过短或链路过长,都会导致效率下降。
五、从共享以太网到交换以太网
传统广播式以太网
- 所有主机共享同一同轴电缆。
- 每个数据包广播给所有节点。
现代交换式以太网
-
每台主机独享与交换机的点对点链路。
-
交换机使用:
- 自学习(Self-Learning):自动构建 MAC 地址表。
- 生成树协议(STP):避免环路。
-
无需 CSMA/CD,因为不存在共享介质。
结果:无碰撞通信 + 并行传输 + 更高带宽利用率。
六、以太网帧结构(Ethernet Frame Format)
| 字段 | 大小 | 说明 |
|---|---|---|
| Preamble | 7 B + 1 B | 时钟同步,最后一字节表示帧起始。 |
| Destination MAC | 6 B | 目标网卡地址。 |
| Source MAC | 6 B | 源网卡地址。 |
| Type | 2 B | 上层协议类型(如 0x0800 代表 IP)。 |
| Data Payload | 46 – 1500 B | 负载数据(不足 46 B 需填充)。 |
| CRC | 4 B | 循环冗余校验码(错误检测)。 |
帧的最小长度 64 B,最大长度 1518 B(含头尾)。
七、成帧机制(Framing)
问题:接收方如何判断一帧的起始与结束?
一、按字节计数(Count Bytes)
- 头部包含数据长度。
- 若计数字段损坏,会导致同步丢失(Desynchronization)。
二、哨兵位(Sentinel Bits)
-
用特定位模式标识帧边界(如 01111110 开始,01111111 结束)。
-
若该模式出现在数据中?
-
使用比特填充(Bit Stuffing):
- 发送端:连续出现 5 个 1 后插入 0。
- 接收端:检测到 5 个 1 后跟随 0 则移除该 0。
-
-
这样即可避免数据误识别为边界。
八、链路组成:适配器与介质
链路层的功能通常由 网络适配器(NIC) 实现:
-
发送端:
- 将 IP 数据报封装为帧;
- 添加首部(地址、类型)和尾部(CRC)。
-
接收端:
- 验证 CRC;
- 若无错,则提取 IP 数据报交给网络层。
链路 = 适配器(Adaptor) + 物理介质(Medium)。
九、编码(Encoding)
链路层还负责将逻辑比特(0/1)转换为物理信号:
| 编码方式 | 特点 | 问题 / 优化 |
|---|---|---|
| NRZ(Non-Return-to-Zero) | 电压正负代表 1/0。 | 长序列无信号变化 → 时钟丢失。 |
| NRZI(Inverted) | 每遇 1 翻转电平。 | 仍可能长时间无变化。 |
| Manchester Encoding | 位中间翻转一次;波特率为比特率 × 2。 | 容易同步,但带宽需求高。 |
| 4B/5B 编码 | 4 bit 数据映射为 5 bit 编码,确保足够过渡。 | 提升同步性与信号恢复。 |
编码的目的除传输比特外,还包括时钟恢复与数据同步。
十、现代以太网的演进与启示
| 演变方向 | 变化 |
|---|---|
| 物理介质 | 从同轴铜线 → 双绞线 → 光纤。 |
| 带宽速率 | 从 3 Mbps → 10 Mbps → 1 Gbps → 100 Gbps 甚至 400 Gbps。 |
| 网络拓扑 | 从共享总线 → 星型交换式结构。 |
| 信号方式 | 从电信号 → 光信号。 |
| 兼容性 | 保留以太网帧格式,实现长期向后兼容。 |
核心启示: “正确的接口抽象(frame interface)可以承载数十年的技术演进。” 即实现可不断演化、向后兼容的系统设计理念。
十一、小结与思维导图

十二、实践延伸与安全思考
公共 Wi-Fi 安全
- 无线信道为共享介质,所有节点都能监听数据帧;
- 未加密通信可被窃听;
- 使用 HTTPS/VPN 可加密应用层负载。
工程思考
- CSMA/CD 主要适用于有线广播介质;
- 无线环境中难以检测碰撞,因此 Wi-Fi 使用 CSMA/CA(Collision Avoidance);
- 现代高速以太网(光纤交换)中几乎不再需要碰撞检测。
十三、总结性要点
| 主题 | 核心思想 |
|---|---|
| 链路层职责 | 相邻节点之间的帧传输。 |
| MAC 机制 | 决定“何时发送”。 |
| 以太网设计 | CSMA/CD + 自学习 + 交换式结构。 |
| 成帧 | 确定帧边界(计数字段或哨兵位)。 |
| 编码 | 物理比特到信号的映射。 |
| 现代演进 | 帧格式稳定,底层物理不断更新。 |