思维导图:

场景二:共享式以太网
在上文中,我们学习了PPP协议,它解决了两台设备通过点对点链路直接通信的问题。
PPP的世界很简单:一根线两端只有两个设备,不存在寻址问题,也不存在冲突问题。
但现实世界不是这样的。一个办公室里有几十台电脑,它们都需要互相通信。
难道每两台之间都拉一根专线?那将是一张密密麻麻的蜘蛛网,既不现实也不经济。
于是,工程师们想:能不能让多台设备共用同一条通信线路?
这就是以太网的诞生背景。而"共享"带来的新问题,直接催生了以太网最核心的协议:CSMA/CD。
再次强调场景的分类:
场景的分类
| 分类维度 | 具体场景 | 核心矛盾 | 对应协议 |
|---|---|---|---|
| 点对点链路 | 两根线直连两台设备 | 链路两端只有彼此,不需要寻址,但需要链路管理 | PPP |
| 共享广播信道 | 多台设备连在同一(线/无线频段)上 | 谁都能发,但大家一起发就会冲突 | CSMA/CD(有线)CSMA/CA(无线) |
| 交换式网络 | 多台设备通过交换机连接,每条链路独享 | 冲突问题解决了,但交换机需要知道该转发给谁 | 交换机自学习、VLAN |
我们还是向上文一样,先介绍场景,再介绍协议
场景:以太网
🤔什么是以太网?

以太网(Ethernet)是当今局域网中最主流的技术。它的名字来源于物理学中假设的"以太"(一种充满宇宙的介质,用于传播电磁波),意为:数据可以在网络中自由传播。
以太网的核心设计思想:多台设备连接到同一条共享的通信介质上,任何一台设备发出的信号,所有其他设备都能收到。
以太网覆盖了OSI模型的物理层 和数据链路层,而我们要讲的共享式以太网,是其早期的实现形式。(我们日常中提到的以太网,大家可以简单地理解为局域网,虽然本质不是一个东西)
🔑共享式以太网的物理形态
在最早的以太网中,物理上就是一根粗粗的同轴电缆 贯穿整个办公室。每台电脑通过一个T型接头"挂"在这根线上。这根同轴电缆就是所有设备共享的通信介质。
后来的以太网为了布线方便,用集线器 (Hub)取代了直连的同轴电缆。电脑通过双绞线连接到集线器,形成星型拓扑。
注意 :物理上是星型,逻辑上依然是共享总线。因为集线器是一个纯物理层设备,它只是把收到的电信号复制到所有端口,并不做任何处理。所有设备仍然属于同一个"冲突域",逻辑上相当于大家还是连在同一根线上。
🤔如何标识每一台设备?
共享介质上,任何人说话所有人都能听到。你怎么让数据知道该发给谁?这就需要在每一台设备上,都有一个全球唯一 的物理地址。而这个地址,就在网络适配器(网卡)上。
场景的构成:网络适配器与MAC地址
🧩网络适配器(网卡)

是什么:网络适配器(俗称网卡)是计算机连接网络的硬件接口。

工作位置:一边是计算机的总线(PCIe等),另一边是局域网中的共享介质(同轴电缆/双绞线)。它工作在数据链路层和物理层。
核心功能:
- 数据的封装与解封装:把要发送的数据加上帧头帧尾,把收到的帧拆解出数据。
- 介质访问控制:执行CSMA/CD协议,决定什么时候可以发送数据。
- 物理传输:把帧中的比特转换成电信号(或光信号),并在介质上传送。
最重要的特征 :每一块网卡在出厂时,它的ROM中都被烧录了一个全球唯一的地址。这就是MAC地址
🧩MAC地址

是什么:MAC地址是数据链路层使用的物理地址,用来在局域网中唯一标识一台设备。
- 长度:48位(6字节)
- 表示方式 :通常用12个十六进制数字表示,每两个数字一组,用冒号或连字符分隔。例如:
00:1A:2B:3C:4D:5E。 - 构成 :前24位是厂商代码 (由IEEE分配),后24位是厂商自行分配的设备编号 。这就保证了全球生产的每一块网卡,都有独一无二的MAC地址。 比喻:MAC地址是网卡的"身份证号"。无论设备走到哪里,它的物理身份证号码是不会变的。
MAC地址的传输方式:

数据在局域网内以"帧"为单位传输,帧头中包含了目的MAC地址 和源MAC地址。共享介质上的所有设备都会收到这个帧,大家会检查目的MAC地址:
- 单播:目的地址是自己,就把数据收下;不是自己,就丢弃。
- 广播 :目的地址是
FF:FF:FF:FF:FF:FF(全1地址),意味着"所有人",所有设备都必须接收并处理。
🧩共享式以太网场景下的MAC寻址
我们可以把共享式以太网想象成一个大教室里坐满了高中生:
- 共享介质(同轴电缆/集线器):就是教室里的空气。一个人说话(发送信号),所有人都能听到。
- 网络适配器(网卡):每个学生的耳朵和嘴巴。
- MAC地址:每个学生独一无二的姓名。
- 通信过程:A想给B传纸条,他不是悄悄递过去,而是在教室里大声喊:"B!你的信!"(在共享介质上广播包含B的MAC地址的帧)。全班同学都听到了,但大家先看看收件人姓名。如果收件人是自己(B),就拆开来看;如果收件人不是自己(C、D、E...),就丢掉。
关键点 :在这个场景里,大家都能"听"到所有人说的话。听是没问题的,但"说"却有大麻烦。因为声音(信号)是共享的,如果有人同时在喊,就会产生冲突,就像吵架一样,听不清啊。这就是我们接下来要解决的矛盾。
🤔矛盾:为什么需要CSMA/CD?
🎯核心矛盾
"多台设备共享同一根介质" vs "同一时间只能有一台设备发送数据"
现在我们知道了共享式以太网的场景 :一根共享线缆,一堆带着MAC地址的网卡。
这个场景最大的特点是:信号在同一介质上同时传输会发生碰撞。
💡比喻:
就像刚才的大教室,如果A和B同时开口说话,教室里其他人都听不清任何一句话。在以太网中,两个电信号叠加,数据就被破坏了,这就坏了。我们把这个现象称为发生了冲突(Collision)。
所以,必须设计一套规则,来管理大家"说话"的秩序 。 这套规则就是以太网的介质访问控制协议------CSMA/CD。
🤔解决的具体问题
- 什么时候能说(发数据)?
- 解决方案:先说之前先"听"(载波监听),确保别人不在说话。
- 万一多个人恰好同时开口了怎么办(检测冲突)?
- 解决方案:一边说一边"听"(碰撞检测),一旦发现冲突,立刻闭嘴。
- 闭嘴之后,什么时候能再说(冲突退避)?
- 解决方案:等一个随机的时间,避免再次同时开口(退避算法)。
💡比喻:就比如我们在聊天。不能随便打断别人(监听),如果你和别人恰好同时开口,就互相微笑点头,停下来等一下(检测冲突),等一小会儿,看对方没动静了,自己再说(随机退避重试)。
🤔解决方法:CSMA/CD协议
🧩1.CSMD/CD协议的基本原理
CSMA/CD 的全称是 Carrier Sense Multiple Access with Collision Detection------带冲突检测的载波监听多点接入。
这个名字很长,因为它描述了协议工作的三个核心动作。让我们逐个拆解:
💡多点接入(Multiple Access)
含义 :多台设备以多点接入的方式连接在同一条共享介质上。
这不是一个技术,而是场景描述------总线型网络,一台发,所有设备都能收。这是CSMA/CD运行的前提。
💡载波监听(Carrier Sense)
含义:发送之前,先监听信道。如果检测到信道上已经有其他设备在发送数据(信道忙),就暂时不发送,等待信道空闲。
💡比喻:在交谈时,你想说话,先听听有没有别人在说。如果有人在说,就等着,等对方说完你再说。
载波监听的三种监听策略:
| 策略 | 做法 | 效果 |
|---|---|---|
| 1-坚持CSMA | 信道忙就一直监听,一空闲就立即发送 | 响应快,但冲突概率高 |
| 非坚持CSMA | 信道忙就随机等一段时间再监听 | 冲突少,但响应慢 |
| p-坚持CSMA | 信道空闲时以概率p发送,以概率1-p延迟 | 折中方案 |
以太网采用的是1-坚持CSMA------一旦空闲就立即发送,响应最快,但多台设备同时等待时冲突概率也最高。这就引出了下一个解决动作。
💡碰撞检测(Collision Detection)
含义 :一边发送数据,一边检测信道上的信号是否有异常(是否发生了冲突)。一旦检测到冲突,立即停止发送。
🤔为什么"边发边听"极其重要?
因为信号在介质上传播需要时间。两个设备可能同时监听到信道空闲,同时开始发送。A的信号还没到达B,B以为信道空闲,也开始了发送。等到两个信号在中途相遇,冲突才发生。
比喻:两个人在一个安静的地方。他们都"先听了一下",发现没人说话,于是同时开口。声音传到对方耳朵的瞬间,两人才意识到冲突了。如果只靠"开口前听一下",这种冲突永远无法避免。所以必须"边说话边听",一旦发现别人也在说,立刻闭嘴。
🤔2.为什么会有冲突?------ 争用期
⚠️信号传播延迟:冲突的根源
冲突之所以会发生,根本原因是信号在介质上传播需要时间。
假设A和B分别位于一根电缆的两端,相距1公里。电信号在铜线中的传播速度大约是每秒20万公里。A发出的信号到达B需要5微秒。
在这个5微秒的"时间窗口"内,B根本不知道A已经开始发送了。如果B恰好也在这5微秒内监听了信道,发现是空闲的,然后开始发送------冲突就发生了。
🤔争用期 = 2τ:最晚什么时候还能检测到冲突?

我们定义一个时间参数 τ(tau) :信号从电缆一端传播到另一端的单程时间。
争用期 定义为 2τ ------信号从电缆一端到另一端,再返回来的来回时间 。
为什么是2τ? 考虑最坏情况:
- A在时间0开始发送数据
- 信号到达B需要时间τ
- B在时间τ-ε(ε是极短的一瞬间,A的信号即将到达但还没到)开始发送
- B立刻检测到冲突,停止发送
- B发出的冲突信号返回A,又需要时间τ
- A在时间2τ-ε检测到冲突
- 当ε无限趋近于0的时候,争用期就是2τ
结论:A从开始发送到最晚能检测到冲突,需要经过2τ的时间。如果过了2τ还没检测到冲突,就说明A已经"抢占"了信道,后续不会再冲突了。
以太网的争用期 :传统以太网规定最远两端距离2500米,中间最多4个中继器。来回传播时间加上中继器的延迟,争用期定为 51.2微秒。
💡比喻:你在一个很长的走廊一头喊话。声音传到另一头需要2秒。如果有人在那头同时喊,冲突信号返回你耳朵又需要2秒。所以你在喊出口的最初4秒内,必须竖起耳朵听------如果4秒内没听到冲突,说明走廊没人和你抢。
🤔3.如何保证能检测到冲突?------ 最小帧长与最大帧长
💡最小帧长:帧不能太短,否则冲突检测会失败
争用期引出了一个关键问题:如果一帧太短,发送方还没来得及检测到冲突,帧就已经发完了。 发送方以为发送成功,但实际上帧已经在中途被撞毁了。
因此,必须保证:帧的发送时间 ≥ 争用期。
换句话说:
- 发送方在发送完一帧之前,一定能检测到任何可能的冲突
- 如果在发送期间没有检测到冲突,就说明发送成功了
根据这个要求,我们可以计算最小帧长:
最小帧长 = 发送速率 × 争用期
= 10 Mbps × 51.2 μs
= 10 × 10⁶ bps × 51.2 × 10⁻⁶ s
= 512 位
= 64 字节
结论:任何小于64字节的帧都被视为冲突碎片,接收方会直接丢弃。
🤔最大帧长:为什么还要限制最大长度?
最大帧长的存在,不是直接由CSMA/CD冲突检测机制决定的,而是为了保证网络公平性。
如果允许一帧无限长,一台设备就可以一直霸占信道,其他设备永远等不到发送机会。因此以太网规定最大帧长为1518字节(数据部分最大1500字节 + 帧头帧尾18字节)。
最大帧长和最小帧长共同构成了以太网帧的合法范围:64字节 ≤ 帧长 ≤ 1518字节。
🤔4.检测到冲突后怎么办?------ 退避算法
🤔为什么需要随机等待?
当冲突发生后,发送方停止了发送。但如果双方都立即重试,它们会再次同时发送,再次冲突。这就像两个人抢着说话------两人同时闭嘴,又同时开口,再次撞上。
解决思路 :冲突双方各自随机等待不同长度的时间,再重试。等待时间越长,再次冲突的概率越小。
🎯二进制指数退避算法

以太网使用二进制指数退避算法来计算等待时间:
核心规则:
- 第k次冲突后,从
{0, 1, 2, ..., 2^k - 1}中随机选一个数r - 等待时间 = r × 争用期(51.2μs)
- k最大为10,即范围最大到
{0, 1, ..., 1023} - 重试16次仍失败则放弃,向上层报错
具体情况:
| 冲突次数 | k的值 | 随机选择范围 | 等待时间范围 |
|---|---|---|---|
| 第1次 | 1 | {0, 1} | 0 或 51.2μs |
| 第2次 | 2 | {0, 1, 2, 3} | 0 ~ 153.6μs |
| 第3次 | 3 | {0, 1, ..., 7} | 0 ~ 358.4μs |
| ... | ... | ... | ... |
| 第10次及以后 | 10(封顶) | {0, 1, ..., 1023} | 0 ~ 约52ms |
这个算法的好处:
- 冲突少的时候:等待时间短,响应快
- 冲突多的时候:等待范围指数级扩大,迅速拉开冲突双方的重试时间差,避免持续冲突
- 自适应性:网络越拥堵,退避时间越长,自动调节网络负载
比喻:两个人抢着说话。第一次撞上,两人各等1~2秒。第二次又撞上,各等1~4秒。第三次再撞,各等1~8秒。随着冲突反复发生,等待范围迅速扩大,总有一次会错开。即使有十几个人都在抢话说,这个机制也能自动把大家的发言时间分散开来。
5.🤔这套机制效率如何?------ 信道利用率
🎯衡量CSMA/CD的效率
CSMA/CD的一个重要指标是信道利用率 :信道真正用来传输有效数据的时间占比。
理想情况下的极限利用率:
利用率 ≈ 发送时间 / (发送时间 + 争用期开销)
发送时间 = 一帧的发送时间
争用期开销 = 每次发送前潜在的冲突检测时间
结论 :帧越长,信道利用率越高;帧越短,争用期的开销占比越大,利用率越低。
这也是为什么以太网限制最小帧长64字节的另一个理由------太短的帧会让信道利用率急剧下降。
比喻:在聊天时,如果每个人只说一个字就停,大部分时间都浪费在"你先说、你先说"的谦让上。如果每个人都完整讲完一个故事,信道的利用率就高得多。
✅6、完整流程:帧的发送与接收
✅发送流程
-
网络层传来数据报 -
组装以太网帧(加帧头帧尾) -
载波监听:信道空闲吗?
├── 忙 → 继续监听,等待空闲
└── 空闲 → 等待一个帧间间隔(9.6μs)后开始发送 -
边发边听:检测到冲突了吗?
├── 没有冲突 → 继续发送直到完成 → 发送成功
└── 检测到冲突 → 立即停止,发冲突加强信号
└── 退避算法计算等待时间 → 回到步骤3
✅接收流程
-
网络层传来数据报 -
组装以太网帧(加帧头帧尾) -
载波监听:信道空闲吗?
├── 忙 → 继续监听,等待空闲
└── 空闲 → 等待一个帧间间隔(9.6μs)后开始发送 -
边发边听:检测到冲突了吗?
├── 没有冲突 → 继续发送直到完成 → 发送成功
└── 检测到冲突 → 立即停止,发冲突加强信号
└── 退避算法计算等待时间 → 回到步骤3
📌小结:CSMA/CD是一套完整的"冲突管理"方案。基本原理定义了核心规则(先听后说、边发边听),争用期解释了冲突为什么会发生(信号传播延迟),最小帧长保证了冲突一定能被检测到,退避算法提供了冲突后的恢复机制,信道利用率评价了整体效率。这五个部分环环相扣,共同构成了共享式以太网的"交通规则"。
祝你有开心的一天。