以太网不是"一根网线",而是一套让许多台设备共用同一段介质的规矩(IEEE 802.3)。名字里的 Ether(以太)是 19 世纪物理学家假想的传播光的介质——后来证明根本没有这种东西,但名字留下来了,因为今天介质早就换成了双绞线和光纤,规矩却一点没变。它要解决的难题从头到尾只有一个:一段介质上挂着很多台设备,谁先说话? 这个难题它分三代解决——总线型(大家一起抢)、集线器(外观变星型,本质还是抢)、交换机(每口独占,不用抢了),于是 CSMA/CD 从"主力规矩"退成了"备用条款"。而它真正"焊死不变"的东西是那个帧格式:目的 MAC / 源 MAC / 类型 / 数据 / FCS,从 1980 年至今一个字段没动——MTU 1500 和"不足 46 字节要填充"的出处,全在这十几个字节里。
上一节 5.1 把"同网段走交换机、跨网段走路由器"这条分岔和两种介质认全了。本节把有线那一半(以太网)单独拿出来讲透,或者说:本节是"以太网"这个名字的正式履历。
- 3.2 网络接口层与网际层:本节正式走进网络接口层,看它"只管一段"的具体做法
- 3.6 数据的称谓:本节的主角"数据帧"就是那一层的数据的名字;"只有数据帧带帧尾校验"这句话,本节给出实物(FCS)
- 3.4 数据打包与 MTU:当时说"MTU 1500 是这一层对上层数据的大小限制",本节把这个 1500 的来源指出来
- 3.16 ARP 与 MAC 地址:ARP 名册里那些 MAC 地址,就在本节这个帧头里
- 3.9 单播、广播、组播:广播帧长什么样,本节给地址(
FF:FF:FF:FF:FF:FF) - 2.2 网络设备:集线器为什么被淘汰、交换机为什么能取代它,本节给出技术原因
- 2.3 链路 / 5.1 介质共用:本节的"介质"就是链路里那一根线
一、以太网是什么:一套"共用介质"的规矩
以太网(Ethernet)= IEEE 802.3,是网络接口层里负责有线的那一半(无线那一半是 802.11,也就是 Wi-Fi)。
它的名字来源值得记一下:Ether(以太) 是 19 世纪物理学家假想的一种充满宇宙、传播光的介质。后来爱因斯坦那套理论证明它根本不存在,但 IEEE 定标准的时候这个名字已经叫开了,就留了下来。
这件事本身就说明了以太网的性格:它管的从来不是"哪种线",而是"线怎么被共用"。 今天你桌上那根 Cat6 网线、机房里那根光纤,物理材质和 1980 年的同轴电缆完全不同,可跑的还是同一套以太网。
那么这套规矩管的是什么?三个字——谁先说。
你可能一直纳闷 MAC 到底是谁的缩写。答案就在本节:
MAC = Media Access Control,媒体访问控制。
- Media(媒体) = 那段公用的介质(线、电波)
- Access(访问) = 谁在什么时候可以用它
- Control(控制) = 定这套先后秩序
所以"以太网"是整套规矩的名字,"MAC"是这套规矩里管"谁先用"的那部分;而 MAC 地址,就是这套秩序发给每张网卡的编号——有了号,规矩才能点名。
以太网能活到今天、把当年的竞争对手(令牌环、FDDI、ATM)全熬死,靠的是它把变的部分和不变的部分分得很干净:
| 变的部分 | 不变的部分 | |
|---|---|---|
| 内容 | 速率(10M → 100M → 1G → 10G → 400G)、介质(同轴 → 双绞线 → 光纤)、形态(总线 → 集线器 → 交换机) | 帧格式、MAC 地址、对上层提供的接口 |
| 意义 | 随硬件进步随时升级 | 上层完全不用改(收 1.6 分层的价值) |
这就是为什么换个网线、换个交换机、换个网速,你的 IP、TCP、HTTP 一个字都不用动。
二、以太网的三代形态:从抢线到不撞
同样是"以太网",在不同年代长得完全不一样。判断它要不要"抢线",看的不是外观,而是逻辑上介质是不是共用。
| 第一代 · 总线型 | 第二代 · 集线器 | 第三代 · 交换机 | |
|---|---|---|---|
| 长什么样 | 一根同轴电缆串起所有机器 | 外观成了星型,都连到 HUB | 每台设备独占一个端口 |
| 介质属性 | 共享(一条线大家用) | 还是共享(HUB 会把信号复制给所有口) | 独占(每口一条独立通道) |
| 双工 | 半双工(说的时候不能听) | 半双工 | 全双工(能同时收发) |
| 要不要抢线 | 要,靠 CSMA/CD | 要,靠 CSMA/CD | 不用了,物理上不可能撞 |
| 一句话 | 一条线上一群人抢话筒 | 换了形状,还是同一个话筒 | 每人一个话筒,互不干扰 |
集线器(HUB)是物理层设备——它不懂地址、不做判断,收到信号放大一下就从所有其他口送出去。后果有两个:
- 被迫收听:A 和 B 在通话,C、D 也被迫收到每一帧(只能靠网卡自己过滤丢掉),带宽被白白占掉
- 不能同时说:整个 HUB 就是一个冲突域,任何时刻只能有一台机器发言
而交换机是链路层设备——它认得帧里的目的 MAC,只从"该去的那个口"送出去。于是每一口都成了一个独立的冲突域:你和交换机之间那段线,就是你一个人专用的。这就是"喊话被淘汰、认门牌的上位"的技术原因。
三、CSMA/CD:撞了怎么办
上一节 5.1 提过它的名字,这里正式拆开。CSMA/CD = Carrier Sense Multiple Access with Collision Detection,拆成三段读正好就是它的三步动作:
| 缩写 | 全称 | 干什么 |
|---|---|---|
| CS | Carrier Sense | 先听:听线上有没有人在说话,有就等 |
| MA | Multiple Access | 多人访问:这段介质是大家共用的,谁都能发 |
| CD | Collision Detection | 边说边听:一边发一边听,撞上了立刻停 |
撞上之后的三步收尾:
- 立刻停,别把整帧废话发完
- 发一个堵塞信号(Jam),让所有人知道刚才那一下撞了,大家都别当真
- 各自随机等一段时间再重试——注意是"随机",不是固定值。如果大家都等一样长,下一轮会再撞一次
抢线的本质是分散。所有机器都用同一个规则,唯一能打破对称的就是随机数。这也是 Wi-Fi 那套 CSMA/CA 里"随机退避"的同一个思路(收 5.1)。
那今天还用得上它吗? 用不上,但得懂。
- 用不上:现在的以太网基本都是交换式全双工——你和交换机之间那条线是你独占的,往两个方向各有一条通道,物理上不存在"两个人同时说"这回事,自然也不会撞。
- 得懂:它解释了三件事——① 为什么早期网络慢(一撞全体重来);② 为什么以太网帧最小要 64 字节(第三节就讲);③ 为什么网卡设置里还有个"半双工/全双工"选项(插了老设备或者协商失败时,它会退回半双工,CSMA/CD 就重新上岗了)。
一句话收:有线当年是"撞了再补救",无线是"尽力别撞";而现在常见的有线网络,连补救都不需要了。
四、以太网帧:十几个字节里的全部信息
这是以太网最不变、也最该记住的部分。
| 字段 | 长度 | 装什么 | 谁在看 |
|---|---|---|---|
| 前导码 + SFD | 8 字节 | 一串交替的 0/1,让接收方把时钟对上 | 网卡的物理部分 |
| 目的 MAC | 6 字节 | 送给谁 | 交换机看这个 |
| 源 MAC | 6 字节 | 谁发的 | 交换机(顺便记进 MAC 地址表) |
| 类型 | 2 字节 | 里面装的是什么 | 接收方的网卡(决定交给谁处理) |
| 数据 | 46~1500 字节 | 上一层交下来的东西(通常是 IP 数据包) | 上层 |
| FCS | 4 字节 | 帧尾校验(CRC),用来发现传输错误 | 接收方的网卡 |
几个要单独讲的点:
① 前导码不算帧。 严格来说"以太网帧"是从目的 MAC 开始的,前导码只是"预备动作"——这 8 个字节不参与长度计算,抓包软件里有时能看到、有时直接被网卡吃掉。
② 类型字段是"交接单"。 这就是 3.6 说的"上一层怎么知道里面装的是什么"的答案:
| 类型值 | 里面装的是 |
|---|---|
0x0800 |
IPv4 数据包 |
0x0806 |
ARP(收 3.16) |
0x86DD |
IPv6 数据包 |
0x8100 |
VLAN 标签(带标签的帧) |
③ FCS 是帧尾唯一的检查。 这就是 3.6 那句"只有数据帧带帧尾校验"的实物。它只做发现(发现错了就丢帧),不做补救——补不补是上层(TCP)的事(收 3.18)。
④ 帧头 14 字节。 目的 6 + 源 6 + 类型 2 = 14。抓包时经常看到这个数字,记住它。
⑤ 里面的地址只在"这一段路"有效。 帧头里的两个 MAC,每经过一个路由器就换一套:从你电脑到网关是一组,从网关到下一跳是另一组。而同一份数据里的 IP 地址自始至终不变(收 3.2 的"双层门牌")。
五、帧长的两条硬线:64 和 1518
以太网帧不能太长,也不能太短:
| 数值 | 怎么算出来的 | |
|---|---|---|
| 最小帧 | 64 字节 | 帧头 14 + 数据最少 46 + FCS 4 = 64 |
| 最大帧 | 1518 字节 | 帧头 14 + 数据最多 1500 + FCS 4 = 1518 |
由此推出两件事:
- MTU 1500 的出处:那个"1500",就是数据字段的上限。3.4 说过"MTU 是这一层对上层数据的限制",源头就在这里。超了怎么办?不是以太网负责切,是网际层的 IP 来分片(收 3.4:分片是网际层的活)。
- 不足 46 字节要填充:如果一个帧里只有 20 字节的内容,网卡会补一堆 0 凑够 46。为什么要这么麻烦?——下一节专门讲。
目的 MAC 全是 F,即 FF:FF:FF:FF:FF:FF,这就是广播帧。交换机收到它,会从除来源口之外的所有口送出去。
ARP 请求用的正是它——3.16 里你 arp -a 看到的那本名册,最初的来源就是一次"用广播问、用单播答"。
六、最小帧为什么是 64 字节
这是本节最值得琢磨的一个"为什么",因为它是一个倒推出来的数字。
回头看 CSMA/CD 的要求:发送方必须"边说边听"——一边发,一边听着线上有没有撞车。这就带来一个隐藏条件:
在帧发完之前,撞车必须已经传回来了。 否则发送方已经收工散场,撞车才到,谁也发现不了。
而信号在线上跑是要花时间的(哪怕只有几百米,也有延迟)。算一下最坏情况:A 在线的这头,B 在线的那头。A 刚发出的信号要跑到 B 那里,B 才可能开始发(它此时没听到有人说话);B 的信号再跑回来,A 才知道撞了。
所以:一帧的发送时间 ≥ 信号跑完最长往返路线的时间。
按当年的 10 Mbps、最长 2500 米的同轴电缆网络一算,最少得发 64 字节(512 位),才能保证"撞车一定听得见"。
物理上的理由已经消失了——全双工交换机下根本不会撞。但规矩留着,因为改规矩比留规矩贵得多:全世界几亿张网卡、几十年的软硬件都按 64 字节写死了。所以哪怕只发一个字节的 ping,也要填充成 64 字节的帧送出去。
这正好回答了一个常见困惑:"我明明只发了一个字节,为什么抓包看到 60 多字节?" ——其中一大半是填充和帧头。
七、今天你用的以太网:交换式 + 全双工
把上面几条拼起来,就是你家/公司里那套有线网的样子:
一台交换机 + 一堆双绞线(收 1.3 星型拓扑)= 最常见的交换式以太网。
- 介质:双绞线(Cat5e / Cat6,单段最多 100 米)或光纤(能到几公里,用于楼层之间、园区之间)
- 速率:100M / 1000M / 万兆,逐代往上
- 自动协商:插入网线后,网卡和交换机口会互相"报价",取双方都支持的最高速率与双工模式——所以插上就通,你从来不用配。这就是 2.4 那种"组网流水线"里,物理层几乎不用操心的原因
- 每口独占:你和交换机之间那条线只有你一个人用,全双工,不撞
- 网口灯:灯亮 = 链路层握手成功(收 2.3 / 5.1)。所以排障第一眼永远是看灯——这是最底层、最快的一个信号
"用不用抢线"这件事,已经被硬件消灭了。 但以太网并没有因此变简单——它只是把复杂度换了个地方:从"怎么抢"变成了"交换机怎么转发"(下一节的事)。
八、动手:Demo51 把以太网拆开看
亲眼看到四件事:我的 MAC 长什么样、帧里到底有几个字段、MTU 1500 的边界在哪、一个帧的地址长什么样。
第 1 步|看本机所有网卡的 MAC。
getmac /v
一次列出所有网络适配器的物理地址和连接的名称。有线、无线、虚拟网卡各有一个——这正好印证了"MAC 属于网卡,不属于机器"(收 3.16)。
第 2 步|认出 MAC 地址里的厂商。
随意拿一个 MAC,看前 3 个字节(比如 00-1A-2B),去网上搜 IEEE OUI 00-1A-2B。
这就是厂商编号 OUI:IEEE 分配给每个厂商一段前缀,后 3 字节由厂商自己编号。所以同一个牌子的网卡,MAC 前三字节常常一样——家里几台同品牌设备的路由器列表里能直接看出来。
第 3 步|抓一个帧,把字段一个个对上。
装 Wireshark,选你的网卡,随便打开一个网页,停掉抓包,在列表里挑一个包,展开最上面的 Ethernet II 那一节:
| 抓包里的名字 | 对应本节表格 |
|---|---|
Destination |
目的 MAC |
Source |
源 MAC |
Type: IPv4 (0x0800) |
类型字段 |
对照第四节那张表读一遍,十几个字节就不再是抽象名词了。
第 4 步|抓一个 ARP,看广播帧。
过滤栏输入 arp,回车。挑一个 Request 包展开看:
arp
它的 Destination 是 ff:ff:ff:ff:ff:ff——这就是广播帧的实物,类型是 0x0806(收 3.9 / 3.16)。
第 5 步|看 MTU 实际值。
netsh interface ipv4 show subinterfaces
看 MTU 那一列的 1500——这就是第五节那个数字,在你的机器上是活的。如果是 VPN 或者拨号连接的虚拟网卡,这一列往往更小(常见 1400 上下),这就是"连了 VPN 有些网站打不开"的一类原因。
第 6 步|亲手撞一次 MTU 的边界(收 3.4)。
先查自己的网关 IP(ipconfig 里看默认网关),然后:
ping -f -l 1472 192.168.1.1
ping -f -l 1473 192.168.1.1
第一条应该通,第二条报"需要拆分数据包但已设置 DF 标志"。
账要算清:-l 1472 是 IP 层的负载长度,再加上 IP 头 20 + ICMP 头 8 = 28,正好 1500。所以 1472 是这条路上能塞的极限,1473 就超了。这个 1500 就是本节第五节的"最大帧"倒推上来的。
第 7 步|看帧的地址是不是"每跳都换"。
在 Wireshark 里抓一个你自己发出的包(比如重新打开一个网页),看它的:
- 源 MAC:应该是你自己网卡的
- 目的 MAC:应该是网关(路由器)网卡的,而不是目标网站的
这就是"帧的地址只管一段"的第一个现场——你发给百度的帧,目的 MAC 写的是你家路由器(收 3.2 的双层门牌)。
第 8 步|30 秒实验:看类型字段切换。
在 Wireshark 里敲 ip.addr == <你的IP>,同时干两件事:打开一个网页、ping 一下网关。看类型字段:
- IPv4 的包 →
Type: IPv4 (0x0800) - 偶尔冒出
ARP→Type: ARP (0x0806)
这个 2 字节的字段,就是以太网把"接下来该交给谁处理"写清楚的地方。
九、常见误区
- "以太网就是网线。" —— 以太网是一套规矩(IEEE 802.3),网线只是它今天常跑的介质之一,光纤上跑的照样是以太网。
- "以太网和 Wi-Fi 是两个不同的网络。" —— 是同一层(网络接口层)的两副肉身(收 5.1)。两边都用 MAC 地址、都传数据帧、都承载 IP,所以换个网络环境应用完全不用改。
- "CSMA/CD 淘汰了,这部分可以整个跳过。" —— 概念要懂。它解释了三件事:为什么帧最小 64 字节、为什么早期网络慢、为什么网卡还有个"半双工"选项。
- "集线器只是老一点的交换机。" —— 是不同层的设备。HUB 是物理层,只复制信号(共享、半双工、要抢线);交换机是链路层,按 MAC 转发(独占、全双工、不撞)。
- "交换机得看 IP 才知道往哪送。" —— 只看目的 MAC(收 3.6)。它是"只看门牌的传达室",不是"要看地图的司机"——看地图那是路由器的事。
- "1500 只是个建议,超了也没事。" —— 是硬上限。超了要么被 IP 分片(收 3.4),要么被丢弃(设了 DF 标志时),没有"商量"的余地。
- "最小帧 64 字节是随便定的。" —— 是从"撞车必须听得见"倒推出来的(第六节)。这个数字背后是一道物理题。
- "帧里的 MAC 和 IP 数据包里的地址是一路走的。" —— MAC 每跳都换,IP 全程不变(收 3.2)。这是最容易搞错、也最能体现分层的一处。
- "速度快了,以太网的规矩也跟着变了。" —— 帧格式和 MAC 地址从 1980 年至今一个字段没动。变的只有速率和介质——这正是它熬死所有竞争对手的原因。
- "前导码也是帧的一部分。" —— 它是"预备动作",不算帧、不参与长度计算。以太网帧是从目的 MAC 开始、到 FCS 结束的。
十、动手自测
- 以太网的标准号是多少?它属于哪一层?
- "Ether" 这个名字是怎么来的?为什么证明它不存在之后名字还留着?
- MAC 三个字母分别是什么?为什么说"MAC 地址"这个名字本身就解释了以太网要干什么?
- 以太网三代形态里,"要不要抢线"取决于什么?为什么集线器和总线型是一回事?
- CSMA/CD 三个字母各是什么?撞了之后要做什么,为什么必须"随机"等?
- 以太网帧一共几个字段?帧头多少字节?前后各是多少?
- 类型字段里
0x0800、0x0806分别是什么? - 最大帧 1518 和 MTU 1500 是什么关系?超了 MTU 由谁来处理?
- 最小帧为什么是 64 字节?这个数字是从什么倒推出来的?
- 为什么你只发 1 个字节的 ping,抓包却看到 60 多字节?
答案:
① IEEE 802.3,属于网络接口层(有线的那一半,无线那一半是 802.11)。 ② 来自 19 世纪物理学家假想的传播光的介质 Ether(以太)。后来证明这种介质不存在,但 IEEE 定标准时名字已经叫开,就留下来了——它也正好说明以太网管的不是"线",而是"线怎么共用"。 ③ Media Access Control,媒体访问控制。拆开读就是以太网的全部任务:Media 那段公用的介质 / Access 谁什么时候能用 / Control 定这套先后秩序。所以 MAC 地址就是这套秩序发给每张网卡的编号。 ④ 取决于逻辑上介质是不是共用,不看外观。集线器外观是星型,但它收到信号就复制给所有口——逻辑上还是同一条总线,所以还是要抢线。 ⑤ CS = 先听、MA = 多人共用、CD = 边说边听。撞了之后:立刻停 → 发堵塞信号通知大家 → 各自随机等一段时间重试。必须随机,是因为如果大家都等一样长,下一轮会再撞一次。 ⑥ 六个:前导码 8、目的 MAC 6、源 MAC 6、类型 2、数据 46~1500、FCS 4。帧头 14 字节(目的 6 + 源 6 + 类型 2),前面有 8 字节前导码(不算帧),后面有 4 字节 FCS。 ⑦ 0x0800 = IPv4 数据包,0x0806 = ARP。 ⑧ 1518 = 帧头 14 + 数据 1500 + FCS 4——那个 1500 就是 MTU。超了 MTU 由网际层的 IP 负责分片(收 3.4),不是以太网负责切。 ⑨ 因为 CSMA/CD 要求"发送方在帧发完之前必须能听到撞车"。一帧的发送时间必须 ≥ 信号跑完最长往返路线的时间,按当年 10 Mbps、2500 米的网络一算,就是 64 字节(第六节)。 ⑩ 因为 以太网帧最小 64 字节,其中数据字段最少 46 字节——不足 46 的部分由网卡用填充补 0,再加上 14 字节帧头和 4 字节 FCS。所以哪怕只有 1 个字节的有效内容,也要凑成一个 64 字节的帧。
十一、下一步学什么
- ☑ 5.3 以太网标准(IEEE802委员会) ✅ 已学 —— 以太网标准(IEEE802委员会)(往后退一层问"这些规矩是谁定的":IEEE 802 委员会〔"802"就是日期戳:1980 年 2 月成立〕、标准只管"必须做到什么"不管"怎么做"、IEEE 802 与 IETF 各管一半〔802 管网络接口层、IETF 管网上跑什么〕、标准号命名法〔
1000BASE-T= 1 Gbps · 基带 · 双绞线〕、802.3af/at/bt 是 PoE 三档〔AP·摄像头只插一根网线的答案〕、802.11ax = Wi-Fi 6 的两套名字) - ☐ 5.4(按教材顺序) —— 报个标题接着走:本节退到"标准"这一层(IEEE 802 委员会 / 802.3 与 802.11 的编号 / 标准号命名法 / PoE 三档 / 标准名 vs 商用名);下一节大概率是以太网的具体传输机制(帧怎么被交换机转发、MAC 地址表怎么学习、链路聚合、VLAN 这些细节)、无线局域网(Wi-Fi)的机制(CSMA/CA、信道、AP 与 SSID、为什么无线更慢),或交换机的作用与工作方式。等你报标题。
相关笔记
- 在同一网络中传输数据(以太网、无线局域网(Wi-Fi)) —— 上一节:两条路的分岔与两种介质的第一次照面;本节把有线那一半讲透
- 负责传输数据的网络分层(网络接口层与网际层) —— 网络接口层"只管一段",本节是它的正式正文;双层门牌的出处
- 数据的称谓(信息、数据段、数据包、数据帧) —— "数据帧"这个名字、"帧尾校验"这句话,本节给出实物
- 收发数据时的规则(数据打包) —— MTU 1500 与 IP 分片,本节指出 1500 的来源
- 将IP地址与MAC地址对应(ARP) —— MAC 地址与 ARP 名册;广播帧的第一个用户
- 接收方是1个还是多个(单播、广播、组播) —— 广播帧的目的 MAC 长什么样,本节给出地址
- 用于构建网络的设备(网络设备) —— 集线器为什么被淘汰、交换机为什么上位,本节给出技术原因
- 网络的具体结构(接口(端口)、链路) —— 链路与接口:网口灯的排障意义
- 公司内部网络的结构(LAN和WAN) —— 星型拓扑:交换机 + 双绞线的标准形态
- 通信过程中所使用的语言(网络架构) —— 分层:为什么换介质、换速率都不影响上层