news 2026/4/23 19:37:32

交换机(Switch)的工作原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
交换机(Switch)的工作原理

交换机(Switch)

一、一句话理解

交换机就是让同一个局域网内的多台设备互相通信的设备。


二、生活类比

电话总机(老式酒店前台) 房客A 要找 房客B: A 拨前台 → 前台把线接到 B 的房间 → A 和 B 通话 交换机干的就是这个活: 电脑A 要找 电脑B: A 发数据 → 交换机把数据精准送到 B → 通信完成

三、为什么需要交换机?

没有交换机之前:集线器(Hub)

┌──────────────────────────────────────┐ │ 集线器 Hub │ │ 口1 口2 口3 口4 口5 │ └──┬──────┬──────┬──────┬──────┬───────┘ │ │ │ │ │ 电脑A 电脑B 电脑C 电脑D 电脑E A 给 B 发消息: Hub 做法:把消息发给所有人(广播) A ──→ Hub ──→ B ✅ 收到 ──→ C ❌ 不是给我的,丢掉 ──→ D ❌ 不是给我的,丢掉 ──→ E ❌ 不是给我的,丢掉 问题:浪费带宽、不安全、效率低 像在教室里大喊,所有人都听到了

有了交换机之后

┌──────────────────────────────────────┐ │ 交换机 Switch │ │ 口1 口2 口3 口4 口5 │ └──┬──────┬──────┬──────┬──────┬───────┘ │ │ │ │ │ 电脑A 电脑B 电脑C 电脑D 电脑E A 给 B 发消息: 交换机做法:只把消息发给 B A ──→ Switch ──→ B ✅ C(完全不知道) D(完全不知道) E(完全不知道) 像传纸条,只递给目标那个人

四、交换机怎么知道数据发给谁?——MAC 地址表

每台设备都有唯一的 MAC 地址

MAC 地址 = 网卡的"身份证号",出厂时就固定了 电脑A: AA:AA:AA:AA:AA:01 电脑B: BB:BB:BB:BB:BB:02 电脑C: CC:CC:CC:CC:CC:03

交换机的学习过程

第一步:交换机刚开机,MAC 地址表是空的 ┌──────────┬──────┐ │ MAC 地址 │ 端口 │ ├──────────┼──────┤ │ (空) │ │ └──────────┴──────┘ 第二步:电脑A 从端口1发了一个数据包 交换机记录:"A 的 MAC 在端口1" ┌─────────────────────┬──────┐ │ MAC 地址 │ 端口 │ ├─────────────────────┼──────┤ │ AA:AA:AA:AA:AA:01 │ 1 │ └─────────────────────┴──────┘ 此时不知道 B 在哪,先广播给所有端口 B 收到后回复,交换机又学到 B 在端口2 ┌─────────────────────┬──────┐ │ MAC 地址 │ 端口 │ ├─────────────────────┼──────┤ │ AA:AA:AA:AA:AA:01 │ 1 │ │ BB:BB:BB:BB:BB:02 │ 2 │ └─────────────────────┴──────┘ 第三步:以后 A 再给 B 发数据 交换机查表 → B 在端口2 → 直接从端口2发出 不再广播,精准投递!

五、交换机 vs 路由器

┌─────────────────────────────────────────────────────────┐ │ │ │ ┌──────────┐ ┌──────────┐ │ │ │ 交换机 │ │ 路由器 │ │ │ │ Switch │ │ Router │ │ │ └──────────┘ └──────────┘ │ │ │ │ 工作层级:第二层 工作层级:第三层 │ │ (数据链路层) (网络层) │ │ │ │ 识别:MAC 地址 识别:IP 地址 │ │ │ │ 功能:同一网络内 功能:不同网络之间 │ │ 设备互相通信 转发数据 │ │ │ └─────────────────────────────────────────────────────────┘

更直观的对比

交换机 路由器 ┌─────────────────┐ ┌────────────────────┐ │ 192.168.1.0/24 │ │ │ │ │ │ │ │ .100 ←→ .101 │ │ 192.168.1.x ←→ 互联网│ │ .101 ←→ .102 │ │ 网络A ←→ 网络B │ │ 同网段互相通信 │ │ 不同网络之间通信 │ └─────────────────┘ └────────────────────┘ 交换机 = 同一个小区内住户互相串门 路由器 = 从小区出去,到另一个小区或外面的世界

六、实际网络中的位置

家庭网络(小规模)

互联网 │ ┌─────┴─────┐ │ 路由器 │ ← 内置了交换机功能(LAN口就是) │ (多合一) │ └─┬──┬──┬──┬┘ │ │ │ │ ← 这4个LAN口本质就是一个小交换机 PC 手机 电视 打印机

公司网络(大规模)

互联网 │ ┌─────┴─────┐ │ 核心路由器 │ └─────┬─────┘ │ ┌─────┴─────┐ │ 核心交换机 │ ← 高性能,连接各楼层 └──┬─────┬──┘ │ │ ┌──────┴┐ ┌─┴──────┐ │楼层交换机│ │楼层交换机│ ← 每层一个,连接该层设备 └──┬──┬─┘ └─┬──┬───┘ │ │ │ │ PC PC PC PC ← 员工电脑

为什么公司要单独用交换机?

路由器 LAN 口:通常只有 4~8 个 公司有 200 台电脑怎么办? 路由器(4口) │ 交换机(48口)── 连48台电脑 │ 交换机(48口)── 连48台电脑 │ 交换机(48口)── 连48台电脑 ... 交换机就是用来"扩展端口数量"的

七、交换机的种类

┌─────────────────┬───────────────────────────────────┐ │ 类型 │ 说明 │ ├─────────────────┼───────────────────────────────────┤ │ 非网管交换机 │ 即插即用,不能配置 │ │ (傻瓜交换机) │ 家里/小公司用,便宜 │ ├─────────────────┼───────────────────────────────────┤ │ 网管交换机 │ 可以配置,支持 VLAN、监控等 │ │ │ 企业用,贵 │ ├─────────────────┼───────────────────────────────────┤ │ 三层交换机 │ 交换机 + 路由功能 │ │ │ 既能交换又能路由,大企业核心用 │ └─────────────────┴───────────────────────────────────┘

八、总结

┌──────────┬──────────────────────────────────┐ │ 设备 │ 干什么的 │ ├──────────┼──────────────────────────────────┤ │ 集线器 │ 无脑广播(已淘汰) │ │ Hub │ │ ├──────────┼──────────────────────────────────┤ │ 交换机 │ 同一局域网内,精准转发数据 │ │ Switch │ 靠 MAC 地址识别设备 │ ├──────────┼──────────────────────────────────┤ │ 路由器 │ 不同网络之间,转发数据包 │ │ Router │ 靠 IP 地址寻路 │ └──────────┴──────────────────────────────────┘ 一句话: 交换机解决的是 "局域网内谁找谁" 的问题 路由器解决的是 "数据包怎么从一个网络到另一个网络" 的问题

后记

2026年4月23日于上海,在opus 4.6辅助下完成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 19:35:20

别再死记硬背了!用ArcGIS Pro搞定兰伯特等角圆锥投影,手把手教你为南极科考图选对标准纬线

南极科考地图实战:ArcGIS Pro中兰伯特等角圆锥投影的精准应用 南极大陆的特殊地理形态让传统地图投影束手无策——当墨卡托投影把南极拉伸成环绕整个地图底边的长条,当等距方位投影导致大陆轮廓严重变形,科研人员需要的是一套既能保持真实形状…

作者头像 李华
网站建设 2026/4/23 19:34:26

debian12安装GCC15

debian12安装GCC15 前几天想把boost里面的占位写替换成fmt::format,结果format非要依赖第三方库,还需要vcpkg,而且c的vcpkg包管理真的太烂了,和golang差距比天大,最后看到C20里面是有format包集成了,但是需…

作者头像 李华
网站建设 2026/4/23 19:31:22

我对C语言的分支语句的理解:

在编写程序时,我们经常需要根据不同的条件执行不同的代码,这种“做选择”的逻辑,在C语言中由分支语句实现。分支语句分为两种 if 语句和 switch 语句,它们是程序判断逻辑。一、什么是分支语句分支语句也叫选择结构,作用…

作者头像 李华