前面几节都在讲这张表怎么被写进去(登记、修改、老化),本节换个角度:它在设备上长什么样、怎么被管。第一件要澄清的事是——这张表默认是"自动管理"的:学、老化、改写全都由交换机自己完成,管理员一个字都不配,它也能正常工作。所以这里的"管理"不是"把它配出来",而是监督它、必要时纠偏。管理动作只有四个字:看(把表读出来)、定(把该固定的固定、该限制的限制)、调(老化时间与上限)、清(排障时清掉重学)。而什么时候该动手?看这张表的三种病:缺(该有的没有 → 泛洪变多、首包变慢)、多(有了不该有的 → 表被灌满、退化成集线器)、乱(位置不对 → 漂移、时通时断)。三种病对应三种动作:补上缺的、去掉多的、改正乱的。而管好它的全部收益就一句话:表越准,泛洪越少、转发越快、越安全。
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) |
| 内容过期了怎么办 | 协议重新收敛 / 静态的不会过期 | 老化自动删除,下次再学 |
自动管理包含三件事,全都不要人管:
- 学习:收到帧就写/刷新(收 5.12)
- 老化:约 300 秒不说话就删掉(收 5.12)
- 漂移纠正:设备换了口,表项自动改写(收 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)/ 最近活跃时间 / 在线时长。
- 总量:接近上限了没有(
count里的"used / total") - 类型:有没有不该出现的静态项或 secure 项(可能是别人偷偷加的绑定)
- 端口与漂移:同一个 MAC 是不是在反复换口(漂移计数猛涨 = 出事了,收 5.12)
只看"有没有某个 MAC"是不够的——排障时要看的是这张表的健康度。
六、动作二「定」:静态表项与端口安全
"定"是管理里唯一真正"写"表的动作,有三种手段:
| 手段 | 做什么 | 什么时候用 | 风险 |
|---|---|---|---|
| 静态表项 | 手工写死 MAC ↔ 口,永不老化 |
服务器、打印机、上行口;或用来"钉住"易漂移的项 | 写错就一直送错口,且不会自愈(收 5.12) |
| 端口安全 port security | 限制每个口最多能学几个 MAC;违规动作 = 保护(丢帧)/ 限制(丢帧 + 告警)/ 关闭(直接关端口) | 接终端的口——防私接小交换机、防 MAC 泛洪攻击(收 5.9·5.11) | 会误伤:口后面接了一台小交换机的,会被判违规 |
| 粘滞安全 sticky | 把第一次学到的 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) |
- 知道自己在改什么:老化时间与抑制阈值都是权衡,没有"越大越好"或"越小越好"
- 改了要能复原:记下原值再改——这是运维的基本纪律(
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:在自己家管一次这张表
目标:用你手上真正能操作的设备,把这四个动作走一遍(家用路由器就是一台"二层交换机 + 三层网关")。
第 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 步:把"诊断顺序"跑一遍 按第九节的口诀来:看总量 → 看类型 → 看漂移 → 定位端口。 家里设备少,看不出发电量,但这个顺序本身要成为习惯。
只对自己家的设备做黑名单/过滤。 在公司或宿舍的网络里"发现陌生设备"时,先确认是不是同事或室友的设备—— 直接把人拉黑是件很冒犯的事,而且公司的接入控制也不归你管。
十一、30 秒实验:这张表的"老化计时器"就在你眼前
- 打开路由器「已连接设备」列表
- 看「最近活跃时间」那一列(可能写成"最近活跃 / 在线时长 / 最后在线")
- 拿一部手机连着 Wi-Fi 刷一下网页,再看列表
你会看到两类读数的差别: - 刚刷过的手机:显示"几秒前 / 刚刚" - 一直静置的设备(智能插座、旧电视盒子):显示"几小时前"甚至已经不在列表里
这一列就是老化计时器的读数——活跃的不断被刷新,静置的正在往 300 秒的尽头走(收 5.12)。
表的全部内容都来自"谁最近说了话"。管好这张表,本质上就是知道谁在说话、谁在乱说、以及不让不该说的进来。
十二、常见误区
- 以为 MAC 表像路由表一样能全靠手工配。 内容是学出来的;静态项只是"钉住个别设备"的补充。
- 以为"管理 MAC 表"=配置表的内容。 主要是监督与纠偏——看、定、调、清四件事。
- 把家用路由器的"MAC-IP 绑定"当成交换机静态 MAC 表项。 前者是 DHCP 层的固定分配(三层),后者是二层的 MAC ↔ 口。
- 以为表越大越好。 关键是表准不准;容量只决定"被灌满时退化得多快"(收 5.9)。
- 以为静态表项越多越安全。 写错会一直送错口、且不会自愈;只给真正需要固定的设备用。
- 以为端口安全只防攻击、不惹麻烦。 它会误伤——口后面接了小交换机就会被判违规。
- 以为清表是无害操作。 清完表是空的,所有流量先泛洪;高峰期别做。
- 以为表满了会报错。 多数设备是悄悄退化成泛洪,不报错——所以要看
count(收 5.11)。 - 以为老化时间越短越好。 短=新鲜但泛洪多,长=泛洪少但可能先送旧口;这是权衡(收 5.12)。
- 以为表里所有表项都一样。 分动态 / 静态 / secure / 系统 / 组播,处理方式各不相同。
- 以为有 VLAN 时还是一张表管全部。 按 VLAN 分表,同一个 MAC 可以存在于多个 VLAN 的不同口(收 5.3)。
- 以为表里只有终端的 MAC。 还会记交换机自己的 MAC、CPU 口,以及组播组对应的多个口——排查"这个 MAC 是谁"时要先认出这些。
十三、动手自测
- 为什么说这张表是"自动管理"的?那"管理"到底管什么?
- 表里通常有哪几类表项?分别由谁写、会不会老化?
- 这张表存在设备的什么地方?为什么查表几乎不花时间?
- 管理的四个动作分别是什么?各自的目的?
- 看表的时候,最该看的是哪三个东西?
- "定"有哪三种手段?各适合什么场景、风险是什么?
- 家用路由器里的"MAC-IP 绑定"和交换机静态 MAC 表项有什么区别?
- 端口安全的三种违规动作有什么区别?
- 老化时间调长调短各有什么代价?
- 清表有什么副作用?什么时候该清?
- 这张表的"三种病"分别是什么?各自的处置是什么?
- 排查 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 项)→ ③ 看漂移计数(是否反复跳口)→ ④ 定位到具体端口。
十四、下一步学什么
- ☑ 5.15 在发送数据的同时接收数据(全双工通信) —— 已学完:把前几节反复出现的"全双工"正面讲清——双工=这条链路允许"同一时刻两个方向都在跑"吗(半双工=轮流〔对讲机〕/全双工=同时〔打电话〕)、它靠物理多给一条路(百兆 1-2 发·3-6 收,千兆四对全用靠电路分离)、冲突消失 → CSMA/CD 关闭 → 帧格式一个字节没改(最小帧 64 与填充仍在)、带宽口径(每方向各 100、合计 200,单向速率不变)、自动协商靠 FLP 能力字通告速率与双工、本节最实用的一条铁律(速率能"听"出来、双工只能"谈"出来 → 要么两头都 Auto、要么两头都写死;"一头 Auto 一头写死"必然错开,是"网络莫名其妙很卡"最常见的成因)、双工不匹配的症状两端不同(半双工端 late collision 猛涨+吞吐断崖/全双工端冲突计数恒为 0、只有 CRC),以及无线天生半双工(双频路由器≠全双工)与光纤单纤双向 BiDi。见 在发送数据的同时接收数据(全双工通信)。
相关笔记
- 在发送数据的同时接收数据(全双工通信) —— 下一节:本节收口 MAC 表的运维视角,下一节把前几节反复出现的"全双工"正面讲完(每口一个冲突域的根子就在那)
- 二层交换机的操作(接收以太帧后的MAC地址表的登记) —— 上一节:登记由接收侧执行,所以表的内容完全由流量决定,管理只能是监督与纠偏
- 二层交换机的操作(以太帧发送后的MAC地址表的登记) —— 动态/静态、老化、容量的机制;本节讲这些机制怎么被查看、调整、干预
- 二层交换机的操作(Unknown单播数据帧、泛洪) —— 表的质量直接决定泛洪量;"缺"这种病的现象就在这里
- 创建以太网网络(二层交换机) —— 表容量与 MAC 泛洪攻击;本节给出具体手段(端口安全)
- 二层交换机的操作(二层交换机的数据传输) —— 队列与流控;"未知单播抑制"就是作用在流量侧的旋钮
- 如何连接(网络拓扑) —— 环路 → 漂移 → "乱"这种病;STP 是第一件要查的事
- 以太网标准(IEEE802委员会) —— 802.1Q 让表按 VLAN 分区;802.1X 是比端口安全更进一步的"先认证再放行"
- 对必要的设置进行自动设置(DHCP) —— 家用路由器的"MAC-IP 绑定"是 DHCP 层的固定分配,别与静态 MAC 表项混为一谈
- 将IP地址与MAC地址对应(ARP) —— 主机侧那张"能看"的表;排障时与交换机侧对照
- 明确网络的结构(网络结构图) —— 有了结构图,表里的"某个 MAC 挂在某个口"才能直接翻译成"在哪个房间"