物理层与数据链路层 — 网络世界的”基建工程”
高楼大厦需要坚固的地基,互联网的摩天大楼也不例外。物理层和数据链路层就是网络世界的”地基”——它们决定了数据如何在铜线、光纤和无线电波中传递,如何在局域网中精准地找到目标设备。
📋 开篇自测:你已经知道多少?
- 以太网帧的格式包含哪些字段?最大传输单元(MTU)是多少?
- ARP 协议的作用是什么?它的工作流程是怎样的?
- 交换机是如何学习 MAC 地址并建立转发表的?
一、物理层:比特的搬运工
1.1 物理层解决什么问题
物理层位于网络模型的最底层,它要解决的核心问题是:如何把 0 和 1 这些二进制数据,变成可以在物理介质上传播的信号。
具体来说,物理层定义了以下四个方面的规范:
- 机械特性:接口形状、引脚数量、针脚排列(比如 RJ-45 水晶头有 8 根引脚)
- 电气特性:信号的电压范围(比如以太网使用差分信号,+1V 代表 1,-1V 代表 0)
- 功能特性:每根引脚的用途(比如哪几根用于发送,哪几根用于接收)
- 过程特性:信号传输的时序和流程
1.2 常见的物理传输介质
传输介质分类:
有线介质 无线介质
├── 双绞线(Twisted Pair) ├── Wi-Fi(2.4GHz / 5GHz / 6GHz)
│ ├── Cat5e: 千兆以太网 ├── 蓝牙(2.4GHz)
│ ├── Cat6: 万兆以太网(短距离) ├── 5G/4G 蜂窝网络
│ └── Cat6a: 万兆以太网(长距离) └── 卫星通信
├── 光纤(Optical Fiber)
│ ├── 单模光纤: 长距离(数十公里)
│ └── 多模光纤: 短距离(数百米)
└── 同轴电缆(Coaxial)-- 已基本淘汰
双绞线是最常见的网络线缆。为什么要”绞”在一起?因为两根线绞合后,外部电磁干扰会同时作用在两根线上,接收端可以通过差分计算消除干扰——这就是”差分信号”的原理。
光纤通过光信号传输数据,具有带宽大、损耗低、抗电磁干扰等优势。现在数据中心之间的骨干网几乎都使用光纤。
1.3 信号编码方式
物理层还需要把二进制数据编码成合适的信号形式。常见的编码方式包括:
曼彻斯特编码(传统以太网使用):
1 0 1 1 0
+---+ +---+---+ +---+
| | | | | | |
+ +---+ + + +---+ + +
| | | | |
+---+ + +---+ +
每个比特周期中间都有一次跳变(IEEE 802.3 / 以太网标准):
- 低->高 表示 1
- 高->低 表示 0
> **注意**:曼彻斯特编码存在两种约定。上面是 IEEE 802.3(以太网)的定义,而 G.E. Thomas 的原始约定极性相反(高→低表示 1,低→高表示 0)。如果你在其他资料中看到相反的定义,不必困惑,只是约定不同。
现代高速以太网使用更高效的编码方式,如 4B/5B 编码、PAM-5 编码等,以提高传输效率。
1.4 带宽与速率
带宽(Bandwidth)指的是物理信道的最大传输能力,单位是 bps(bits per second)。
| 标准 | 速率 | 介质 |
|---|---|---|
| 10BASE-T | 10 Mbps | Cat3 双绞线 |
| 100BASE-TX | 100 Mbps | Cat5 双绞线 |
| 1000BASE-T | 1 Gbps | Cat5e 双绞线 |
| 10GBASE-T | 10 Gbps | Cat6a 双绞线 |
| 100GBASE-SR4 | 100 Gbps | 多模光纤 |
🤔 想一想 你家里的宽带标称”千兆光纤”,但实际下载速度通常只有 100MB/s 左右,这是为什么?(提示:注意 Mbps 和 MB/s 的区别)
二、以太网:局域网的统治者
2.1 以太网的前世今生
以太网(Ethernet)诞生于 1973 年,由施乐公司的 Robert Metcalfe 发明。最初的以太网速率只有 2.94 Mbps,使用同轴电缆连接。
半个世纪过去了,以太网从 10 Mbps 发展到了 400 Gbps,传输介质也从同轴电缆演变为双绞线和光纤。但核心的帧格式设计思想一直延续至今,这正是好的协议设计的生命力。
如今,以太网占据了全球局域网市场 95% 以上的份额,是当之无愧的”LAN 之王”。
2.2 以太网帧格式
以太网帧(IEEE 802.3 标准)的结构如下:
+----------+-----+----------+----------+------+--------------------+-----+
| 前导码 | SFD | 目的MAC | 源MAC | 类型 | 数据(载荷) | FCS |
| 7字节 | 1字节| 6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节|
+----------+-----+----------+----------+------+--------------------+-----+
|-- 不计入帧长 --| |----- 帧头(14字节)------|---- 数据部分 ----|-- 校验 --|
注意:前导码(Preamble,7 字节
10101010交替信号)用于时钟同步,帧起始定界符(SFD,1 字节10101011)标记帧的正式开始。它们在物理层处理后剥离,通常不计入帧长度。
各字段说明:
- 目的 MAC 地址(6 字节):接收方的硬件地址
- 源 MAC 地址(6 字节):发送方的硬件地址
- 类型(2 字节):标识上层协议。
0x0800= IPv4,0x0806= ARP,0x86DD= IPv6 - 数据(46~1500 字节):承载的上层数据(即 IP 数据包等)
- FCS(4 字节):帧校验序列,使用 CRC-32 算法检测传输错误
2.3 MTU——最大传输单元
以太网帧的数据部分最大为 1500 字节,这就是 MTU(Maximum Transmission Unit)。
为什么是 1500?这是一个历史性的折衷——太小则效率低(头部占比太大),太大则出错重传的代价高。1500 字节在当时的技术条件下取得了最佳平衡。
以太网帧总大小计算:
帧头(14) + 数据(最大1500) + FCS(4) = 最大 1518 字节
如果 IP 数据包超过 1500 字节,就需要进行分片(Fragmentation):
原始数据包 (3000字节IP负载):
+--------------------------------------------------+
| IP头(20B) + 2980 字节的数据 |
+--------------------------------------------------+
|
v IP 层分片(每个分片需独立的 IP 头)
+--------------------+ +--------------------+ +----------+
| IP头(20) + 数据(1480)| | IP头(20) + 数据(1480)| | IP头(20) + 数据(20)|
| 共 1500 字节 | | 共 1500 字节 | | 共 40 字节 |
+--------------------+ +--------------------+ +----------+
注: 每个分片的数据部分必须是 8 字节的整数倍(最后一片除外)
三、MAC 地址:网络设备的”身份证”
3.1 MAC 地址的结构
MAC(Media Access Control)地址是网络接口卡(网卡)的物理地址,在出厂时由厂商烧录,理论上全球唯一。
MAC 地址格式(6 字节 = 48 位):
AA:BB:CC:DD:EE:FF
|------| |------|
厂商标识 设备序列号
(OUI) (NIC)
前 3 字节:组织唯一标识符(OUI),由 IEEE 分配给各厂商
后 3 字节:设备序列号,由厂商自行分配
示例:
00:1A:2B:3C:4D:5E
|-----|
00:1A:2B = 某厂商的 OUI(比如可能是 Dell)
3.2 特殊的 MAC 地址
- 广播地址:
FF:FF:FF:FF:FF:FF,发给局域网内所有设备 - 组播地址:第一个字节的最低位为 1(如
01:00:5E:xx:xx:xx),发给特定的设备组 - 全零地址:
00:00:00:00:00:00,表示地址未知或占位
3.3 MAC 地址 vs IP 地址
这是一个经典的面试问题:既然 MAC 地址全球唯一,为什么还需要 IP 地址?
MAC 地址就像身份证号:唯一标识一个人,但没有地理定位能力。你无法通过身份证号推断一个人在哪个城市。
IP 地址就像邮政地址:有层次结构(省/市/区/街道/门牌号),可以逐级定位。
MAC 地址: 扁平结构,无层次
AA:BB:CC:DD:EE:FF --> 无法判断在哪个网络
IP 地址: 层次结构,可路由
192.168.1.100/24 --> 网络号 192.168.1.0 + 主机号 100
可以据此进行路由转发
跨网段通信时,MAC 地址在每一跳都会改变(换成下一个路由器的 MAC),而 IP 地址始终不变(始终记录源和目的)。
🤔 想一想 如果你把一台电脑从北京搬到上海,它的 MAC 地址变了吗?IP 地址呢?为什么?
四、ARP 协议:从 IP 到 MAC 的翻译官
4.1 ARP 的作用
当设备知道目标的 IP 地址但不知道其 MAC 地址时,就需要 ARP(Address Resolution Protocol)来完成”翻译”工作。
4.2 ARP 的工作流程
假设 PC-A(192.168.1.10)想发数据给 PC-B(192.168.1.20),但不知道 PC-B 的 MAC 地址:
步骤1:PC-A 广播 ARP 请求
PC-A 交换机 所有设备
| "谁的IP是192.168.1.20?" | |
| 目标MAC: FF:FF:FF:FF:FF:FF |
| -------> 广播到所有端口 ------> PC-B, PC-C, PC-D... |
| |
步骤2:PC-B 单播 ARP 应答
PC-A 交换机 PC-B
| | |
| "我是192.168.1.20, | <----- 单播回复 ------ |
| 我的MAC是 BB:BB:BB:BB:BB:BB" |
| | |
步骤3:PC-A 更新 ARP 缓存表
PC-A 的 ARP 缓存:
+-----------------+---------------------+-------+
| IP 地址 | MAC 地址 | 状态 |
+-----------------+---------------------+-------+
| 192.168.1.20 | BB:BB:BB:BB:BB:BB | 动态 |
| 192.168.1.1 | 11:11:11:11:11:11 | 动态 |
+-----------------+---------------------+-------+
4.3 ARP 缓存
为了避免每次通信都要广播 ARP 请求,操作系统会维护一个 ARP 缓存表。你可以通过以下命令查看:
# Linux / macOS
arp -a
# Windows
arp -a
# 输出示例
? (192.168.1.1) at 00:1a:2b:3c:4d:5e on en0 [ethernet]
? (192.168.1.20) at aa:bb:cc:dd:ee:ff on en0 [ethernet]
ARP 缓存条目有一个超时时间,不同操作系统差异很大:Linux 默认约 30 秒(base_reachable_time),Windows 默认约 2 分钟,Cisco 路由器默认 4 小时。过期后条目会被删除,下次通信时重新发起 ARP 请求。
4.4 跨网段的 ARP 行为
如果目标 IP 和自己不在同一子网,ARP 不会去广播查找目标主机的 MAC 地址,而是查找默认网关的 MAC 地址:
PC-A (192.168.1.10) 要访问 Server (10.0.0.50)
1. PC-A 判断: 10.0.0.50 不在 192.168.1.0/24 网段内
2. PC-A 发 ARP 请求: "谁是网关 192.168.1.1?"
3. 路由器回复: "我是 192.168.1.1,MAC 是 RR:RR:RR:RR:RR:RR"
4. PC-A 构造帧:
+------------------+------------------+------ ------+
| 目的MAC=路由器MAC | 源MAC=PC-A的MAC | IP包 |
| (RR:RR:RR:...) | (AA:AA:AA:...) | 目的IP=10... |
+------------------+------------------+--------------+
关键:MAC 地址指向路由器(下一跳),IP 地址指向最终目的地
五、交换机的工作原理
5.1 MAC 地址表的学习过程
交换机出厂时 MAC 地址表是空的。它通过”源地址学习”来逐步建立转发表:
初始状态:MAC 地址表为空
步骤1:PC-A 从端口1发送帧
+----+-------+---------+
| 端口 | MAC | 动作 |
+----+-------+---------+
| 1 | MAC-A | 学习 | <-- 交换机记住: MAC-A 在端口1
+----+-------+---------+
因为不知道目的MAC在哪,所以向除端口1外的所有端口转发(泛洪)
步骤2:PC-B 从端口2回复
+----+-------+---------+
| 端口 | MAC | 动作 |
+----+-------+---------+
| 1 | MAC-A | 已知 |
| 2 | MAC-B | 学习 | <-- 交换机记住: MAC-B 在端口2
+----+-------+---------+
因为知道 MAC-A 在端口1,所以只向端口1转发
步骤3:后续 PC-A 再发给 PC-B
交换机查表发现 MAC-B 在端口2,直接精准转发,不再泛洪
5.2 交换机的三种转发行为
| 行为 | 触发条件 | 说明 |
|---|---|---|
| 转发(Forward) | 目的 MAC 在表中 | 只发到对应端口 |
| 泛洪(Flood) | 目的 MAC 不在表中 | 发到除源端口外的所有端口 |
| 丢弃(Discard) | 目的 MAC 在源端口上 | 不需要转发 |
5.3 VLAN:虚拟局域网
在大型网络中,如果所有设备都在同一个广播域,一个 ARP 请求就会被发送给数百台设备,造成大量无用流量。
VLAN(Virtual LAN)通过在交换机上进行逻辑隔离,把一个物理网络划分成多个独立的广播域:
物理上是同一台交换机,但逻辑上隔离:
+---------------------------+
| 交换机 |
| +--------+ +--------+ |
| | VLAN 10| | VLAN 20| |
| | 研发部 | | 市场部 | |
| | 端口1-8 | | 端口9-16| |
| +--------+ +--------+ |
+---------------------------+
VLAN 10 的广播不会到达 VLAN 20
VLAN 20 的广播不会到达 VLAN 10
两个 VLAN 之间的通信必须经过路由器(三层设备)
VLAN 通过在以太网帧中插入 4 字节的 802.1Q 标签来标识 VLAN 号:
标准以太网帧:
+--------+--------+------+--------+-----+
| 目的MAC | 源MAC | 类型 | 数据 | FCS |
+--------+--------+------+--------+-----+
带 VLAN 标签的帧 (802.1Q):
+--------+--------+----------+------+--------+-----+
| 目的MAC | 源MAC | VLAN标签 | 类型 | 数据 | FCS |
| | | (4字节) | | | |
+--------+--------+----------+------+--------+-----+
|
v
+------+-------+
| TPID | TCI |
|0x8100| VID等 |
+------+-------+
VID: VLAN ID (0-4095)
六、冲突检测与介质访问控制
6.1 CSMA/CD:以太网的”交通规则”
早期的以太网使用共享介质(同轴电缆或集线器),多台设备共享同一条通信线路。为了解决”多人同时说话”的冲突问题,以太网采用了 CSMA/CD(载波侦听多路访问/冲突检测)机制:
CSMA/CD 工作流程:
1. 先听再说(Carrier Sense)
设备发送前先监听信道,空闲才发送
2. 边说边听(Collision Detection)
发送数据的同时监听信道,检测是否有冲突
3. 冲突处理
如果检测到冲突:
a. 立即停止发送
b. 发送 JAM 信号通知所有站点
c. 等待随机时间后重试(指数退避算法)
时序示意:
PC-A: 监听...空闲...发送数据-------*冲突!* 停止 等待随机时间 重试
PC-B: 监听...空闲...发送数据---*冲突!* 停止 等待随机时间 重试
6.2 全双工与半双工
使用交换机后,每个端口是独立的冲突域,设备可以同时发送和接收数据(全双工),CSMA/CD 实际上已经不再需要:
半双工(使用集线器): 同一时刻只能发或收
PC-A <==> Hub <==> PC-B
需要 CSMA/CD 解决冲突
全双工(使用交换机): 发送和接收同时进行
PC-A <==双向==> Switch <==双向==> PC-B
每个端口独立,无冲突,无需 CSMA/CD
七、章节小结
本章深入探讨了网络的物理基础和数据链路层的核心机制:
- 物理层负责将比特流转换为物理信号,定义了传输介质、信号编码和接口标准。
- 以太网帧是数据链路层的核心数据单元,包含 MAC 地址、类型、数据和校验字段,MTU 为 1500 字节。
- MAC 地址是网卡的物理标识,用于局域网内精确寻址,但不具备跨网段路由能力。
- ARP 协议负责将 IP 地址解析为 MAC 地址,使用广播请求和单播回复机制。
- 交换机通过学习源 MAC 地址建立转发表,实现帧的精准转发。
- VLAN在交换机上划分虚拟广播域,隔离广播流量,提高网络安全性和效率。
📝 结尾自测:检验你的收获
- 双绞线为什么要”绞合”?这种设计解决了什么问题?
- 以太网帧的 MTU 是 1500 字节,如果 IP 层要发送 3000 字节的数据怎么办?
- 请完整描述 ARP 协议的工作流程:当 PC-A 要向同网段的 PC-B 发数据,但不知道 PC-B 的 MAC 地址时,会发生什么?
- 交换机是如何逐步学习 MAC 地址表的?当收到一个目的 MAC 不在表中的帧时,它如何处理?
- VLAN 的作用是什么?它通过什么机制标识不同的虚拟局域网?
下一章预告:数据链路层解决了局域网内的通信问题,但要让数据跨越不同网络到达世界任何一个角落,就需要网络层的 IP 协议了。下一章我们将深入 IP 地址体系、子网划分、路由选路和 NAT 技术,理解互联网这个”全球邮政系统”是如何运作的。
购买课程解锁全部内容
网络通信第一课:10 章掌握计算机网络
¥29.90