[ 计算机网络 | 第三章 ] 数据链路层 04 交换式以太网

场景三:交换式以太网

共享式的痛点:冲突严重,效率低

在展开新场景之前,我们先回顾一下共享式以太网的问题。

冲突域是共享式以太网最大的噩梦。所有设备连在同一个冲突域里,任何两台设备同时发送,信号就会碰撞。设备越多,冲突越频繁。CSMA/CD的退避算法能缓解冲突,但退避本身就是时间浪费------设备越多,浪费越严重。

集线器加剧了问题。集线器只是把信号复制到所有端口,所有端口上的设备仍然在同一个冲突域中。即使办公室里有50台电脑,它们全部共享同一根逻辑总线的带宽。

比喻:共享式以太网就像一个没有任何隔断的大办公室,所有人共用同一个对讲机频道。只有一个人能说话,其他人必须听着。人一多,抢话的冲突就越来越频繁,整天都在"你先说、你先说"的谦让中浪费了时间。


1.场景:交换式以太网的诞生

工程师们想:既然冲突是因为共享同一根线导致的,那能不能不让设备共享一根线,而是给每一台设备独立的一条线?

这就是交换机的核心设计思想。

交换机(Switch)取代了集线器,成为以太网的中心节点 。它工作在数据链路层,和集线器有本质区别:

对比 集线器 交换机
工作层次 物理层 数据链路层
转发方式 收到信号,复制到所有端口 收到帧,只转发到目标端口
冲突域 所有端口在同一个冲突域 每个端口是独立的冲突域
通信方式 半双工 全双工(不需要CSMA/CD)

交换机的优势:交换机上的每个端口都是一个独立的冲突域。一台设备发送数据时,只影响它自己连接的端口。其他端口上的设备完全不受干扰,可以同时发送数据。

比喻:交换机就像一个电话总机。A想和B通话,总机把A和B的线路接通,他们俩就能单独通话。与此同时,C和D也可以通过总机单独通话,互不干扰。这就是交换式以太网------从"所有人对讲机"进化成了"总机转接电话"。


2.矛盾:如何精准转发帧?

交换机解决了冲突问题,但带来了一个新矛盾:

"每台设备独享端口,冲突消失了" vs "交换机怎么知道该把帧转发给哪个端口?"

在共享式以太网中,所有设备都能收到所有帧,各设备自己判断目的MAC地址是否匹配。但在交换式以太网中,交换机必须代替所有设备做出转发决策------它必须知道每个MAC地址在哪个端口上。

如果交换机不知道目的MAC地址在哪个端口,它就只能像集线器一样广播到所有端口------那就退化成共享式了,失去了交换的意义。

因此,交换机需要一个自动学习机制。这个机制就是自学习算法


3.解决方案:交换机的三大核心机制

交换机的成功依赖于三个核心机制:全双工通信自学习算法缓存转发

机制一:全双工通信 ------ 告别CSMA/CD

在共享式以太网中,设备必须在半双工模式下工作------同一时间只能发或收,不能同时进行。而且必须运行CSMA/CD协议来避免冲突。

交换式以太网的每个端口是独立的冲突域,端口上只有一台设备,不会发生冲突。因此,交换机和设备之间可以采用全双工通信------发送和接收可以同时进行,互不干扰。

全双工意味着CSMA/CD彻底失效。 在全双工模式下,载波监听和碰撞检测都变得毫无意义------因为根本没有碰撞的可能。设备可以随时发送数据,不需要先听信道是否空闲。

比喻

半双工是对讲机------一个人说完了,另一个人才能说。

全双工是打电话------双方可以同时说、同时听,互不干扰。


机制二:自学习算法 ------ 交换机怎么学会转发?

交换机的核心任务是把帧精准地转发到目的设备所在的端口 。要做到这一点,交换机必须建立一张 MAC地址表(也叫转发表),记录每个MAC地址对应哪个端口。

自学习算法的核心 :交换机通过观察收到的帧的源MAC地址来学习,而不是被动配置。

学习过程

  • 当交换机从某个端口收到一帧时,它读取帧的源MAC地址
  • 它将这个MAC地址和端口的对应关系写入MAC地址表
  • 以后如果有帧的目的MAC地址匹配这个条目,交换机就知道该从哪个端口转发

转发过程

  • 收到一帧,读取目的MAC地址
  • 查找MAC地址表
    • 找到匹配:只从对应端口转发(精准转发)
    • 没找到:广播到所有端口(泛洪),等待回复学习

举个栗子:

假设交换机刚开机,MAC地址表为空。

场景:A(端口1)第一次给B(端口3)发送数据

  1. A发送帧:源MAC=A,目的MAC=B
  2. 交换机从端口1收到帧
  3. 交换机学习:MAC=A 在端口1上,写入MAC地址表
  4. 交换机查找目的MAC=B:表中没有
  5. 交换机泛洪:把帧复制到所有端口(除端口1)
  6. 只有B会收下这个帧(因为目的MAC是B)
  7. B可能回复A:源MAC=B,目的MAC=A
  8. 交换机从端口3收到B的回复
  9. 交换机学习:MAC=B 在端口3上,写入MAC地址表
  10. 交换机查找目的MAC=A:找到了,在端口1
  11. 交换机精准转发:只从端口1发出去

此后,A和B之间的通信都是精准转发,不再打扰其他端口上的设备。

自学习算法的优势

  • 零配置:不需要人工配置,自动学习
  • 动态适应:设备换端口后,交换机会重新学习
  • 时效性:MAC地址表条目有老化时间,超时未刷新的条目会被删除

机制三:缓存转发 ------ 存储转发与直通转发

交换机收到一帧后,如何处理再转发?有两种主流方式:

转发方式 做法 优点 缺点
存储转发 先收下完整一帧,校验正确后再转发 能过滤错误帧 引入等待延迟
直通转发 一读到目的MAC地址(前6字节)就立刻转发 延迟极低 可能转发错误帧

现代交换机普遍采用存储转发,因为网络带宽提升后,校验带来的延迟可以接受,而过早转发错误帧会浪费下游带宽。


4.共享式以太网 vs 交换式以太网

对比维度 共享式以太网 交换式以太网
核心设备 集线器 交换机
设备工作层次 物理层 数据链路层
冲突域 所有端口共用一个 每个端口独立
通信模式 半双工 全双工
介质访问控制 需要CSMA/CD 不需要
冲突 存在 不存在
带宽利用 所有设备共享 每个端口独享
安全性 所有设备都能收到所有帧 精准转发,别人收不到

简而言之:共享式以太网解决"能不能通信",交换式以太网解决"能不能高效通信"。


5.以太网的MAC帧格式

交换机处理的是帧。那么以太网帧到底长什么样?这就是以太网的MAC帧格式。

1.以太网V2的MAC帧格式

目前最广泛使用的以太网帧格式是以太网V2 。一帧由五个字段组成:

字段 长度 含义
目的MAC地址 6字节 帧发给谁
源MAC地址 6字节 帧是谁发的
类型 2字节 上层协议类型(IPv4=0x0800,ARP=0x0806等)
数据 46~1500字节 网络层传来的数据报
FCS(帧检验序列) 4字节 CRC校验码,检查帧是否出错

2.前导码的作用

在MAC帧前面,还有8字节的前导码 ,它不是帧的一部分,而是物理层为接收方提供的"时钟同步信号"。

前导码的组成

部分 长度 内容 作用
同步码 7字节 10101010...(交替的1和0) 让接收方的时钟和发送方同步
帧起始定界符 1字节 10101011(最后两位是11) 告诉接收方"帧从这里开始"

为什么需要前导码?

因为发送方和接收方的时钟可能略有偏差。前导码用一组规律跳变的比特(10交替),让接收方用这些跳变来校准自己的时钟。最后一个字节用连续两个1作为"帧开始"的标志。

比喻:两个人打电话,正式说话之前先说一句"喂喂喂,听得到吗?"前导码就是这句"喂喂喂",让接收方确认信号正常、时钟同步,然后开始正式通信。


3.无效的MAC帧

接收方收到一帧后,需要判断帧是否有效。以下情况会被视为无效MAC帧,直接丢弃:

无效类型 判断标准 原因
帧太短 长度 < 64字节 冲突碎片或传输错误
帧太长 长度 > 1518字节 超长帧,不合规
CRC校验失败 FCS不匹配 数据在传输中出错
字节不对齐 帧长度不是整数字节 传输被中断

注意 :交换机在存储转发模式下,会自动过滤无效帧------它先完整接收一帧,验证CRC无误后才转发。这也是为什么存储转发比直通转发更可靠。


📌 小结:交换式以太网用交换机替换集线器,每个端口成为一个独立的冲突域,冲突彻底消失。交换机的核心机制------全双工通信、自学习算法和存储转发------让以太网从"所有人共用一根线"进化为"每台设备独享一条路"。而V2帧格式定义了以太网帧的统一标准,前导码负责时钟同步,无效帧被直接丢弃,确保网络层收到的数据是完整可靠的。
📌 下一篇预告:交换机解决了冲突,但广播帧仍然会发给所有端口。当网络规模扩大,广播风暴成为新问题。如何隔离广播域?这就是VLAN(虚拟局域网)的登场。

祝你有开心的一天

相关推荐
LT101579744412 小时前
2026年自动化性能测试平台选型:持续集成与常态化测试落地指南
运维·ci/cd·自动化
樱桃花下的小猫12 小时前
幻兽帕鲁 - 服务器管理员权限与 GM 命令完全指南
服务器·幻兽帕鲁·新手友好·云鸢互联·零门槛一键开服·幻兽帕鲁服务器·幻兽帕鲁游戏服务器管理员教程
爱喝水的鱼丶12 小时前
SAP-ABAP:变量、常量、结构与内表声明(10篇博客合集) 第八篇:复杂业务场景下的声明组合:结构嵌套内表、内表包含结构的实现方法
运维·数据库·学习·算法·sap·abap
深邃-12 小时前
【Web安全】-企业资产信息收集(2):子域名查询,小程序和APP收集
计算机网络·安全·web安全·网络安全·小程序·系统安全·fofa
艾莉丝努力练剑12 小时前
【Linux网络】Linux 网络编程:传输层TCP(一)
linux·运维·服务器·网络·tcp/ip·计算机网络
lys0796200012 小时前
kali linux 配置固定IP
linux·网络·tcp/ip
Cx330❀12 小时前
【Linux网络】从以太网碰撞到 Socket 套接字与网络字节序的深度解析
xml·linux·运维·服务器·开发语言·网络·c++
Pocker_Spades_A12 小时前
没公网IP怎么远程连数据库?PostgreSQL + cpolar,在任何网络环境下都能连上
网络·数据库·tcp/ip
Zzzzmo_12 小时前
【网络原理】HTTP/HTTPS协议
计算机网络·http·https