5.2 说以太网有三代形态(总线 → 集线器 → 交换机),5.7 说今天的主流是星型与树型,5.8 说"要不要抢线"这件事已经被硬件消灭了——但把这三句话串起来的那台机器,一直没正面讲过。本节就讲它:二层交换机。 它是链路层设备,只看 MAC 帧头、完全不懂 IP,靠一张 MAC 地址表记住"哪个号在哪个口";收到一帧就做三件事:① 学习(把帧的源 MAC 与入端口记进表)、② 查表转发(目的 MAC 命中就从对应口定向送出去,若查出的口正好是帧进来的口就直接丢掉=过滤;查不到或是广播帧就从除入端口外所有口各送一份=泛洪)、③ 老化(表项有寿命,约 300 秒,过期自动删,所以设备换位置能自己适应)。用它把一堆终端接成星型,就是今天最常见的交换式以太网。三条性质必须记住:每个端口是一个独立冲突域(所以全双工、不用抢线)、整台默认仍是一个广播域(想切开得靠 VLAN)、它是透明设备(从不改动帧里的 MAC)。
前面四节一直在为这一节铺垫,但每次都只说了半句话:5.2 讲三代形态时说交换机"认得目的 MAC、只从该去的口送出"——凭什么认得?本节回答;5.7 讲星型凭什么赢、讲环路与 STP——中心那台设备究竟在干什么?本节回答;5.8 说交换机切冲突域但不切广播域——为什么会这样?本节回答。
- 5.2 负责传输数据的以太网(以太网概要):三代形态的那一栏;本节把"交换机"这一代完整展开
- 5.8 控制发送数据的时间(CSMA/CD):冲突域与全双工;本节解释"交换机凭什么不抢线"
- 5.7 如何连接(网络拓扑):星型、层次化树型、环路与广播风暴、STP;本节给出这些机制所在的设备
- 5.6 数据的格式(以太网的数据帧格式):帧头里的两个 MAC 与 FCS——交换机的"存储转发"要等 FCS 校验完才敢转
- 5.4 接口是哪个(MAC地址):MAC 是扁平无结构的号。正因为扁平,交换机只能"建一张表查表",做不了路由
- 5.5 常用的网络接口和线缆是什么(RJ-45接口与UTP线缆):每个口对应一条链路;交换机就是决定"谁跟谁直接通"的那台机器
- 5.3 以太网标准(IEEE802委员会):VLAN(802.1Q)、STP(802.1D)、PoE(af/at/bt)——从本节起,这些编号变成交换机上真有的开关
- 5.1 在同一网络中传输数据(以太网、无线局域网(Wi-Fi)):判据是"目标 IP AND 掩码",同网段走交换机、不同网段走网关——本节补上"同网段里那台交换机到底怎么走"
- 2.4 组成网络(局域网的构建):组网四步(备零件 → 连链路 → 发门牌 → ping 验收);本节是"备零件"里那台中心设备的展开
- 2.2 用于构建网络的设备(网络设备):设备=层的肉身——集线器是物理层那一格,交换机是链路层那一格
- 3.2 负责传输数据的网络分层(网络接口层与网际层):双层门牌——交换机不改 MAC,路由器换 MAC,本节把这条界线落到实处
- 3.9 接收方是1个还是多个(单播、广播、组播):广播地址与广播域——"泛洪"正是广播域的物理载体
- 3.16 将IP地址与MAC地址对应(ARP):ARP 请求天生是广播帧;Demo 里用它现场看一次泛洪
- 3.18 对应用程序的数据进行可靠传输(TCP):交换机丢一帧不通知、不重传;补上是 TCP 的事
一、先理清"网桥"和"交换机"的关系
交换机不是凭空出现的,它的前身叫网桥(bridge):只有两个口,用来把两段以太网接起来。网桥的关键改进是只转发该过的帧——同侧设备之间的帧根本不过桥。
这一下就把一个大的冲突域切成了两个小冲突域。这就是"切冲突域"最早的做法(收 5.8:交换机每口一个冲突域,本质就是把这招用到极致)。
于是有了最省事的一句定义:
交换机 = 多口网桥。 网桥只有 2 个口 → 交换机有 8 个、24 个、48 个口;网桥用软件跑 → 交换机用专用芯片跑(所以能做到线速)。 它们做的事是同一件:看 MAC 帧头,决定"从哪个口出去"。
所以交换机属于网络接口层(链路层)设备,和"数据帧"是同一层的东西(收 2.2 的"设备=层的肉身")。
IP 地址写在帧的数据区里面(收 5.6:帧=信封、IP 包=信)。交换机只拆信封、只看信封上那两行地址、不看信里写了什么。所以二层交换机对 IP、对 TCP、对 HTTP 一无所知——这是它快、也是它不够用的原因。
二、它凭什么认得路:MAC 地址表
交换机里面有一张表,本来就只有两列(实际还会多一列寿命):
| MAC 地址 | 端口 | 老化时间 |
|---|---|---|
| AA:AA:AA:AA:AA:01 | 1 | 300 秒 |
| BB:BB:BB:BB:BB:02 | 3 | 300 秒 |
最关键的一点:这张表没人心工配置过,是交换机一边干活一边自己学出来的。收到一帧,就做三件事:
① 学习(learning)
看帧里的源 MAC,把"这个号,是从这个口进来的"记进表(已存在就刷新寿命)。
"谁是发信人、在哪个口"这件事,是它从每一帧里顺手捡到的——不需要任何额外的协议、不需要你配。
② 查表转发(forwarding)
拿帧的目的 MAC 去表里查:
- 查到了 → 只从那一口送出去。如果查到的那口,正好就是帧进来的口(说明对方跟你挂在同一侧,根本不用你转),就直接丢掉——这叫过滤(filtering)。
- 查不到 → 只能先泛洪(flooding):从除入端口以外的所有口各送一份,碰运气。
- 目的是广播地址
FF:FF:FF:FF:FF:FF(收 3.9、5.2)→ 同样泛洪(广播本来就该送给所有人,但不送回给发的人自己)。
③ 老化(aging)
表项有寿命(常见默认约 300 秒)。到点还没再见到这个号,就把它删掉;下次见到再重新学。
这一条看起来最不起眼,但它才是"插上就通、想换就换"的原因:笔记本从会议室抱回工位、设备插到另一个网口、甚至换了一台机器——交换机自己会适应,不需要任何人改配置。
为什么一定是这个顺序?因为"我在哪个口"这个信息只能从这一帧的来路得知——过完这一帧就没了。所以必须先趁帧还在手上,把源地址那一笔账记下来,再去处理"这帧该去哪儿"。
- 广播是发送方的行为:它把目的地址写成全 F,意思就是"发给这儿所有人"。
- 泛洪是交换机的行为:它查不到目的口(或收到广播帧)时,只能先到处送一份试试。
一个是"我要广播",一个是"我不知道该送哪"。所以交换机越快、表学得越全,泛洪就越少——学会了就不需要到处问。
三、三个必须记住的性质
① 每个端口是一个独立的冲突域(收 5.8)
一个口直接对一个终端,这段链路上只有他俩;双绞线又收发各一对(收 5.5)→ 可以同时收发=全双工,物理上不可能撞。所以 CSMA/CD 在这条线上没有存在意义——这就是 5.8 说的"它被关掉了"的机制来源。
② 整台交换机默认还是一个广播域(收 3.9、5.8)
广播帧照样被泛洪到所有口。交换机切了冲突域,但没切广播域——这两件事它只管了一半。
要让广播只在一部分口里跑,得用 VLAN(虚拟局域网,标准是 IEEE 802.1Q,收 5.3)。所以"公司为什么要划 VLAN"的本意,不是为了隔离故障,是为了隔离广播:
- 财务部 20 台机器互相广播,不该让研发部 200 台也陪着收一遍
- 划了 VLAN,广播就只在本 VLAN 内泛洪
③ 它是透明设备:不改帧里的任何东西
交换机只读帧头、只挑端口,帧里的源 MAC、目的 MAC、数据,一个字节都不改。
对比一下路由器(收 3.2 双层门牌、5.6"帧里的 MAC 每经一个路由器换一套"):
| 二层交换机 | 路由器 | |
|---|---|---|
| 看什么 | 目的 MAC(帧头) | 目的 IP(数据区里) |
| 改不改帧 | 完全透明,一个字节不改 | 换一整套 MAC 头(IP 不变) |
| 管的范围 | 一段网络内部 | 网络与网络之间 |
| 广播域 | 不切 | 切(每个口一个网段) |
| 形象说法 | 原样递过去 | 重新寄一次 |
一句话:交换机管"这一段里怎么送",路由器管"要不要送到别的段去"。 (正好是 5.1 那个判据的落地版:同网段 → 交换机直接送;不同网段 → 交给默认网关)
四、怎么用它把网建起来(本节的正题)
最小可用的以太网:一台交换机 + 几台终端,双绞线插上,就是 2.4 那个"组网四步"里最简单的一种。
要长大,有四种手段:
| 需求 | 手段 | 要注意什么 |
|---|---|---|
| 端口不够 | 级联(一台的上联口接另一台的普通口) | 每多一级多一份延迟,级数别堆太多;上联口不要接成环 |
| 想更快/更稳 | 链路聚合(多根线捆成一条,如 802.3ad / LACP) | 加带宽 + 一条断了别的顶上;两端都要配 |
| 多台当一台管 | 堆叠(专用堆叠线/堆叠口) | 管理上是一台,配置一次全生效 |
| 要分层 | 树型三层:接入 → 汇聚 → 核心(收 5.7) | 接入层接终端并划 VLAN,核心层只做高速转发 |
两个必须盯住的坑:
- 环路:交换机之间接成环形 → 广播帧从所有口出去又绕回来 → 来回增殖 → 广播风暴,几秒内全网瘫(收 5.7)。所以网管型交换机默认开 STP / RSTP(IEEE 802.1D / 802.1w):物理上保留环、逻辑上剪成一棵树,主路断了立刻把备用路放开。
- 容量:所有端口加起来的总流量,不能超过交换机的交换容量(背板带宽)。一台标称"8 口千兆"的交换机,如果背板只有 4 Gbps,八个口同时满速是撑不住的——这就是"同样写着 8 口千兆,价格能差十倍"的原因之一。
选型看什么(收 5.3 的 PoE、5.5 的线):
| 看什么 | 怎么定 |
|---|---|
| 端口数与速率 | 够用再留 2~4 个余量(收 2.5 的"留余量") |
| 要不要 PoE | 有吸顶 AP、网络摄像头、IP 电话就要,认 802.3af / at / bt 标 |
| 网管型还是非网管型 | 要 VLAN / STP / 聚合 / 端口镜像 / 限速 → 必须网管型 |
| 交换容量与包转发率 | 看总带宽与"每秒能转发多少个最小帧",别只看单口速率 |
| MAC 表大小 | 大网络(几百台以上)或要防攻击时才需要留意 |
非网管型 vs 网管型:
| 非网管型 | 网管型 | |
|---|---|---|
| 特点 | 插上就通,零配置 | 有管理页面 / 命令行 |
| 能做 | 学习、转发、泛洪 | 以上全部 + VLAN、STP、链路聚合、端口镜像、限速、802.1X |
| 典型位置 | 家里、小办公室、工位末端 | 汇聚层 / 核心层、公司机房 |
| 一句话 | "傻瓜交换机" | "能划地盘、能看流量、能加冗余" |
表会用完吗?会。 MAC 地址表的容量是有限的(家用几 K 条、机房几十万条)。当表被填满、或者被人伪造大量源 MAC 灌表(这叫 MAC 泛洪攻击)时,新出现的号就学不进去 → 一切只能泛洪 → 交换机退化成集线器。所以网管型交换机上有端口安全(port security)这类功能:限制一个口最多能学几个 MAC。
五、它和"三层交换机"是什么关系
三层交换机 = 二层交换机 + 路由功能。外观同样是一排网线口,但内部能对不同 VLAN 做线速转发(用硬件查路由表),所以公司里的"核心交换机"通常是三层设备。
为什么不能只用二层交换机? 因为二层是扁平的:
- 所有口在同一个广播域(同一个网段)→ 终端一多,广播就多(收 3.8 分段三大好处里的"隔离广播")
- 它完全不认识 IP → 天生不会做"网络之间"的转发(收 3.7 的路由)
所以现实里的分工是:
二层交换机管"同一段里怎么送"(快、便宜、不用思考); 路由器 / 三层交换机管"段与段之间怎么走"(慢一点、贵、要思考)。
这也正好是 1.3 那句"交换机管里、路由器管外"的正式说法。
六、Demo58:亲手看见 MAC 地址表与泛洪
目标:不买网管交换机,也能确认"交换机是靠一张学出来的表在转发",并且亲眼看一次泛洪。
- 看清当前的邻居名册(PowerShell):
arp -a(收 3.16、5.4)。记下现在有几条。 - 清掉本机邻居缓存(管理员):
netsh interface ipv4 delete neighbors→ 再arp -a应该是空的或几乎空的。 - 给同网段里一个"不存在"的地址发一次:
ping 192.168.1.222(换成你本网段里没人用的号,收 3.10:避开.0和.255) → 会超时,这是正常的。但请注意:arp -a里会多出一条"192.168.1.222 → 无效 / 不完整"的记录。 → 为什么:ARP 请求天生是广播帧(收 3.9、3.16),它被交换机泛洪到了所有口,只是没人应答。 - 再给一个真实存在的设备发一次:
ping你的默认网关(收 3.12),或同屋另一台电脑。 →arp -a里这条记录变成完整(带真实 MAC)。 → 两次的差别就在这:第二次,交换机表里已经学到了"这个 MAC 在哪个口",帧不再泛洪,而是定向送过去——这就是"学习"的效果。 - 看家用路由器的"设备列表":浏览器进
192.168.x.1(家用一体机的管理页),找"已连接设备 / DHCP 客户端列表"。 → 这一页其实就是交换机眼里的终端名册(等价于它的 MAC 表 + DHCP 租约,收 3.12)。 → 然后把家里一台设备换到另一个网口(或拔下再插回),过一会儿刷新:它换了位置,功能一点不受影响——这正是老化 + 重新学习在工作。 - 抓一次泛洪的现场(Wireshark,收 5.6):过滤器写
arp。 → 你会看到 ARP 请求的目的 MAC 是 全 F 的广播帧(收 5.2)——这个帧被交换机从除来源口外的所有口送出,这就是泛洪; → 而 ARP 应答是单播,只回到提问者那一个口。一广播、一单播,正好把"泛洪 / 定向"两种转发都看到了。 - (有网管交换机才做)看 STP:进管理页找 生成树(STP / RSTP),通常会显示"根桥是谁、哪个口被 Block(阻塞)"。 → 那个被阻塞的口,就是"物理还在、逻辑已剪掉"的备用路(收 5.7)。
- (可选)看端口统计:网管交换机管理页一般有每口的收发字节数、CRC 错误数。 → 排障套路升级版:某个口的错误数一直涨,先换线、再换口(这是 5.5"看灯"的进阶版)。
- (可选)搜自己的 MAC:
getmac /v拿到本机 MAC(收 5.4),去网管交换机的 MAC 表里搜——能搜到,就说明"这台机器挂在哪个口"这件事,交换机是真的记着。
七、30 秒实验
- 数一次泛洪:
arp -a记下条数 →ping一个不存在的号 → 再arp -a。多出来的那条"无效"记录,就是泛洪的收据。 - 看一次学习:
ping网关成功,看arp -a里网关那条是完整的。你发出的帧,从"泛洪"变成了"定向",因为交换机学会了。 - 认一台交换机:家里的 Wi-Fi 路由器后面通常带 4 个网口——那 4 个口就是一台小交换机;而单个的"WAN 口"属于路由器那一侧。
八、常见误区
- "二层交换机像路由器一样认得 IP。" —— 它只看 MAC 帧头,IP 写在数据区里,它根本不看。要看 IP,得靠路由器或三层交换机。
- "交换机会改帧里的 MAC。" —— 完全透明,一个字节都不改。改 MAC 的是路由器(收 3.2 双层门牌)。
- "交换机把广播也切开了。" —— 默认不切。广播帧照样泛洪到所有口;要切得用 VLAN(802.1Q)。
- "交换机的表要人工配置。" —— 不用。全靠"学习 + 老化"自动维护,所以插上就通。
- "泛洪就是广播。" —— 泛洪是交换机的行为(查不到目的口时的兜底),广播是发送方的行为(目的地址写全 F)。来源不同,只是结果都表现为"很多口都收到一份"。
- "交换机越便宜越好。" —— 便宜的非网管机型没有 VLAN、没有 STP。真有需要接成环的时候,没有 STP 的交换机就是一台广播风暴发生器。
- "端口多就等于带宽大。" —— 受交换容量(背板带宽)限制,标称"8 口千兆"不等于能同时跑满 8 Gbps。
- "MAC 表可以无限装。" —— 表有容量;满了或被灌满(MAC 泛洪攻击),交换机就退化成集线器(一切都要泛洪)。
- "有了二层交换机就不需要路由器了。" —— 二层是扁平的:不切广播域、不懂 IP。网络要分成多段、要连互联网,必须有路由器或三层交换机。
- "交换机和集线器差不多,只是口多、快一点。" —— 本质区别是看不看帧头:集线器是物理层设备、所有口共用一个冲突域;交换机是链路层设备、每口一个冲突域(收 5.2、5.8)。
- "交换机像集线器一样,收到的帧所有口都会发出去。" —— 那只是表还没学会时的临时状态。学会之后,绝大多数帧都是只从该去的那个口送——这正是它比集线器快得多的原因。
九、动手自测
- 二层交换机看帧的哪一部分?它和"网桥"是什么关系?
- MAC 地址表是谁填的?靠哪两个机制维护?
- 收到一帧,交换机按什么顺序做哪三件事?
- 什么叫"过滤"?什么情况下交换机会泛洪?
- 泛洪和广播有什么区别?
- 为什么说"交换机切冲突域、但不切广播域"?想切广播域要靠什么标准?
- 交换机为什么叫"透明设备"?它和路由器在"改不改 MAC"上有什么差别?
- MAC 地址表满了会怎样?为什么会退化成集线器?
- "8 口千兆"的交换机一定能同时跑满 8 Gbps 吗?要看哪个指标?
- 二层交换机为什么替代不了路由器?(从"扁平"和"不认识 IP"两点说)
答案:
① 只看帧头里的 MAC(目的 MAC 与源 MAC),完全不看数据区里的 IP。交换机 = 多口网桥:做的事和网桥一样(看 MAC 帧头、决定从哪个口出去),只是口更多、用专用芯片跑得又快又便宜。 ② 交换机自己填,没人手工配置。靠学习(收到帧就把"源 MAC ↔ 入端口"记下来)与老化(表项有寿命,常见默认约 300 秒,到点没再见到就删)自动维护。 ③ 先学习(记源 MAC 与入端口)→ 再查目的 MAC(表里有就从对应口定向转发;若查出的端口就是入端口,则丢弃)→ 查不到或是广播就泛洪(除入端口外所有口各送一份)。 ④ 过滤=查到的目的口正好就是帧进来的那个口,说明对方在同一侧、不用转,于是直接丢掉。泛洪发生在:目的 MAC 查不到,或者目的是广播地址 FF:FF:FF:FF:FF:FF。 ⑤ 广播是发送方的行为(目的地址写全 F,本意就是发给所有人);泛洪是交换机的行为(查不到目的口时的兜底手段)。两者来源不同,结果都表现为"多个口各收到一份"。 ⑥ 因为交换机每个端口独立成一个冲突域(每口独享、全双工、不会再撞车,收 5.8),但广播帧仍会被泛洪到所有口,所以整台设备仍然只是一个广播域。要切开广播域得用 VLAN(IEEE 802.1Q)。 ⑦ 透明设备=它只读帧头、只挑端口,从不改动帧里的任何内容(源 MAC、目的 MAC、数据一个字节都不变)。路由器则相反:每过一跳要换一整套 MAC 头(因为要重新封装到下一段链路上),所以叫"重新寄一次"。 ⑧ 表满(或被伪造源 MAC 大量灌表,即 MAC 泛洪攻击)之后,新出现的目的 MAC 学不进去 → 查不到就只能泛洪 → 转发行为退化成"所有口都收到一份" = 集线器的行为。防范手段是端口安全(限制每个口能学几个 MAC)。 ⑨ 不一定。受交换容量(背板带宽)限制——背板只有 4 Gbps 时,"8 口千兆"在八个口同时满速是撑不住的;还要看包转发率(每秒能转发多少个最小帧)。 ⑩ ① 二层是扁平的:所有口在同一个广播域、同一个网段,终端一多广播就多,而二层交换机没有任何办法把广播挡住(除非划 VLAN);② 它只看 MAC、完全不懂 IP,所以天生不会做"网络之间"的转发。因此跨网段、上互联网,必须由路由器或三层交换机来完成。
十、下一步学什么
- ☑ 5.10 二层交换机的操作(二层交换机的数据传输) —— 已学完:本节最后那句"复杂度换到了'交换机怎么转发'",下一节就把它拆开看——三种转发模式(存储转发 / 直通式 / 无碎片)、一帧在交换机内部走的那四步、队列与拥塞、流控(背压 vs PAUSE 帧),以及 STP / 端口镜像 / 链路聚合 / VLAN 打标签这些实际操作。见 二层交换机的操作(二层交换机的数据传输)。
相关笔记
- 二层交换机的操作(二层交换机的数据传输) —— 下一节:把本节这台机器拆开看内部(三种转发模式、队列与拥塞、流控、STP 与镜像聚合)
- 负责传输数据的以太网(以太网概要) —— 三代形态里"交换机认得目的 MAC"那半句话;本节把它完整展开
- 控制发送数据的时间(CSMA/CD) —— 冲突域与全双工;本节解释"交换机凭什么不用抢线"
- 如何连接(网络拓扑) —— 星型、层次化树型、环路与广播风暴、STP;本节给出这些机制所在的设备
- 数据的格式(以太网的数据帧格式) —— 帧头里的两个 MAC 与 FCS;交换机的存储转发要等它校验完
- 接口是哪个(MAC地址) —— MAC 是扁平无结构的号;正因为扁平,交换机只能"建表查表"
- 常用的网络接口和线缆是什么(RJ-45接口与UTP线缆) —— 每条链路两头的端口;交换机就是决定"谁跟谁直接通"的那台机器
- 以太网标准(IEEE802委员会) —— VLAN(802.1Q)、STP(802.1D)、PoE(af/at/bt);从本节起它们是交换机上真有的开关
- 在同一网络中传输数据(以太网、无线局域网(Wi-Fi)) —— 同网段走交换机、不同网段走网关;本节补上"同网段里那台交换机怎么走"
- 组成网络(局域网的构建) —— 组网四步;本节是"备零件"里那台中心设备的展开
- 用于构建网络的设备(网络设备) —— 设备=层的肉身;集线器在物理层,交换机在链路层
- 如何构建网络(网络的设计) —— 设计五步与"留余量";本节把它落到端口数与容量上
- 负责传输数据的网络分层(网络接口层与网际层) —— 双层门牌:交换机不改 MAC,路由器换 MAC
- 接收方是1个还是多个(单播、广播、组播) —— 广播地址与广播域;泛洪正是广播域的物理载体
- 将IP地址与MAC地址对应(ARP) —— ARP 请求天生是广播帧;Demo 里用它现场看一次泛洪
- 对应用程序的数据进行可靠传输(TCP) —— 交换机丢一帧不通知也不重传;补上是 TCP 的事