
前面我们学习了帧、差错检测、MAC 地址和 ARP。现在可以把这些概念放到最常见的有线局域网技术中:以太网。
今天把电脑用网线接到路由器、交换机或光猫的 LAN 口,绝大多数情况下使用的都是以太网。它把 IP 数据报封装成以太网帧,在局域网内依靠 MAC 地址完成本地交付。
现代以太网看起来很简单,但它经历了从“一根总线大家共享”到“每台设备通过交换机点对点连接”的演进,这也解释了集线器、交换机、冲突域、全双工和 CSMA/CD 为什么会同时出现在网络教材中。
一、以太网在局域网中负责什么?
以太网是一组有线局域网技术和标准的统称,主要规定了链路层帧如何封装、设备如何在局域网中发送和接收帧,以及与之配套的物理介质、编码和速率等内容。
在一次典型的局域网通信中:
上层交付 IP 数据报
↓
以太网封装为 MAC 帧
↓
根据目的 MAC 在当前局域网交付
↓
接收端校验、解封装并上交 IP 数据报
以太网不负责判断“远端服务器在哪个网络”,那是 IP 和路由器的职责;它解决的是更近的一步:在当前局域网中,怎样把一帧数据送到目标接口或下一跳网关。
二、从共享总线到交换网络:以太网如何演进?
1. 早期共享式以太网:一条线,大家共用
早期以太网使用同轴电缆构成总线,多个设备共享同一传输介质:
主机 A ── 主机 B ── 主机 C ── 主机 D
同一根共享总线
任一主机发送信号后,其他主机都能在总线上观察到这份信号。目标 MAC 与自身匹配的主机接收帧,其余主机丢弃。
共享介质带来的问题是:如果两个设备恰好同时发送,电信号会互相干扰,产生碰撞。早期以太网使用 CSMA/CD 协调竞争发送,基本思路是“先监听、再发送、边发送边检测;发现碰撞后停止并随机等待重传”。
2. 集线器:物理上变成星形,逻辑上仍是共享总线
集线器作为物理层设备,仅对比特进行“放大再生”(解决信号衰弱问题),将双绞线连接的主机(如办公室电脑)汇聚成星型网络,将接收到的信号广播至所有端口。(逻辑上仍然是拓扑型)
后来,集线器(Hub)让每台主机使用双绞线连接到中心设备:
主机 A
|
主机 B ─ 集线器 ─ 主机 C
|
主机 D
物理布线变成了星形,施工和维护更方便;但集线器只是物理层设备,它把收到的比特信号放大、再生并复制到其他端口,不识别 MAC 地址,也不会选择性转发。
因此,集线器网络在逻辑上仍是共享总线:所有设备共享同一个冲突域,仍可能碰撞,仍需要 CSMA/CD。集线器解决的是布线与信号衰减问题,不是“智能转发”问题。
3. 交换式以太网:点对点链路成为主流
以太网继续使用星形拓扑结构,但是 交换机以“无碰撞、二层智能转发”特性全面替代集线器,彻底改变网络架构。
交换机工作在链路层(第二层),根据MAC地址表点对点转发帧(而非广播)。每个接口独立构成冲突域,彻底消除了碰撞。
现代局域网通常是下面的结构:
主机 A ─┐
主机 B ─┼─ 以太网交换机 ─ 其他交换机/路由器
主机 C ─┘
主机与交换机之间是独立的点对点链路。交换机工作在数据链路层,可以识别以太网帧首部中的 MAC 地址,并将帧转发到合适的端口。
当交换机端口直接连接主机或另一台交换机时,通常使用全双工:两端可以同时发送和接收,收发路径不再争用同一共享介质,因此不会发生传统共享以太网中的碰撞,也就不需要 CSMA/CD。
这就是现代以太网的核心变化:从“所有人抢同一条总线”,变成“每台设备与交换机拥有独立链路,交换机负责在端口之间转发帧”。
补充:全双工、半双工
全双工模式为什么不会产生冲突?
全双工(Full-Duplex)指的是同一时刻可以进行双向数据传输。也就是说,在全双工模式下,通信双方既可以同时发送数据,也可以同时接收数据。它的工作原理是:
- 发送和接收是分开的,不会互相干扰。通信的两个设备(比如交换机和主机)有各自独立的发送和接收通道。
- 每个设备的收发通道是独立的,它们不共享同一个物理介质,避免了数据碰撞(即“冲突”)。所以在全双工模式下,设备可以同时发送和接收数据,不需要像半双工那样等待。
举个例子,想象你和朋友打电话:
- 如果你们能同时说话和听对方说话,就像全双工通信,彼此之间不会互相干扰,沟通效率也高。
- 但是如果只能轮流说话和听对方说话(半双工),就可能发生“抢话”的情况,也就是有冲突。
为什么半双工模式会产生冲突?
半双工(Half-Duplex)意味着同一时刻,通信双方只能单向传输数据,即要么发送数据,要么接收数据,不能同时进行。这就需要双方协调好顺序,否则就会发生“冲突”,‘具体来说:
- 比如在集线器(Hub)这种设备中,所有的设备共享同一个信号通道(网络线)。如果两台设备同时发送数据,就会造成数据冲突,因为它们的数据会在同一个信道上互相干扰,导致数据丢失或者传输错误。
- 为了避免冲突,使用CSMA/CD协议(载波监听多路访问/冲突检测协议)。这个协议的作用是:设备在发送数据之前先监听信道是否空闲。如果信道空闲,就可以发送数据;如果信道忙碌(有其他设备在发送数据),它会等待,直到信道空闲才发送。如果发生冲突(即两台设备同时发送数据),就会停止发送并重试。
三、以太网帧长什么样?
目前最常见的是 Ethernet II,也就是以太网 V2 帧格式。它可以概括为:
目的 MAC | 源 MAC | 类型 | 数据字段 | FCS
6 字节 6 字节 2 字节 46~1500字节 4 字节
详细为:

1. 目的 MAC 与源 MAC
- 目的 MAC 地址:当前局域网中这一帧要交给的目标接口,或者下一跳网关接口;
- 源 MAC 地址:当前帧发送接口的 MAC 地址。
这两个字段只服务于当前链路。数据经过路由器进入下一条链路时,会被重新封装成新的以太网帧,源 MAC 和目的 MAC 也会相应变化。
2. 类型字段
类型字段说明数据字段应交给哪个上层协议处理。常见情况是数据字段中装着 IP 数据报,但以太网本身不只服务 IP,也可以承载其他网络层协议。
3. 数据字段:为什么是 46 到 1500 字节?
数据字段承载上层协议数据,通常就是 IP 数据报。以太网规定最大传送单元 MTU 为 1500 字节,因此数据字段最大为 1500 字节。
1500字节是以太网中规定的最大传输单元(MTU, Maximum Transmission Unit),即一个以太网帧的最大数据部分长度。这个限制主要是为了提高网络效率、避免数据分片、以及保障网络稳定性。
数据字段最少为 46 字节,和早期共享式以太网的最短帧长度有关。传统 CSMA/CD 要求发送端在争用期内仍在发送,才能检测最远端返回的碰撞信号;因此规定最小帧长为 64 字节。
CSMA/CD 协议,检测碰撞的时候要留出冲突的时间!!!以太网规定最短帧长度是64字节,减去首部尾部18字节就是46。数据不够46就补0使得成为46字节
以太网首部加 FCS 共占 18 字节:
最小帧长 64 字节 - 首部与 FCS 18 字节 = 最小数据字段 46 字节
如果上层数据不足 46 字节,以太网会在数据字段中填充字节,保证帧达到最小长度。现代全双工交换网络虽然不再依赖 CSMA/CD,但仍保留这一长度规范以兼容以太网帧格式。
4. FCS:链路层的 CRC 检查
FCS(Frame Check Sequence,帧检验序列)位于帧尾部,通常使用 CRC-32 计算。接收端对收到的帧执行相同校验:
- 校验通过:接受帧并向上交付;
- 校验失败:丢弃错误帧。
以太网 CRC 负责高概率检错,但以太网本身通常不提供确认和重传。错误帧被静默丢弃后,是否恢复由上层协议或其他链路机制决定。
四、物理层如何识别以太网帧的开始?
数据链路层封装好 MAC 帧后,还要交给物理层发送。在线路上,以太网通常会在 MAC 帧前加入前导码:
前同步码(7 字节) | 帧开始定界符(1 字节) | 以太网 MAC 帧
- 前导码中的前7个字节为前同步码,作用是使接收方的时钟同步。
- 最后的1字节为帧开始符,表明其后面紧跟着的就是以太网帧。
另外,以太网还规定了帧间间隔时间为96比特的发送时间(对于带宽为10Mb/s的传统以太网,96比特的发送时间为9.6us)。
因此,接收方只要找到帧开始定界符,其后面连续到达的比特流就都属于同一帧。
与一些使用显式结束标志的协议不同,以太网不依赖专门的帧结束符。接收端依据物理编码、帧长度和 FCS 等规则识别一帧的结束位置。
五、一帧数据怎样在局域网中走?
假设主机 A 要向同一局域网中的主机 B 发送数据:
- A 已通过 ARP 得到 B 的 MAC 地址;
- A 构造以太网帧:源 MAC 写 A,目的 MAC 写 B,数据字段装入 IP 数据报;
- A 将帧发送给连接的交换机端口;
- 交换机检查帧的目的 MAC,并依据 MAC 地址表选择输出端口;
- 帧从对应端口发往 B;
- B 的网卡校验 FCS,确认目的 MAC 与自身匹配后,取出 IP 数据报并交给网络层。
若交换机还不知道 B 位于哪个端口,它会把未知单播帧转发到除入端口外的其他端口,确保 B 有机会收到。B 一旦发出回应,交换机就能从回应帧的源 MAC 学习 B 所在端口。MAC 地址表具体如何学习、如何老化、如何决定泛洪与过滤,是下一篇交换机专题的重点。
六、单播、广播与泛洪不要混淆
这三个概念都可能表现为“一帧被多个设备看到”,但原因不同。
| 概念 | 帧的目的 MAC | 发送或转发原因 | 典型例子 |
|---|---|---|---|
| 单播 | 特定接口 MAC | 发给一个明确目标 | A 向 B 发送普通数据帧 |
| 广播 | FF:FF:FF:FF:FF:FF | 发给本地广播域所有设备 | ARP 请求、部分 DHCP 流程 |
| 泛洪 | 通常是未知单播或广播帧 | 交换机暂不知道目标端口或需要转发广播 | 交换机首次处理未知目的 MAC 的帧 |
泛洪是交换机的一种转发行为,不是一种新的 MAC 地址类型。未知单播帧的目的 MAC 仍然是某个具体接口,只是交换机暂时不知道它在哪个端口。
七、以太网提供什么服务?
传统以太网在链路层通常被描述为提供无连接、不可靠服务:
- 无连接:发送帧前不需要与对方建立链路层连接或进行复杂握手;
- 不可靠:以太网可用 FCS/CRC 检测错误,但通常不发送确认帧,也不在链路层自动重传错误帧。
这并不意味着互联网通信一定不可靠。可靠性可以由上层协议提供:例如 TCP 使用序号、确认和重传来恢复丢失的数据;UDP 则不强制提供这些端到端恢复机制,更适合能够容忍少量丢失或自行处理恢复的应用。
八、以太网标准名称怎么看?
你可能见过 10BASE-T、100BASE-TX、1000BASE-T、10GBASE-T 等名称。它们通常可以拆成三部分:
速率 + BASE + 传输介质/变体
10、100、1000、10G表示不同的速率等级;BASE表示基带传输;T通常表示双绞线,其他后缀可能表示光纤类型或具体物理层变体。
无论速率和物理介质如何演进,以太网能够长期兼容的重要原因之一,是其基本 MAC 帧格式和链路层工作方式保持了稳定。现代数据中心可以使用高速光纤以太网,办公室仍可使用双绞线以太网,二者在局域网的帧和寻址逻辑上具有连续性。
九、集线器与交换机的关键区别
| 对比维度 | 集线器 | 交换机 |
|---|---|---|
| 工作层次 | 物理层 | 数据链路层 |
| 处理对象 | 比特信号 | 以太网帧与 MAC 地址 |
| 转发方式 | 复制到其他端口 | 按 MAC 表选择端口,未知时泛洪 |
| 冲突域 | 所有端口共享一个冲突域 | 每个端口通常是独立冲突域 |
| 常见链路模式 | 半双工,可能发生碰撞 | 主机直连时通常全双工,无传统碰撞 |
| 是否需要 CSMA/CD | 需要 | 纯交换全双工网络不需要 |
不要把“交换机不广播”当作绝对结论。交换机对广播帧仍需在同一广播域内转发,对未知单播帧也会泛洪;它减少的是已知单播帧的无关复制,并隔离了冲突域,而不是天然隔离广播域。
十、常见误区
1. 所有以太网都需要 CSMA/CD
不对。CSMA/CD 面向共享介质、半双工以太网。现代主机与交换机直连时通常使用全双工点对点链路,不存在传统碰撞,也不需要 CSMA/CD。
2. 交换机只转发,不会丢弃帧
不对。交换机会对 FCS 校验失败的帧进行丢弃;当目的 MAC 已知且就在入端口所在方向时,也会过滤该帧,避免无意义转发。
3. 以太网帧最大只能传 1500 字节文件
不对。1500 字节是标准以太网帧的数据字段 MTU,不是文件大小限制。更大的应用数据会被上层协议分段或分片后,装入多个帧传输。
4. 广播和未知单播泛洪是一回事
不完全是。广播帧的目的 MAC 就是广播地址,交换机必须在本广播域内转发;未知单播帧有明确目的 MAC,只是交换机暂时不知道该地址所在端口,所以选择泛洪。
5. 交换机解决了所有局域网广播问题
不对。普通二层交换机隔离冲突域,但默认不隔离广播域。VLAN 和路由设备才会进一步控制广播范围。
十一、总结
以太网是最常见的有线局域网技术。它将上层数据封装为带有源 MAC、目的 MAC、类型和 FCS 的帧,在当前局域网内完成交付。
早期共享式以太网和集线器网络依赖 CSMA/CD 处理共享介质上的碰撞;现代交换式以太网则以“主机与交换机点对点、通常全双工”的方式成为主流。交换机根据 MAC 地址表选择端口,使已知单播帧不必复制到整个局域网。
理解了以太网帧和基本转发过程后,下一篇将专门拆开交换机的内部逻辑:MAC 地址表是如何从经过的帧中自学习出来的,未知目的 MAC 时为什么会泛洪,以及表项为什么会老化。
如果这篇文章对你有帮助,欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力!

3154

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



