🌐 第五章 以太网与无线局域网
📄 一句话概括

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

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 去表里查:

③ 老化(aging)

表项有寿命(常见默认约 300 秒)。到点还没再见到这个号,就把它删掉;下次见到再重新学。

这一条看起来最不起眼,但它才是"插上就通、想换就换"的原因:笔记本从会议室抱回工位、设备插到另一个网口、甚至换了一台机器——交换机自己会适应,不需要任何人改配置。

💡 顺序不能反:先学源,再查目的

为什么一定是这个顺序?因为"我在哪个口"这个信息只能从这一帧的来路得知——过完这一帧就没了。所以必须先趁帧还在手上,把源地址那一笔账记下来,再去处理"这帧该去哪儿"。

⚠️ "泛洪"和"广播"不是一回事
  • 广播是发送方的行为:它把目的地址写成全 F,意思就是"发给这儿所有人"。
  • 泛洪是交换机的行为:它查不到目的口(或收到广播帧)时,只能先到处送一份试试。

一个是"我要广播",一个是"我不知道该送哪"。所以交换机越快、表学得越全,泛洪就越少——学会了就不需要到处问。

三、三个必须记住的性质

① 每个端口是一个独立的冲突域(收 5.8)

一个口直接对一个终端,这段链路上只有他俩;双绞线又收发各一对(收 5.5)→ 可以同时收发=全双工,物理上不可能撞。所以 CSMA/CD 在这条线上没有存在意义——这就是 5.8 说的"它被关掉了"的机制来源。

② 整台交换机默认还是一个广播域(收 3.9、5.8)

广播帧照样被泛洪到所有口。交换机切了冲突域,但没切广播域——这两件事它只管了一半。

要让广播只在一部分口里跑,得用 VLAN(虚拟局域网,标准是 IEEE 802.1Q,收 5.3)。所以"公司为什么要划 VLAN"的本意,不是为了隔离故障,是为了隔离广播:

③ 它是透明设备:不改帧里的任何东西

交换机只读帧头、只挑端口,帧里的源 MAC、目的 MAC、数据,一个字节都不改。

对比一下路由器(收 3.2 双层门牌、5.6"帧里的 MAC 每经一个路由器换一套"):

二层交换机 路由器
看什么 目的 MAC(帧头) 目的 IP(数据区里)
改不改帧 完全透明,一个字节不改 换一整套 MAC 头(IP 不变)
管的范围 一段网络内部 网络与网络之间
广播域 不切 切(每个口一个网段)
形象说法 原样递过去 重新寄一次

一句话:交换机管"这一段里怎么送",路由器管"要不要送到别的段去"。 (正好是 5.1 那个判据的落地版:同网段 → 交换机直接送;不同网段 → 交给默认网关)

四、怎么用它把网建起来(本节的正题)

最小可用的以太网:一台交换机 + 几台终端,双绞线插上,就是 2.4 那个"组网四步"里最简单的一种。

要长大,有四种手段:

需求 手段 要注意什么
端口不够 级联(一台的上联口接另一台的普通口) 每多一级多一份延迟,级数别堆太多;上联口不要接成环
想更快/更稳 链路聚合(多根线捆成一条,如 802.3ad / LACP) 加带宽 + 一条断了别的顶上;两端都要配
多台当一台管 堆叠(专用堆叠线/堆叠口) 管理上是一台,配置一次全生效
要分层 树型三层:接入 → 汇聚 → 核心(收 5.7) 接入层接终端并划 VLAN,核心层只做高速转发

两个必须盯住的坑:

选型看什么(收 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 做线速转发(用硬件查路由表),所以公司里的"核心交换机"通常是三层设备。

为什么不能只用二层交换机? 因为二层是扁平的:

所以现实里的分工是:

二层交换机管"同一段里怎么送"(快、便宜、不用思考); 路由器 / 三层交换机管"段与段之间怎么走"(慢一点、贵、要思考)。

这也正好是 1.3 那句"交换机管里、路由器管外"的正式说法。

六、Demo58:亲手看见 MAC 地址表与泛洪

目标:不买网管交换机,也能确认"交换机是靠一张学出来的表在转发",并且亲眼看一次泛洪。

  1. 看清当前的邻居名册(PowerShell):arp -a(收 3.16、5.4)。记下现在有几条。
  2. 清掉本机邻居缓存(管理员):netsh interface ipv4 delete neighbors → 再 arp -a 应该是空的或几乎空的。
  3. 给同网段里一个"不存在"的地址发一次: ping 192.168.1.222(换成你本网段里没人用的号,收 3.10:避开 .0 和 .255) → 会超时,这是正常的。但请注意:arp -a 里会多出一条"192.168.1.222 → 无效 / 不完整"的记录。 → 为什么:ARP 请求天生是广播帧(收 3.9、3.16),它被交换机泛洪到了所有口,只是没人应答。
  4. 再给一个真实存在的设备发一次:ping 你的默认网关(收 3.12),或同屋另一台电脑。 → arp -a 里这条记录变成完整(带真实 MAC)。 → 两次的差别就在这:第二次,交换机表里已经学到了"这个 MAC 在哪个口",帧不再泛洪,而是定向送过去——这就是"学习"的效果。
  5. 看家用路由器的"设备列表":浏览器进 192.168.x.1(家用一体机的管理页),找"已连接设备 / DHCP 客户端列表"。 → 这一页其实就是交换机眼里的终端名册(等价于它的 MAC 表 + DHCP 租约,收 3.12)。 → 然后把家里一台设备换到另一个网口(或拔下再插回),过一会儿刷新:它换了位置,功能一点不受影响——这正是老化 + 重新学习在工作。
  6. 抓一次泛洪的现场(Wireshark,收 5.6):过滤器写 arp。 → 你会看到 ARP 请求的目的 MAC 是 全 F 的广播帧(收 5.2)——这个帧被交换机从除来源口外的所有口送出,这就是泛洪; → 而 ARP 应答是单播,只回到提问者那一个口。一广播、一单播,正好把"泛洪 / 定向"两种转发都看到了。
  7. (有网管交换机才做)看 STP:进管理页找 生成树(STP / RSTP),通常会显示"根桥是谁、哪个口被 Block(阻塞)"。 → 那个被阻塞的口,就是"物理还在、逻辑已剪掉"的备用路(收 5.7)。
  8. (可选)看端口统计:网管交换机管理页一般有每口的收发字节数、CRC 错误数。 → 排障套路升级版:某个口的错误数一直涨,先换线、再换口(这是 5.5"看灯"的进阶版)。
  9. (可选)搜自己的 MAC:getmac /v 拿到本机 MAC(收 5.4),去网管交换机的 MAC 表里搜——能搜到,就说明"这台机器挂在哪个口"这件事,交换机是真的记着。

七、30 秒实验

八、常见误区

  1. "二层交换机像路由器一样认得 IP。" —— 它只看 MAC 帧头,IP 写在数据区里,它根本不看。要看 IP,得靠路由器或三层交换机。
  2. "交换机会改帧里的 MAC。" —— 完全透明,一个字节都不改。改 MAC 的是路由器(收 3.2 双层门牌)。
  3. "交换机把广播也切开了。" —— 默认不切。广播帧照样泛洪到所有口;要切得用 VLAN(802.1Q)。
  4. "交换机的表要人工配置。" —— 不用。全靠"学习 + 老化"自动维护,所以插上就通。
  5. "泛洪就是广播。" —— 泛洪是交换机的行为(查不到目的口时的兜底),广播是发送方的行为(目的地址写全 F)。来源不同,只是结果都表现为"很多口都收到一份"。
  6. "交换机越便宜越好。" —— 便宜的非网管机型没有 VLAN、没有 STP。真有需要接成环的时候,没有 STP 的交换机就是一台广播风暴发生器。
  7. "端口多就等于带宽大。" —— 受交换容量(背板带宽)限制,标称"8 口千兆"不等于能同时跑满 8 Gbps。
  8. "MAC 表可以无限装。" —— 表有容量;满了或被灌满(MAC 泛洪攻击),交换机就退化成集线器(一切都要泛洪)。
  9. "有了二层交换机就不需要路由器了。" —— 二层是扁平的:不切广播域、不懂 IP。网络要分成多段、要连互联网,必须有路由器或三层交换机。
  10. "交换机和集线器差不多,只是口多、快一点。" —— 本质区别是看不看帧头:集线器是物理层设备、所有口共用一个冲突域;交换机是链路层设备、每口一个冲突域(收 5.2、5.8)。
  11. "交换机像集线器一样,收到的帧所有口都会发出去。" —— 那只是表还没学会时的临时状态。学会之后,绝大多数帧都是只从该去的那个口送——这正是它比集线器快得多的原因。

九、动手自测

❓ 自测一下
  1. 二层交换机看帧的哪一部分?它和"网桥"是什么关系?
  2. MAC 地址表是谁填的?靠哪两个机制维护?
  3. 收到一帧,交换机按什么顺序做哪三件事?
  4. 什么叫"过滤"?什么情况下交换机会泛洪?
  5. 泛洪和广播有什么区别?
  6. 为什么说"交换机切冲突域、但不切广播域"?想切广播域要靠什么标准?
  7. 交换机为什么叫"透明设备"?它和路由器在"改不改 MAC"上有什么差别?
  8. MAC 地址表满了会怎样?为什么会退化成集线器?
  9. "8 口千兆"的交换机一定能同时跑满 8 Gbps 吗?要看哪个指标?
  10. 二层交换机为什么替代不了路由器?(从"扁平"和"不认识 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,所以天生不会做"网络之间"的转发。因此跨网段、上互联网,必须由路由器或三层交换机来完成。

十、下一步学什么

相关笔记