4 共享式以太网
约 6900 字大约 23 分钟
2025-06-08
以太网是一种用无源电缆作为总线来传输帧的基带总线局域网,本节先介绍最早流行的传输速率为 10Mb/s 的共享式以太网。
3.4.1 网络适配器和 MAC 地址
1. 网络适配器
网络适配器,通常简称为“网卡”,是计算机连接到局域网所必需的硬件设备。其主要组成部分包括:
- 核心芯片:例如 REALTEK 公司的 8169SC,负责实现以太网的数据链路层和物理层功能。
- EEPROM:用于存储 MAC 地址和网卡相关信息的电可擦可编程只读存储器,例如 93C46。
- BootROM 插槽:用于安装网络无盘工作站启动所需的 BootROM 芯片。
- PCI 接口:网卡与计算机主板之间的接口。
- 网络隔离变压器:用于隔离核心芯片与外部局域网的 RJ45 网络接口,提高抗干扰能力并提供防雷击保护。
网卡在计算机内部通过 I/O 总线以并行方式与 CPU 通信,而与外部以太网则通过传输媒体(如同轴电缆、双绞线、光纤)以串行方式通信。网卡的一个重要功能是在并行传输和串行传输之间进行转换。由于网络和计算机内部总线的传输速率不同,网卡的核心芯片中包含用于缓存数据的存储器。

为了使网卡正常工作,需要在操作系统中安装相应的设备驱动程序。驱动程序负责驱动网卡发送和接收帧。当网卡收到正确的帧时,会以中断方式通知 CPU 取走数据并交付给协议栈中的网络层;当网卡收到误码的帧时,会直接丢弃,无需通知 CPU。
2. MAC 地址
1) MAC 地址的作用
在广播信道中,每个站点必须有一个数据链路层地址作为唯一标识,即 MAC 地址。
假设总线上各主机的数据链路层地址用不同的大写字母表示。主机 C 给主机 D 发送帧时,帧首部的目的地址字段填入主机 D 的 MAC 地址 D,源地址字段填入主机 C 的 MAC 地址 C。总线上的其他主机收到该帧后,根据帧首部的目的地址字段是否与自己的 MAC 地址匹配来决定是否接受该帧。

MAC 地址通常固化在网卡的 EEPROM 中,也被称为硬件地址或物理地址。在 Windows 系统命令行中,通过 ipconfig/all
命令可以查看 TCP/IP 配置信息,其中 MAC 地址被称为物理地址。注意,物理地址属于数据链路层范畴。
一般情况下,普通用户的计算机中往往会包含两块网卡:一块是用于接入有线局域网的以太网卡,另一块是用于接入无线局域网的 Wi-Fi 网卡。它们各自都有一个全球唯一的 MAC 地址。严格来说,MAC 地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
2) IEEE 802 局域网的 MAC 地址
IEEE 802 标准为局域网规定了一种由 48 比特构成的 MAC 地址,由 IEEE 的注册管理机构 (Registration Authority, RA) 负责管理。
MAC 地址的格式如图所示。前三个字节是组织唯一标识符 (Organizationally Unique Identifier, OUI),生产网络设备的厂商需要向 IEEE 申请。后三个字节是厂商自行分配的网络接口标识符,以保证生产出的网络设备没有重复地址。

MAC 地址的标准表示方法如下图所示,每 4 个比特写成 1 个十六进制字符(共 12 个字符),每两个字符分为一组(共 6 组),各组之间用短线连接。还可以将短线改为冒号,或将每四个字符分为一组(共 3 组)且各组之间用点连接。

组织唯一标识符 OUI 中包含有用于指示 MAC 地址是单播地址还是多播地址的标志位 I/G,以及用于指示 MAC 地址是全球管理还是本地管理的标志位 G/L。

- IEEE 规定 MAC 地址的第一字节的 b0 位为 I/G (Individual/Group) 位。
- 当 I/G 位为 0 时,表示 MAC 地址是单播地址。
- 当 I/G 位为 1 时,表示 MAC 地址是多播地址(现在称为组播地址)。
- IEEE 规定 MAC 地址的第一字节的 b1 位为 G/L (Global/Local) 位。
- 当 G/L 位为 0 时,MAC 地址是全球管理(可确保在全球没有相同的 MAC 地址),网络设备厂商向 IEEE 购买的 OUI 都属于全球管理。
- 当 G/L 位为 1 时,MAC 地址是本地管理,用户可任意分配 MAC 地址。
网卡从网络上每收到一个帧,就检查帧首部的目的 MAC 地址,并按以下情况处理:
- 如果目的 MAC 地址是广播地址,则接受该帧。
- 如果目的 MAC 地址与网卡上固化的全球单播地址相同,则接受该帧。
- 如果目的 MAC 地址是网卡支持的多播地址,则接受该帧。
- 除上述情况外,丢弃该帧。
网卡还可以被设置为混杂方式 (Promiscuous Mode),在这种模式下,网卡会接收所有共享媒体上传来的帧,而不管帧的目的 MAC 地址是什么。这种方式常被用于网络维护和管理,但也被黑客利用来非法获取网络用户的口令。
3.4.2 CSMA/CD 协议
1. 基本原理
在共享总线以太网中,多个站点连接在一条总线上,争用总线资源。以太网使用 CSMA/CD 协议来协调各站点对总线的争用。CSMA/CD 是载波监听多址接入/碰撞检测 (Carrier Sense Multiple Access/Collision Detection) 的英文缩写。

CSMA/CD 协议的要点包括:
- 多址接入:多个站点连接在一条总线上,竞争使用总线。
- 载波监听:站点在发送帧之前,先检测总线上是否有其他站点在发送帧。若检测到总线空闲 96 比特时间,则发送帧;若检测到总线“忙”,则继续检测并等待总线转为空闲 96 比特时间后发送帧。
- 碰撞检测:正在发送帧的站点必须“边发送帧边检测碰撞”。一旦发现总线上出现碰撞,就立即停止发送,退避一段随机时间后再次从载波监听开始进行发送。
站点在发送帧之前进行载波监听,但检测到总线空闲时,总线并不一定是真正空闲的。如下图所示,主机 B 检测到总线空闲后发送帧,主机 C 稍后也要发送帧,也检测到总线空闲,但此时主机 B 发送的信号可能尚未传播到主机 C,导致主机 C 检测不到,从而产生碰撞。

因此,使用 CSMA/CD 协议的共享总线以太网只能尽量避免碰撞,但不能完全避免。并且,由于站点需要同时发送和检测碰撞,所以只能进行半双工通信。
2. 争用期
争用期 (Contention Period) 或碰撞窗口 (Collision Window) 指的是共享总线以太网的端到端往返时间,记为 2τ。它是指最先发送帧的主机,在开始发送帧后最多经过 2τ 时长,就可以检测出所发送的帧是否遭遇了碰撞。
假设主机 A 和主机 D 分别位于共享总线以太网的两端,A 与 D 之间的信号传播时延为 τ。主机 A 和 D 都发送帧并产生碰撞的情况如下:
- t=0 时刻,主机 A 检测到总线空闲 96 比特时间后发送帧。
- t=τ−δ 时刻,主机 A 发送的帧还未到达主机 D,主机 D 也要发送帧,检测到总线空闲后发送帧。
- t=τ−δ/2 时刻,主机 A 发送的帧与主机 D 发送的帧产生碰撞,但双方都检测不到碰撞。
- t=τ 时刻,主机 D 首先检测到碰撞,立即停止发送帧。
- t=2τ−δ 时刻,主机 A 也检测到碰撞,立即停止发送帧。
共享总线以太网规定 2τ 的值为 512 比特发送时间,即 51.2μs。这一数值不仅考虑了共享总线以太网的端到端时延,还考虑了网络中可能存在的转发器带来的时延,以及发送帧的站点检测到碰撞后继续发送 32 比特或 48 比特人为干扰信号 (Jamming Signal) 所需的时间。发送人为干扰信号的目的是强化碰撞,使总线上所有站点都能检测出碰撞。
3. 最小帧长和最大帧长
1) 最小帧长
为了确保共享总线以太网上的每一个站点在发送完一个完整的帧之前,能够检测出是否产生了碰撞,帧的发送时延就不能少于共享总线以太网端到端的往返时间,即一个争用期 2τ。对于 10Mb/s 的共享总线以太网,其争用期 2τ 的值规定为 51.2μs,因此其最小帧长为 512 b (10Mb/s × 51.2μs),即 64 字节。
当某个站点在发送帧时,如果帧的前 64 个字节没有遭遇碰撞,那么帧的后续部分也不会遭遇碰撞。如果遭遇碰撞,一定是在帧的前 64 字节之内。因此,接收站点收到长度小于 64 字节的帧,就可判定这是一个遭遇了碰撞而异常中止的无效帧,将其丢弃即可。
2) 最大帧长
如图所示,主机 A 正在给主机 D 发送一个很长的帧,这会使得主机 A 长时间占用总线,而总线上的其他主机迟迟拿不到总线的 “使用权”。另外,由于帧很长,还可能导致主机 D 的接收缓冲区无法装下该帧而产生溢出。

因此,以太网的帧长应该有其上限。以太网 V2 的 MAC 帧最大长度规定为 1518 字节,其中数据载荷的最大长度为 1500 字节,首部和尾部共 18 字节。
2009 年 题 37
在一个采用 CSMA/CD 协议的网络中,传输介质是一根完整的电缆,传输速率为 1Gbps,电缆中的信号传播速度是 200 000km/s。若最小数据帧长度减少 800 比特,则最远的两个站点之间的距离至少需要 ()
A. 增加 160m
B. 增加 80m
C. 减少 160m
D. 减少 80m
解析
由于
最小帧长=数据传输速率×争用期2τ
设最远两个站点之间的距离为 d ,最小帧长为 l ,与题目给定相关已知量一起代入上式:
l=(200000×103d×2)×109=10d
显然,若最小帧长减少 800 比特, 最远的两个站点之间的距离至少需要减少 80m 。
4. 退避算法
共享总线以太网中的各站点采用截断二进制指数退避 (Truncated Binary Exponential Backoff) 算法来选择退避的随机时间,具体如下:
- 基本退避时间:将争用期 2τ 作为基本退避时间,即 512 比特时间。对于 10Mb/s 共享总线以太网就是 51.2μs。
- 随机数 r 的选择:随机数 r 是从离散的整数集合 {0,1,...,(2k−1)} 中随机取出的一个数。其中,k 从重传次数和 10 中取小者,即 k=min(重传次数,10)。
- 得到退避时间:将基本退避时间 2τ 乘以随机数 r 就可得到退避时间。
如果连续多次产生碰撞,就表明可能有较多的站点参与竞争信道。使用上述退避算法可使重传需要推迟的平均时间随重传次数增多而增大,从而减小产生碰撞的概率。
当重传达 16 次仍不能成功时,应放弃重传并向高层报告。
5. 信道利用率
如图所示,总线上的某个站点成功发送了一个帧,帧的发送时延记为 T0。在最极端的情况下,源站点在总线的一端,而目的站点在总线的另一端。因此,经过一个单程端到端的传播时延 τ 后,总线才能完全进入空闲状态。发送一帧所需的平均时间由多个帧的发送时延和单程端到端的传播时延构成。

在理想情况下:
- 总线一旦空闲就有某个站点立刻发送帧。
- 各站点发送帧都不会产生碰撞。
那么,极限信道利用率 Smax 为:
Smax=T0+τT0=1+T0τ1=1+a1
其中,τ 与 T0 之比记为参数 a。为了提高信道利用率,参数 a 的值应尽量小,即 τ 的值应尽量小,T0 的值应尽量大。
2015 年 题 36
下列关于 CSMA/CD 协议的叙述中,错误的是 ()
A. 边发送数据帧,边检测是否发生冲突
B. 适用于无线网络,以实现无线链路共享
C. 需要根据网络跨距和数据传输速率限定最小帧长
D. 当信号传播延迟趋近于 0 时,信道利用率趋近 100%
解析
选项 A 的描述正确,其所描述的是 CSMA/CD 协议中的“碰撞检测(冲突检测)CD”。
选项 C 的描述正确,因为 最小帧长=数据传输速率×争用期 。也就是说,最小帧长取决于数据传输速率和争用期。选项 C 中给出的“网络跨距”相当于给出了“端到端单程传播时延”,进而可得出“争用期”。
选项 D 的描述正确,因为选项 D 中给出“信号传播延迟趋近于 0”,这相当于信号瞬间到达整个网络,网络中各站点瞬间就知道总线被占用,因此不会出现碰撞,进而使信道利用率趋近 100%。
3.4.3 使用集线器的共享式以太网
早期的传统以太网是使用粗同轴电缆的共享总线以太网,后来发展到使用细同轴电缆。这种总线型以太网存在大量的机械连接点,容易出现接触不良或断开的情况,导致网络不稳定。
后来,以太网发展出了一种使用大规模集成电路来替代总线、并且可靠性非常高的设备,叫作集线器 (Hub)。主机连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆。
集线器的一些主要特点如下:
- 使用集线器的以太网虽然物理拓扑是星型的,但在逻辑上仍然是一个总线网,总线上的各站点共享总线资源,使用的还是 CSMA/CD 协议。
- 集线器只工作在物理层,它的每个接口仅简单地转发比特,并不进行碰撞检测。碰撞检测的任务由各站点中的网卡负责。
- 集线器一般都有少量的容错能力和网络管理功能。
3.4.4 在物理层扩展以太网
1. 扩展站点与集线器之间的距离
共享总线式以太网中两站点之间的距离不能太远,否则它们之间所传输的信号就会衰减到使 CSMA/CD 协议无法正常工作。
在 10BASE-T 星型以太网中,可使用光纤和一对光纤调制解调器来扩展站点与集线器之间的距离。

2. 扩展共享式以太网的覆盖范围和站点的数量
如果需要连接的站点数量超过了单个集线器能够提供的接口数量,就需要使用多个集线器,连接成覆盖更大范围、连接更多站点的多级星型以太网。
如图所示,某公司的两个部门各有一个 10BASE-T 以太网。为了让这两个以太网之间可以通信,可使用一个主干集线器将它们连接起来,形成一个更大的网络。

采用多个集线器连接而成的多级星型以太网,在扩展了网络覆盖范围和站点数量的同时,也带来了负面因素,即形成了更大的碰撞域,导致平均吞吐量降低。

3.4.5 在数据链路层扩展以太网
使用集线器在物理层拓展共享式以太网会形成更大的碰撞域。为了避免形成更大的碰撞域,可以使用网桥 (Bridge) 在数据链路层扩展共享式以太网。
如图所示,某公司的两个部门各有一个 10BASE-T 以太网。为了让这两个以太网之间可以通信,可使用一个网桥将它们连接起来,形成一个更大的网络。与使用主干集线器进行扩展不同,使用网桥进行扩展,并不会将原本两个独立的碰撞域合并成一个更大的碰撞域。

1. 网桥的基本工作原理
网桥一般具有两个接口,用于连接两个不同的以太网,形成一个覆盖范围更大、站点数量更多的以太网。网桥收到帧后,会在自身的转发表中查找帧的目的 MAC 地址,根据查找结果来转发或丢弃帧。网桥的接口在向其连接的网段转发帧时,会执行相应的媒体接入控制协议,对于共享式以太网就是 CSMA/CD 协议。

2. 透明网桥的自学习和转发帧的流程
透明网桥 (Transparent Bridge) 通过自学习算法建立转发表。透明网桥的标准是 IEEE 802.1D,它通过一种自学习算法基于以太网中各站点间的相互通信逐步建立起自己的转发表。
网桥上电启动后,其转发表是空的。假设网络中依次进行了各主机间的通信:A -> B、D -> A、C -> A,网桥会逐步学习到各主机的 MAC 地址与接口的对应关系,并根据转发表转发或丢弃帧。
1) 主机 A 给主机 B 发送帧
主机 A 向主机 B 发送单播帧时,流程如下:
- 主机 B、C 和网桥的接口 1 都会收到该帧。
- 主机 B 的网卡检查目的 MAC 地址,确认是发给自己的,因此接受该帧。
- 主机 C 的网卡检查目的 MAC 地址,确认不是发给自己的,因此丢弃该帧。
- 网桥的处理:
- 自学习: 网桥将源 MAC 地址 A 和接收接口 1 记录到转发表中,学习到主机 A 的 MAC 地址与接口 1 的对应关系。
- 转发: 网桥查找转发表中目的 MAC 地址 B,未找到,因此将该帧从除接口 1 以外的其他接口(本例中为接口 2)转发出去,可以理解为 “盲目地转发”。
- 主机 D、E 和 F 收到该帧后,由于目的 MAC 地址不是自己,因此将其丢弃。

2) 主机 D 给主机 A 发送帧
主机 D 向主机 A 发送单播帧时,流程如下:
- 主机 E、F 和网桥的接口 2 都会收到该帧。
- 主机 E 和 F 检查目的 MAC 地址,确认不是发给自己的,因此将其丢弃。
- 网桥的处理:
- 自学习: 网桥将源 MAC 地址 D 和接收接口 2 记录到转发表中,学习到主机 D 的 MAC 地址与接口 2 的对应关系。
- 转发: 网桥查找转发表中目的 MAC 地址 A,找到对应的记录,得知应从接口 1 转发该帧,因此将该帧从接口 1 转发出去,可以理解为 “明确地转发”。
- 主机 A 收到该帧并接受,而主机 B 和 C 收到该帧后将其丢弃。

3) 主机 C 给主机 A 发送帧
主机 C 向主机 A 发送单播帧时,流程如下:
- 主机 A、B 和网桥的接口 1 都会收到该帧。
- 主机 A 检查目的 MAC 地址,确认是发给自己的,因此接受该帧。
- 主机 B 检查目的 MAC 地址,确认不是发给自己的,因此将其丢弃。
- 网桥的处理:
- 自学习: 网桥将源 MAC 地址 C 和接收接口 1 记录到转发表中,学习到主机 C 的 MAC 地址与接口 1 的对应关系。
- 丢弃: 网桥查找转发表中目的 MAC 地址 A,找到对应的记录,得知应从接口 1 转发该帧。然而,网桥正是从接口 1 接收的该帧,这表明主机 C 与 A 在同一个网段,A 可以直接收到该帧而不需要网桥转发,因此网桥丢弃该帧。
通过以上三个例子,我们可以看到,随着网络中各主机不断发送帧,网桥会逐步建立起完整的转发表,记录每个接口与网络中哪些主机的 MAC 地址对应。
除了上述例子,透明网桥的自学习和转发帧的流程还包括以下情况:
- 误码帧: 如果网桥收到有误码的帧,则直接丢弃。
- 广播帧: 如果网桥收到一个无误码的广播帧,则不进行查表转发,而是直接从除接收该广播帧的接口的其他接口转发该广播帧。
- 转发表老化: 网桥在进行自学习时,除了登记帧的源 MAC 地址和帧进入网桥接口的接口号,还要登记帧进入网桥的时间。这是因为以太网的拓扑经常会发生变化。为了使转发表能反映出整个网络的最新拓扑,转发表中自学习来的每条记录都有其生存时间(或称老化时间),当生存时间倒计时为 0 时,记录将被删除。
3. 透明网桥的生成树协议
为了提高以太网的可靠性,有时需要在两个以太网之间使用多个透明网桥来提供冗余链路。如图所示,使用透明网桥 B1 将共享总线型以太网 E1 和 E2 连接形成了一个更大的以太网,同时使用一个冗余的透明网桥 B2 将 E1 和 E2 进行了连接。

如果以太网 E1 或 E2 中的某个主机发送了一个广播帧,该广播帧就会在网桥 B1 和 B2 构成的环路中按顺时针和逆时针两个方向永久兜圈,导致网络资源被浪费。

为了避免帧在网络中永久兜圈,透明网桥使用生成树协议 (Spanning Tree Protocol, STP),可以在增加冗余链路来提高网络可靠性的同时,又避免环路带来的各种问题。如图所示,网桥 B1 和 B2 通过交互 STP 相关数据包找出一个连通以太网 E1 和 E2 并且不存在环路的生成树,从而避免了环路问题。
