第6章:链路层和局域网(The Link Layer and LANs)
一、导读
6.1 本章学习目标
链路层负责在相邻节点之间传输数据。本章讲解差错检测技术、多路访问协议、以太网、交换机以及数据中心网络。
本章的核心学习目标包括:
- 掌握差错检测技术:奇偶校验、CRC
- 理解多路访问协议:ALOHA、CSMA、CSMA/CD
- 掌握以太网:帧格式、MAC 地址、交换机
- 理解 VLAN:虚拟局域网
- 了解数据中心网络:叶脊架构
- 掌握 ARP 协议:IP 地址到 MAC 地址的映射
6.2 为什么链路层如此重要
链路层是网络的基础。所有的网络通信最终都要通过链路层传输。理解链路层的工作原理,对于理解网络性能、调试网络问题至关重要。
链路层运行在"节点到节点"的范围内:一个节点(主机或路由器)通过链路层协议与直接相连的另一个节点通信。虽然 IP 负责端到端的分组传输,但每一跳的实际传输都由链路层完成。
6.3 核心问题引导
在阅读本章时,请带着以下问题思考:
如何检测数据在传输过程中是否出错?
多个节点如何共享同一条通信信道?
以太网帧的格式是什么?MAC 地址有什么作用?
交换机是如何工作的?它与集线器有什么区别?
VLAN 的作用是什么?如何实现跨交换机的 VLAN 通信?
二、核心概念详解
2.1 差错检测
2.1.1 奇偶校验
在数据后添加一个校验位,使得 1 的个数为偶数(偶校验)或奇数(奇校验)。
数据:1011001
偶校验:1011001 0(1的个数为4,偶数)奇偶校验只能检测奇数个比特错误,不能检测偶数个比特错误,也不能纠正错误。二维奇偶校验可以检测并纠正单比特错误。
2.1.2 CRC(循环冗余校验)
CRC 将数据视为多项式,除以一个生成多项式,余数作为校验码。
数据:1011001
生成多项式:1001
CRC:1011001 001CRC 的检错能力非常强:可以检测所有单比特错误、所有双比特错误(只要生成多项式选择得当)、所有奇数个比特错误、以及大部分突发错误。以太网使用的 CRC-32 生成多项式是 IEEE 标准定义的。
2.2 多路访问协议
多路访问协议解决多个节点共享同一信道的问题。
2.2.1 ALOHA
- 纯 ALOHA:随时发送,冲突后随机等待。效率最高约 18%。
- 时隙 ALOHA:在时隙开始时发送。效率最高约 37%。
ALOHA 是最简单的多路访问协议,虽然效率低,但它是理解更复杂协议的基础。
2.2.2 CSMA(载波侦听多路访问)
发送前先监听信道:
- 信道空闲:发送
- 信道忙碌:等待
CSMA 比 ALOHA 效率高得多,但由于传播时延的存在,仍然可能发生冲突。
2.2.3 CSMA/CD(带冲突检测的 CSMA)
以太网使用的协议。发送时继续监听,检测到冲突就停止发送,等待随机时间后重试。
CSMA/CD 的退避算法采用二进制指数退避:第 n 次冲突后,从 {0, 1, ..., 2^n - 1} 中随机选择一个数 K,等待 K 个时隙。这种机制使得冲突后的重传时间自适应增长。
2.3 以太网
以太网是最常见的局域网技术。
2.3.1 以太网帧格式
| 字段 | 长度 | 功能 |
|---|---|---|
| 前导码 | 8 字节 | 同步时钟 |
| 目的 MAC | 6 字节 | 接收方地址 |
| 源 MAC | 6 字节 | 发送方地址 |
| 类型 | 2 字节 | 上层协议 |
| 数据 | 46-1500 字节 | 载荷 |
| FCS | 4 字节 | CRC 校验 |
以太网帧的最小长度为 64 字节,这个限制与 CSMA/CD 的冲突检测有关:确保发送方在发送完帧之前能够检测到冲突。
2.3.2 MAC 地址
MAC 地址是 48 位的硬件地址,全球唯一。
格式:XX:XX:XX:XX:XX:XX
示例:00:1A:2B:3C:4D:5EMAC 地址由 IEEE 分配给厂商,厂商负责分配唯一地址。MAC 地址的前 24 位是 OUI(组织唯一标识符),标识厂商。
2.4 交换机
交换机工作在链路层,根据 MAC 地址转发帧。
2.4.1 自学习
交换机自动学习 MAC 地址与端口的映射:
记录源 MAC 地址和输入端口
查表转发:如果目的 MAC 在表中,转发到对应端口
泛洪:如果目的 MAC 不在表中,向所有端口(除输入端口)泛洪
交换机的自学习机制使得它不需要任何配置即可工作。交换表(也称为转发表或 MAC 地址表)有一个老化时间(通常 300 秒),超过老化时间的条目会被删除。
2.4.2 生成树协议(STP)
STP 防止交换机之间的环路。它通过阻塞某些端口,将网络拓扑转换为一棵树。STP 的选举过程包括:选择根桥、选择根端口、选择指定端口。虽然 STP 会浪费一些链路带宽,但它提供了冗余路径——当活动链路故障时,STP 可以重新计算生成树。
2.5 VLAN
VLAN(虚拟局域网)在逻辑上将一个物理局域网分成多个广播域。
交换机1 交换机2
┌─────────┐ ┌─────────┐
│ VLAN 10 │──Trunk──→──│ VLAN 10 │
│ VLAN 20 │ │ VLAN 20 │
└─────────┘ └─────────┘VLAN 的好处包括:隔离广播流量、增强安全性、灵活的网络管理。跨交换机的 VLAN 通信使用 Trunk 链路和 802.1Q 标签。VLAN 间的通信需要路由器或三层交换机。
2.6 数据中心网络
现代数据中心采用叶脊(Leaf-Spine)架构:
- 叶交换机:连接服务器
- 脊交换机:连接叶交换机
- ECMP:等价多路径,负载均衡
叶脊架构的优势是:任意两个叶交换机之间的距离相同(两跳),所有路径的带宽相同。这使得负载均衡更加简单,网络性能更加可预测。
三、深入分析
3.1 ARP(地址解析协议)
ARP 将 IP 地址转换为 MAC 地址:
广播 ARP 请求:谁有 IP X.X.X.X?
目标单播回复:我有,我的 MAC 是 XX:XX:XX:XX:XX:XX
ARP 是链路层和网络层之间的桥梁。ARP 表有缓存机制,缓存条目有老化时间。ARP 也存在安全隐患:ARP 欺骗(ARP spoofing)攻击可以伪造 MAC 地址映射。
3.2 以太网 vs WiFi
| 特性 | 以太网 | WiFi |
|---|---|---|
| 协议 | CSMA/CD | CSMA/CA |
| 介质 | 有线 | 无线 |
| 冲突检测 | 有 | 无(使用 RTS/CTS) |
| 速度 | 1G/10G/40G/100G | 最高 Wi-Fi 6 (9.6Gbps) |
WiFi 不使用 CSMA/CD 是因为无线环境中冲突检测不可靠(隐藏终端问题)。WiFi 使用 CSMA/CA 和 RTS/CTS 机制来避免冲突。
3.3 MPLS(多协议标签交换)
MPLS 使用标签而不是 IP 地址进行转发,提高转发效率。MPLS 在链路层和网络层之间工作,被称为"2.5 层"协议。MPLS 支持流量工程和虚拟专用网络(VPN)。在 MPLS 网络中,入口路由器为每个分组打上标签,后续路由器根据标签进行转发,出口路由器移除标签。这种方式使得路由器可以使用固定长度的标签进行查表转发,而不需要解析变长的 IP 首部。
3.4 链路层与网络层的关系
链路层和网络层的关系是"逐跳"与"端到端"的关系。IP 协议负责将分组从源主机端到端地传输到目的主机,但每一跳的实际传输由链路层完成。当分组到达一个路由器时,网络层决定下一跳的 IP 地址,链路层负责将分组实际发送到下一跳。ARP 协议是连接这两层的桥梁:它将网络层的 IP 地址转换为链路层的 MAC 地址。
四、实践案例
4.1 案例一:使用 arp 和 ip 命令分析链路层
# 查看 ARP 表
arp -a
# 查看 MAC 地址
ip link show
# 手动添加 ARP 条目(防止 ARP 欺骗)
arp -s 192.168.1.1 00:11:22:33:44:55通过 ARP 表可以了解本地网络中的设备。如果 ARP 表中出现异常的 MAC 地址映射,可能是 ARP 欺骗攻击的迹象。
4.2 案例二:使用 Wireshark 分析以太网帧和 ARP
启动 Wireshark,过滤 eth 或 arp
观察以太网帧的格式
分析 MAC 地址和 ARP 请求/响应
观察交换机的自学习过程
通过 Wireshark 可以直观地看到 ARP 请求的广播特性和 ARP 响应的单播特性。
五、常见误区
5.1 误区一:"交换机比路由器快"
交换机和路由器工作在不同层次,不能简单比较。现代路由器的转发速度也可以达到线速。选择交换机还是路由器取决于网络需求,而非速度。
5.2 误区二:"MAC 地址可以路由"
MAC 地址只在局域网内有效,不能跨网络路由。跨网络通信需要 IP 地址。MAC 地址用于同一链路内的节点通信,IP 地址用于端到端的通信。
5.3 误区三:"VLAN 是物理隔离"
VLAN 是逻辑隔离,不是物理隔离。同一 VLAN 的设备可能在同一台交换机上,也可能在不同的交换机上。VLAN 间的通信需要三层设备。
5.4 难点:理解生成树协议
STP 的选举过程(根桥、根端口、指定端口)比较复杂,需要理解端口代价和桥 ID。根桥是桥 ID 最小的交换机;根端口是到根桥代价最小的端口;指定端口是每个链路上到根桥代价最小的端口。RSTP(快速生成树协议)是 STP 的改进版本,能够更快地收敛(通常在几秒内完成),现代交换机默认使用 RSTP。MSTP(多生成树协议)则允许在不同 VLAN 上使用不同的生成树实例,实现负载均衡。
六、本章小结
第6章讲解了链路层的核心技术:
差错检测 使用 CRC 校验
多路访问协议 解决共享信道问题
以太网 是最常见的局域网技术
交换机 根据 MAC 地址转发帧
VLAN 逻辑上划分广播域
数据中心网络 采用叶脊架构
后续章节将讲解无线网络和移动网络。链路层技术从有线以太网发展到无线 WiFi,再到移动通信,每一代技术都在带宽、延迟和覆盖范围上取得了显著进步。
七、思考题
假设一个以太网使用 CRC-32 校验。如果传输过程中恰好有 32 个比特出错,CRC 能否检测到这些错误?为什么?
比较 CSMA/CD 和 CSMA/CA 的区别。为什么 WiFi 不使用 CSMA/CD?什么是隐藏终端问题和暴露终端问题?
一个交换机有 24 个端口,每个端口连接一台主机。如果主机 A 向主机 B 发送一个帧,而交换机的转发表中没有主机 B 的 MAC 地址,交换机会怎么做?如果主机 B 的 MAC 地址在表中呢?
VLAN 的作用是什么?如果两个 VLAN 之间需要通信,需要什么设备?为什么?
比较叶脊架构和传统三层架构的优缺点。为什么现代数据中心倾向于使用叶脊架构?