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

前面几节都在讲这张表怎么被写进去(登记、修改、老化),本节换个角度:它在设备上长什么样、怎么被管。第一件要澄清的事是——这张表默认是"自动管理"的:学、老化、改写全都由交换机自己完成,管理员一个字都不配,它也能正常工作。所以这里的"管理"不是"把它配出来",而是监督它、必要时纠偏。管理动作只有四个字:看(把表读出来)、定(把该固定的固定、该限制的限制)、调(老化时间与上限)、清(排障时清掉重学)。而什么时候该动手?看这张表的三种病:缺(该有的没有 → 泛洪变多、首包变慢)、多(有了不该有的 → 表被灌满、退化成集线器)、乱(位置不对 → 漂移、时通时断)。三种病对应三种动作:补上缺的、去掉多的、改正乱的。而管好它的全部收益就一句话:表越准,泛洪越少、转发越快、越安全。

📝 本节和前面几节的关系

5.9 讲"凭一张表决定往哪送",5.10 讲"内部怎么把帧搬过去",5.11 讲"不认识路时怎么办",5.12 讲"表怎么被写",5.13 讲"这件事由谁执行、登的是谁"。本节收口到运维视角:这张表在设备上的样子、它的旋钮、它的故障与处置。

  • 5.12 二层交换机的操作(以太帧发送后的MAC地址表的登记):讲了动态/静态表项、老化与容量的机制;本节讲这些机制在设备上怎么被查看、调整和干预
  • 5.13 二层交换机的操作(接收以太帧后的MAC地址表的登记):登记由接收侧执行——所以表里的内容完全由流量决定,这也是"管理只能是监督与纠偏"的根本原因
  • 5.11 二层交换机的操作(Unknown单播数据帧、泛洪):表的质量直接决定泛洪量;本节把"表的质量"变成可检查、可干预的指标
  • 5.9 创建以太网网络(二层交换机):MAC 表容量与 MAC 泛洪攻击——本节给出限每口数量的具体手段(端口安全)
  • 5.10 二层交换机的操作(二层交换机的数据传输):队列、尾丢弃、流控;本节讲的"未知单播抑制"就是作用在流量侧的旋钮
  • 3.23 对必要的设置进行自动设置(DHCP):家用路由器里的"MAC-IP 绑定"是DHCP 层的固定分配,与二层静态 MAC 表项不是一回事(本节专门纠这一个误区)
  • 3.16 将IP地址与MAC地址对应(ARP):主机侧也有两张能"看"的表(arp -a),排障时与交换机侧对照看(收 5.12)
  • 5.3 以太网标准(IEEE802委员会):802.1Q 让同一张表按 VLAN 分区;802.1X 是比端口安全更进一步的"先认证再放行"

一、先澄清一件事:这张表是"自动管理"的

拿它和三层那个"表"比一下就清楚了:

对比 主机的路由表(三层) 交换机的MAC 地址表(二层)
能不能全靠手工配 能(静态路由可以撑起整个网络) 不能——内容是学出来的,静态项只是少量补充
谁来填 路由协议 + 管理员 流量本身(收到的每一帧的源 MAC,收 5.13)
内容过期了怎么办 协议重新收敛 / 静态的不会过期 老化自动删除,下次再学

自动管理包含三件事,全都不要人管:

  1. 学习:收到帧就写/刷新(收 5.12)
  2. 老化:约 300 秒不说话就删掉(收 5.12)
  3. 漂移纠正:设备换了口,表项自动改写(收 5.12)
❗ 记住这一刀

这条"全自动"的设计,正是二层网络"插上就通、零配置"的另一面。 也正因为如此,本节所说的"管理"不是配置表的内容(你也没法配置它), 而是——监督它有没有长歪、并在必要时出手纠偏。

管理员真正会动手的场合只有三种:要固定(静态)、要限制(端口安全)、要排障(看/清/查漂移)。

二、表里的三类表项

这张表不是"一种东西一视同仁",它里面同时住着几种来源不同的表项:

类型 谁写的 会老化吗 典型用途 常见查看过滤条件
动态 dynamic 交换机自己学 会(约 300 秒) 普通终端(电脑、手机、打印机) dynamic
静态 static 管理员手工写 不会 服务器、打印机、上行口;也用来"钉住"易漂移的表项 static
安全 secure / sticky 端口安全机制 视配置 限制每口可学的 MAC;sticky 把第一次学到的自动转成静态 secure
系统表项 设备自身 不会 交换机自己的 MAC、CPU 口、管理口 self(部分设备默认显示)
组播表项 协议 / IGMP snooping 会 某个组播组挂在哪些口上(收 3.9·5.11) multicast
💡 三类表项,三种"命运"
  • 动态表项:占绝大多数,会自己来、也会自己走——它反映的是"最近谁在说话"
  • 静态表项:只增不减,除非管理员删——它的风险是写错之后不会自愈
  • 系统/组播表项:反映的是设备自己(而不是接在上面的终端),一般不用管,但排查"这个 MAC 是谁"时要认出来

三、这张表在设备里长什么样

几个值得知道的实现细节:

问题 答案
存在哪 交换芯片里的 CAM / TCAM 表(专用高速存储)
为什么查得快 硬件一次比对整张表(并行查找),不是逐行扫——所以查表几乎不花时间(收 5.10)
有多大 家用几 K(常见 4K / 8K)、企业几十万、运营商级上百万(收 5.9)
有 VLAN 时 按 VLAN 分表:同一个 MAC 可以同时存在于多个 VLAN 的不同口(收 5.3)
老化怎么算 每条有时间戳 + 交换机定时扫描,不是每条自己倒计时
📝 "表在芯片里"这件事有两个后果
  • 查表不影响转发速度——这是二层能"线速转发"的物质基础(收 5.10)
  • 表的大小是硬件决定的、改不了——所以容量不够时,只能靠管住"谁可以进表"来腾地方(见第六、七节)

四、管理的四个动作

把"管理"落到实处,其实只有四个动作:

动作 目的 手段 典型命令 / 位置
看 知道表里现在有什么 查表、查用量、查漂移 show mac address-table、… count、… move;家用路由器:设备列表
定 让该固定的固定、该限制的限制 静态表项、端口安全、sticky mac address-table static …、switchport port-security …
调 改变表的更新节奏与容量边界 老化时间、每口上限、未知单播抑制 mac address-table aging-time …、storm-control
清 排障时让表重新学一遍 只清动态表项 clear mac address-table dynamic

五、动作一「看」:把这张表读出来

网管型交换机(Cisco 风格;华为 / H3C 用 display mac-address):

show mac address-table              # 全部表项
show mac address-table dynamic      # 只看学来的
show mac address-table static       # 只看手工写的
show mac address-table count        # 用量:现有几条 / 上限几条
show mac address-table address 001a.2b3c.4d5e   # 查单个 MAC
show mac address-table move         # 漂移计数(部分厂商叫 flapping)

典型输出的一行长这样(收 5.12):

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
10      001a.2b3c.4d5e    DYNAMIC     Gi0/1
10      00e0.4c68.1234    STATIC      Gi0/24

家用路由器上的"已连接设备 / 终端管理 / DHCP 客户端列表",就是简化版的这张表: 通常显示 设备名 / IP / MAC / 连接方式(有线・2.4G・5G)/ 最近活跃时间 / 在线时长。

❗ 看表要看的三个东西
  1. 总量:接近上限了没有(count 里的"used / total")
  2. 类型:有没有不该出现的静态项或 secure 项(可能是别人偷偷加的绑定)
  3. 端口与漂移:同一个 MAC 是不是在反复换口(漂移计数猛涨 = 出事了,收 5.12)

只看"有没有某个 MAC"是不够的——排障时要看的是这张表的健康度。

六、动作二「定」:静态表项与端口安全

"定"是管理里唯一真正"写"表的动作,有三种手段:

手段 做什么 什么时候用 风险
静态表项 手工写死 MAC ↔ 口,永不老化 服务器、打印机、上行口;或用来"钉住"易漂移的项 写错就一直送错口,且不会自愈(收 5.12)
端口安全 port security 限制每个口最多能学几个 MAC;违规动作 = 保护(丢帧)/ 限制(丢帧 + 告警)/ 关闭(直接关端口) 接终端的口——防私接小交换机、防 MAC 泛洪攻击(收 5.9·5.11) 会误伤:口后面接了一台小交换机的,会被判违规
粘滞安全 sticky 把第一次学到的 MAC 自动转成静态(可写进配置) 想"半自动绑定"——省掉手工抄 MAC 设备换网卡后需要重新固化
⚠️ 最容易混的一刀:家用路由器的"MAC 绑定"不是这个

家用路由器里那个"MAC 与 IP 绑定",是DHCP 层的固定分配(三层)——它解决的是"这台设备每次都拿同一个 IP"。 而本节讲的静态 MAC 表项是二层的——它解决的是"这个 MAC 永远从某个口进出"。

两件事都不假,但层次完全不同:一个管 IP 的分配,一个管帧往哪个口送(收 3.23)。

💡 端口安全的三种违规动作,值得记住区别
  • 保护 Protect:超限的帧直接丢,不告警(最安静,排障时最容易被忽略)
  • 限制 Restrict:丢帧 + 产生告警/计数(推荐,既挡住又留证据)
  • 关闭 Shutdown:直接把端口关掉(最狠,通常会进 err-disable,需要人工或自动恢复)

一句话:要安静选保护,要证据选限制,要强硬选关闭。

七、动作三「调」:老化时间与边界

这一节的旋钮,5.12 提过原理,这里说怎么用:

旋钮 默认 调它会发生什么 什么时候需要调
老化时间 约 300 秒 调短:表更新鲜、设备换口纠正快,但泛洪变多;调长:泛洪少,但设备已换口时可能先把帧送到旧口 终端频繁移动的接入层可偏短;上行/汇聚可偏长
每口可学上限 不限 / 很大 限制后表不容易被灌满,但接小交换机的口会违规 接终端的口(配 1~4 个)、防私接
未知单播抑制 / 风暴控制 关 泛洪速率超阈值就限速或阻断 泛洪已经影响到整网时;⚠️ 有代价——真用户的第一个包也是"未知"(收 5.11)
表满时的行为 新号学不进 结果就是新设备永远泛洪(很多设备不报错) 只能靠容量规划与端口安全防(收 5.9)
⚠️ 调旋钮的两条原则
  1. 知道自己在改什么:老化时间与抑制阈值都是权衡,没有"越大越好"或"越小越好"
  2. 改了要能复原:记下原值再改——这是运维的基本纪律(show running-config 里能查回来)

八、动作四「清」:清表与重学

clear mac address-table dynamic      # 只清动态表项(静态/系统项不受影响)

什么时候清:

⚠️ 清表不是"无害操作"

清完之后表是空的,所有流量都会先泛洪,直到表重新长起来(几秒到几十秒)。 所以:不要在业务高峰期清表;清完马上留意泛洪流量。

顺带对照主机侧那张表(收 5.12):arp -a 看的 ARP 表用 netsh interface ip delete arpcache(清)、arp -d 清; 两边都清掉再复现问题,是最干净的排障起点。

九、这张表的三种病:缺、多、乱

日常遇到的和 MAC 表有关的问题,几乎都能归到这三类:

病 表现 根因 处置 预防
缺(该有的没有) 泛洪变多、第一个包变慢、arp -a 有而表里没有 单向流量、老化太快、设备不说话(收 5.11·5.13) 查流量方向(是否只有下行)、调长老化、关键设备静态绑定、让设备定期发心跳 让通信保持双向;关键设备静态
多(不该有却有) 表用量接近上限、性能掉、退化成集线器 MAC 泛洪攻击、私接小交换机/路由器、口后面挂着大量终端 端口安全(限每口 MAC 数)、清表、找出违规口 接终端的口配 1~4 个上限;禁用未用端口
乱(有但位置不对) 漂移计数猛涨、时通时断、某些设备偶尔收不到 环路(STP 没生效,收 5.7·5.10)、MAC 欺骗(收 5.12);无线漫游属正常 先查 STP 状态(有没有口该 Blocking 却在转发)、再查端口安全与动态 ARP 检测 开 STP/RSTP、端口安全、无用端口关掉
❗ 一句口诀:**缺了就补,多了就去,乱了就改**

而且这三类病的检查顺序建议固定下来: ① 先看总量(count,是不是快满了)→ ② 再看类型(有没有异常的静态/secure 项)→ ③ 再看漂移计数(有没有反复跳口)→ ④ 最后定位到具体端口。

十、动手 Demo:在自己家管一次这张表

🧪 Demo63:把家用路由器当交换机的"管理台"

目标:用你手上真正能操作的设备,把这四个动作走一遍(家用路由器就是一台"二层交换机 + 三层网关")。

第 1 步「看」:读表 进管理页的「已连接设备」/「终端管理」,读三件事: - 总量:现在几台? - 每个设备的 MAC(这就是表项的主键) - 「最近活跃时间」那一列 —— 它的差异就是"最近谁在说话"(长时间不动的,说明快被老化了)

第 2 步「看」本机视角,和路由器对照

Get-NetAdapter -Physical | Format-Table Name, Status, MacAddress, LinkSpeed
arp -a                          # 主机侧的 ARP 表(IP → MAC),收 3.16
Get-NetNeighbor                 # 上面那条的现代写法

找到自己的 MAC,去路由器列表里对一下——你能看到自己"挂在哪个口/哪一段"(收 5.13)。

第 3 步「定」(最轻量的一种):给设备改名/备注 把列表中某台设备的名字改成"我的电脑/客厅电视"。 这已经是最实用的"管理"了——把一张只有 MAC 的表变成可读的表,下次排障一眼就知道谁是谁。

第 4 步「定」:做一次 MAC-IP 绑定 找到「静态地址分配 / IP-MAC 绑定」,把某台设备的 MAC 与一个固定 IP 绑上,然后重启那台设备。 结果:它每次都拿同一个 IP。 ⚠️ 注意这是 DHCP 层的固定分配(三层),不是交换机 MAC 表的静态项(二层)——别混(见第六节的提醒)。

第 5 步「限制」:把一台不认识的设备挡住 看到列表里有你完全不认识的设备(邻居蹭网、旧设备)时: - 「禁止上网 / 黑名单」:这就是家用版的访问控制(思路与端口安全一致:认 MAC) - 有的路由器支持「只允许列表(白名单)」:这就是家用版的端口安全——没登记的一律进不来 - 部分设备支持「MAC 过滤 + 限速」,也是同一类手段

第 6 步「调」:观察老化时间的影响 在家用路由器上,通常看不到也改不了老化时间——但这正好可以观察后果: 让一台设备静置(比如关掉一个旧手机),过十几分钟再看列表,它可能就消失了(≈ 老化的效果,收 5.12)。

第 7 步(有网管交换机就做):清表重学

show mac address-table dynamic
show mac address-table count
clear mac address-table dynamic
show mac address-table dynamic     # 此刻应该是空的

然后什么都不做 → 表一直空;随便 ping 一下 → 表项一条条长回来(收 5.12)。 ⚠️ 清表后会有一阵泛洪,别在关键时段做(见第八节)。

第 8 步(有网管交换机就做):加一条静态表项

mac address-table static 00e0.4c68.1234 vlan 10 interface Gi0/24
show mac address-table static

加完拔掉那条线、再 ping 那台设备——流量会照旧往那个口送(哪怕线已经不对了)。 这一步就是"静态表项写错不会自愈"的现场(收 5.12)。

第 9 步:把"诊断顺序"跑一遍 按第九节的口诀来:看总量 → 看类型 → 看漂移 → 定位端口。 家里设备少,看不出发电量,但这个顺序本身要成为习惯。

⚠️ 关于第 5 步的提醒

只对自己家的设备做黑名单/过滤。 在公司或宿舍的网络里"发现陌生设备"时,先确认是不是同事或室友的设备—— 直接把人拉黑是件很冒犯的事,而且公司的接入控制也不归你管。

十一、30 秒实验:这张表的"老化计时器"就在你眼前

🧪 看时间戳的差异
  1. 打开路由器「已连接设备」列表
  2. 看「最近活跃时间」那一列(可能写成"最近活跃 / 在线时长 / 最后在线")
  3. 拿一部手机连着 Wi-Fi 刷一下网页,再看列表

你会看到两类读数的差别: - 刚刷过的手机:显示"几秒前 / 刚刚" - 一直静置的设备(智能插座、旧电视盒子):显示"几小时前"甚至已经不在列表里

这一列就是老化计时器的读数——活跃的不断被刷新,静置的正在往 300 秒的尽头走(收 5.12)。

表的全部内容都来自"谁最近说了话"。管好这张表,本质上就是知道谁在说话、谁在乱说、以及不让不该说的进来。

十二、常见误区

⚠️ 别踩这些
  1. 以为 MAC 表像路由表一样能全靠手工配。 内容是学出来的;静态项只是"钉住个别设备"的补充。
  2. 以为"管理 MAC 表"=配置表的内容。 主要是监督与纠偏——看、定、调、清四件事。
  3. 把家用路由器的"MAC-IP 绑定"当成交换机静态 MAC 表项。 前者是 DHCP 层的固定分配(三层),后者是二层的 MAC ↔ 口。
  4. 以为表越大越好。 关键是表准不准;容量只决定"被灌满时退化得多快"(收 5.9)。
  5. 以为静态表项越多越安全。 写错会一直送错口、且不会自愈;只给真正需要固定的设备用。
  6. 以为端口安全只防攻击、不惹麻烦。 它会误伤——口后面接了小交换机就会被判违规。
  7. 以为清表是无害操作。 清完表是空的,所有流量先泛洪;高峰期别做。
  8. 以为表满了会报错。 多数设备是悄悄退化成泛洪,不报错——所以要看 count(收 5.11)。
  9. 以为老化时间越短越好。 短=新鲜但泛洪多,长=泛洪少但可能先送旧口;这是权衡(收 5.12)。
  10. 以为表里所有表项都一样。 分动态 / 静态 / secure / 系统 / 组播,处理方式各不相同。
  11. 以为有 VLAN 时还是一张表管全部。 按 VLAN 分表,同一个 MAC 可以存在于多个 VLAN 的不同口(收 5.3)。
  12. 以为表里只有终端的 MAC。 还会记交换机自己的 MAC、CPU 口,以及组播组对应的多个口——排查"这个 MAC 是谁"时要先认出这些。

十三、动手自测

❓ 点开自我检查(先自己答,再看答案)
  1. 为什么说这张表是"自动管理"的?那"管理"到底管什么?
  2. 表里通常有哪几类表项?分别由谁写、会不会老化?
  3. 这张表存在设备的什么地方?为什么查表几乎不花时间?
  4. 管理的四个动作分别是什么?各自的目的?
  5. 看表的时候,最该看的是哪三个东西?
  6. "定"有哪三种手段?各适合什么场景、风险是什么?
  7. 家用路由器里的"MAC-IP 绑定"和交换机静态 MAC 表项有什么区别?
  8. 端口安全的三种违规动作有什么区别?
  9. 老化时间调长调短各有什么代价?
  10. 清表有什么副作用?什么时候该清?
  11. 这张表的"三种病"分别是什么?各自的处置是什么?
  12. 排查 MAC 表相关问题时,推荐的检查顺序是什么?

答案: ① 因为学习、老化、漂移纠正三件事全由交换机自己完成(收 5.12),管理员一个字都不用配。所以"管理"是监督与纠偏:看它有没有长歪、必要时出手——要固定(静态)、要限制(端口安全)、要排障(看/清/查漂移)。 ② 动态(交换机学,会老化约 300 秒)/静态(管理员写,不老化)/secure・sticky(端口安全机制,视配置)/系统表项(设备自身的 MAC 与 CPU 口,不老化)/组播表项(协议与 IGMP snooping 用,会老化)。 ③ 存在交换芯片的 CAM / TCAM里,靠硬件一次比对整张表(并行查找)——所以查表不占时间,这也是二层能线速转发的物质基础(收 5.10)。 ④ 看(知道表里有什么:查表/查用量/查漂移)/定(该固定的固定、该限制的限制:静态、端口安全、sticky)/调(改变更新节奏与容量边界:老化时间、每口上限、泛洪抑制)/清(排障时让表重新学)。 ⑤ 总量(是否接近上限)、类型(有没有不该有的静态/secure 项)、端口与漂移(同一 MAC 是否反复换口)。只看"有没有某个 MAC"是不够的。 ⑥ 静态表项(钉住服务器·打印机·上行口,或防漂移;风险=写错一直送错口且不自愈)/端口安全(限每口 MAC 数,防私接小交换机与灌表攻击;风险=会误伤接了小交换机的口)/粘滞安全 sticky(把学到的自动转成静态,省手工;风险=换网卡后要重新固化)。 ⑦ 前者是DHCP 层的固定分配(三层)——解决"每次拿到同一个 IP";后者是二层的 MAC ↔ 口 对应——解决"这个 MAC 永远从某个口进出"。层次完全不同(收 3.23)。 ⑧ 保护=丢帧不告警(最安静)/限制=丢帧 + 告警计数(推荐,有证据)/关闭=直接关端口(最狠,常进 err-disable)。 ⑨ 调短:表更新鲜、设备换口纠正快,但泛洪变多;调长:泛洪少,但设备已换口时可能先把帧送到旧口。默认约 300 秒是折中(收 5.12)。 ⑩ 清完表是空的,所有流量先泛洪(几秒到几十秒)。该清的场合:怀疑表项错、大批设备搬迁后、环路恢复后清残留。别在高峰期做。 ⑪ 缺(该有的没有)→ 泛洪变多、首包慢 → 查单向流量、调长老化、静态绑定;多(有了不该有的)→ 表满、退化成集线器 → 端口安全、限每口数量、找违规口;乱(位置不对)→ 漂移、时通时断 → 先查 STP 与环路,再查 MAC 欺骗。 ⑫ ① 看总量(count 是否接近上限)→ ② 看类型(有无异常静态/secure 项)→ ③ 看漂移计数(是否反复跳口)→ ④ 定位到具体端口。

十四、下一步学什么

相关笔记