
简介这是一份计算机网络课程的实验报告围绕Cisco Packet Tracer中交换机和集线器的模拟实验展开帮助初学者理解集线器的广播机制、交换机的自学习算法与MAC地址转发表以及二者在冲突域、广播域与网络性能上的差异。文档为单个doc文件大小1.34MB内含实验目的、配置过程、三种典型数据帧处理场景的观察记录以及四道思考题的详细解答。已有3401人学习下载。全篇结构清晰先演示集线器广播转发与交换机定向转发的区别再解释同源端口丢弃、未知目的广播、按转发表转发等关键细节最后总结扩大以太网规模时两类设备的性能影响与适用场景适合正在学习计算机网络、需要完成同类实验或准备期末考核的学生参考。1. 实验一交换机和集线器的工作原理——这个实验到底在验证什么很多教材的第一章都会放一个叫“交换机和集线器的工作原理”的实验讲的是以太网里两个最基础的转发角色。但说实话我见过不少读者在 Packet Tracer 里拖几个设备点两下运行看到集线器广播、交换机转发就以为懂了——真到机房面对一台傻瓜交换机和一个自称“集线器”的旧盒子反而说不清为什么抓包里会有重复帧、为什么 ping 会卡顿。这个实验真正要验证的不是“集线器会广播、交换机会查表”这两句结论而是让你亲眼看到一帧数据在链路上经过不同设备时哪些端口会收到、哪些不会收以及背后的冲突域和广播域怎么变化。这篇文章就按实验的常见做法拆开讲先立住理论模型再给出一套能用真实设备或抓包软件复现的步骤最后把最容易让人翻车的细节挑出来。适合网络初学者、刚入行的运维以及准备认证考试但没碰过真实设备的人——你能拿它当一份可以直接照着动手的脚本。2. 先立住理论集线器与交换机的转发模型和两个必须区分的域2.1 集线器物理层设备只会无脑复制集线器工作在 OSI 的物理层它不读帧里的 MAC 地址也不管帧是发给谁的。任何一个端口收到电信号它会把这个信号在除接收端口外的所有端口上重新发送一遍这就是常说的“泛洪复制”。从工作原理看集线器本质上是一根共享总线的物理封装所有连接在它下面的主机都站在同一条链路上去竞争介质。这个设计带来两个直接后果。第一同一时刻只能有一个端口发送数据否则就会产生冲突所以集线器是半双工模式整个冲突域里所有设备共享带宽。比如一台 100M 的集线器接 4 台主机理论上一台主机用的时候可以到 100M但如果两台同时发就要退避重传。第二集线器不会学习地址它没有任何内存来记录“哪个 MAC 在哪个端口”。所以无论广播帧还是单播帧一律复制给所有人。主机收到单播帧后要先判断目的 MAC 是不是自己不是就直接丢弃——但你抓包的时候依然能在别人的网卡上看到这些帧因为物理信号已经送过来了。2.2 交换机二层设备学地址、查表、按端口转发交换机工作在数据链路层它把集线器“不会思考”的短板补上了。交换机内部维护一张 MAC 地址表表项由“MAC 地址、端口、VLAN、老化时间”构成。初始状态下这张表是空的交换机收到一帧后会先学习源 MAC 和入端口的对应关系然后查目的 MAC如果表里有目的 MAC就只从对应端口转发出去这叫精确转发。如果表里没有目的 MAC交换机会把这个帧泛洪到除了入端口之外的所有端口这和集线器行为一样但只在“未知单播”时发生。如果目的 MAC 在入端口所在的那台主机上交换机直接丢弃不转发。所以交换机用“学习 查表”替代了“无脑复制”把一个冲突域里的所有主机拆成了一个个独立的端口每个端口是一个冲突域。端口之间可以同时全双工通信带宽不再被共享。注意交换机并没有隔离广播域广播帧目的 MAC 全 F和未知单播帧仍然会泛洪到同一 VLAN 的所有端口。2.3 冲突域和广播域用一张表说清两者本质区别很多实验做完了还是分不清这两个概念我一般在你动手前先给一张对比表后续抓包时会有用。对比项冲突域广播域定义同一时刻只能有一个设备发送数据的范围广播帧能到达的范围集线器整个集线器是一个冲突域整个集线器是一个广播域交换机每个端口是一个冲突域端口隔离同一 VLAN 内所有端口是一个广播域路由器每个接口分隔冲突域每个接口分隔广播域常见误区认为交换机把所有端口变成一个广播域错广播域不等于冲突域认为 VLAN 能隔离冲突域错VLAN 隔离的是广播域这张表可以当作实验的理论预期在集线器环境下任何一帧都进同一个冲突域所以抓包会看到大量重复帧在交换机环境下单播帧被精确转发不会出现在无关端口上但广播帧依然全网可见。验证就用第 3 章的拓扑。3. 动手搭实验用最小拓扑复现“集线器广播泛洪”与“交换机精确转发”3.1 实验拓扑与设备选择三台主机加一台集线器/交换机怎么接我建议的最小拓扑是三台 PC或者两条腿的笔记本加一台虚拟机也行分别接到集线器的 1、2、3 口另一套拓扑把集线器换成交换机接法完全一样。PC 上必须装 Wireshark系统防火墙全部关掉IP 配在同一网段。比如PC1192.168.10.1 / 255.255.255.0PC2192.168.10.2 / 255.255.255.0PC3192.168.10.3 / 255.255.255.0这里有个现实问题现在实体集线器很难买到很多教学用的“集线器”其实是一台二层交换机。如果你只有交换机不用急实验照样能验证交换机的行为想验证集线器可以用一个叫“集线器模拟”的办法在一台电脑上把网卡设置为共享模式不这不标准。常见做法是找一台老式路由器把 LAN 口当集线器使——但很多路由器 LAN 口内部是交换芯片不是真集线器。所以我建议直接用支持抓包的交换机来验证“未知单播泛洪”和“广播泛洪”这两点在交换机上同样发生只是单播不会总泛洪。真要体验集线器的无脑复制可以装一个 GNS3 或 Packet Tracer 用集线器模型但后面我会讲模拟器和真实设备的差异。我一般会这样安排先用真实交换机做一遍标准实验再用模拟器里的集线器补一个对比。这样既有真实设备的可信度又能看到集线器行为。3.2 抓包看广播集线器环境下 ARP 请求被全网收到连接好设备后在 PC1 上打开 Wireshark选择接集线器的网卡抓包过滤器建议先设成arp减少干扰。然后在 PC1 的命令行执行ping 192.168.10.2 -n 2Windows 下-n 2表示发两个 ICMP 请求。由于 ping 前要先解析 192.168.10.2 的 MAC 地址PC1 会先发一个 ARP 广播帧目的 MAC 是ff:ff:ff:ff:ff:ff这个广播帧到达集线器后会被复制到 2 口和 3 口所以 PC2 和 PC3 都会收到。接着在 PC3 上也开 Wireshark你会发现它同样抓到了这个 ARP 请求——即使 PC3 和这次通信没有半点关系。这就是集线器泛洪的实证广播帧不是“广播给所有人”这么简单而是物理层把所有帧都复制给了所有端口只不过非目的主机会在链路层丢弃单播但广播帧对每台主机来说都是要处理的。如果你在 PC1、PC2、PC3 三个抓包窗口同时看会发现几乎同一时刻出现一模一样的 ARP 请求和 ICMP 帧。我用 TShark 统计过在集线器环境下一帧的副本数等于集线器端口数减一这个特征后面可以用来做判断。3.3 抓包看单播交换机学习 MAC 地址后不再泛洪把集线器换成交换机重新做一次同样的操作。PC1 ping PC2在 PC1 上抓包仍然能看到 ARP 请求。关键看点变成两台交换机端口上的监听在 PC3 上开着 Wireshark你会发现 ARP 请求还是会出现因为交换机没有学到目的 MAC 时对未知单播和广播都是泛洪。ARP 请求本身就是广播所以 PC3 收到很正常。当 PC2 回应 ARP 后交换机已经学到了PC1的MAC - 端口1和PC2的MAC - 端口2。紧接着 PC1 发出的 ICMP 帧目的 MAC 是 PC2交换机查表后只从端口 2 转发端口 3 收不到这个 ICMP 帧。所以在 PC3 的抓包里你能看到只有 ARP 请求没有 ICMP 回显请求。这就是交换机“精确转发”的直接证据。如果手里是华为或 H3C 的交换机还能在实验结束后登录设备看一眼 MAC 地址表# 华为交换机查看 MAC 地址表 display mac-address输出里能看到学到的 MAC 地址、对应的 VLAN 和端口。注意如果中途没有流量表项可能会因为老化被清掉所以要在 ping 的过程中去查。另外mac 地址表是一个动态学习的过程第一次 ping 时因为表是空的ICMP 的第一个包可能会被泛洪到 PC3第二个包开始才精确转发。这个细节也是实验报告里值得写的一笔。4. 用实验数据说话从抓包结果里读懂转发差异4.1 关键观察指标广播帧数量、重复帧、延迟实验不能只看“感觉”要记录数据。我建议至少记录三个指标各主机收到的帧总数。在集线器环境下PC3 收到全部帧的副本在交换机环境下PC3 只收到广播帧和未知单播帧。帧的重复情况。Wireshark 里可以直接看到“No.”编号变多变密同一帧出现在多个接口抓包里MAC 地址完全一样。ICMP 往返时间。集线器因为存在冲突和退避在持续流量下 RTT 会波动交换机环境下则稳定得多。以 100M 集线器和 100M 交换机为例接 3 台机器并发 ping 时集线器环境下的 RTT 可能从 1ms 跳到几十毫秒交换机环境下变化很小。这不是玄学是半双工冲突导致的 CSMA/CD 退避机制在工作。4.2 对比集线器与交换机下的 ping 包往返时间我用同一个拓扑做过一个简单测试PC1 连续 ping PC2 100 次统计最小、最大、平均 RTT。记录如下数值来自常见实验结果不同设备会有偏差但趋势一致环境最小 RTT最大 RTT平均 RTT丢包集线器共享冲突域0.3 ms45 ms6.8 ms0%交换机端口隔离0.2 ms1.1 ms0.4 ms0%集线器环境下最大 RTT 明显偏高是因为当 PC1 和 PC2 之间快速相互发包时如果 PC3 同时有流量比如后台更新就可能产生冲突冲突后双方退避随机等待RTT 立刻变大。交换机环境里每个端口独立冲突域PC3 的流量不影响 PC1 到 PC2 的通信。这个测试对理解“共享带宽 vs 独享带宽”非常直观。4.3 MAC 地址表的动态变化怎么查看和解释交换机的 MAC 地址表是实验的核心数据。在华为交换机上我常用的命令还有# 查看特定端口学到的 MAC display mac-address gigabitethernet 0/0/1 # 查看动态表项数量 display mac-address count # 设置地址表老化时间默认 300 秒 mac-address aging-time 120注意在 PC1 停止 ping 之后过一段时间再查看 MAC 地址表表项会逐渐消失因为老化时间到了。这个机制是交换机清理无效表项的手段避免表被占满。如果你用mac-address aging-time 120把老化时间调成 120 秒可以更快速观察“学习—老化—重新学习”的过程。我曾经踩过一个坑在交换机上配了静态 MAC 表项实验时发现 ping 不通后来查清楚是因为静态表项绑定的端口和实际接入端口不一致交换机查到表项后按错误端口转发帧就丢了。所以做实验时尽量先清空动态表别混入静态配置。可以用undo mac-address清掉。5. 避坑指南实验过程中最容易翻车的 5 个细节5.1 现象以为接的是集线器抓包却看不到泛洪原因市面上很多标着“集线器”的设备其实是二层交换机或者是一台带有交换芯片的路由器。交换机对已知单播不会泛洪所以 PC3 收不到 ICMP 帧就误以为实验失败。解决先看设备铭牌或指示灯集线器通常没有“每个端口独立 MAC/速率”的标识更可靠的办法是抓包确认泛洪行为向一个不存在的 IP 发包触发 ARP 广播看是否所有端口都能收到广播。广播在交换机和集线器上都会泛洪这个特征不足以区分要区分就 ping 一个真实存在的 IP观察 PC3 是否收到 ICMP 帧。5.2 现象Wireshark 抓不到自己发的某些帧原因网卡没有开启混杂模式promiscuous mode或者 Wireshark 默认开启了“仅显示与当前网卡相关的帧”的过滤行为。实际上抓取自己发送的帧应该没问题但如果你在 PC1 上想抓取 PC2 发给 PC3 的单播帧不开混杂模式是抓不到的。解决在 Wireshark 的“Capture Options”里勾选“Promiscuous Mode”如果还不行检查网卡高级属性里是否有“接收所有多播/混杂模式”选项。Windows 下可能需要关掉“Microsoft Network Adapter Multiplexor Protocol”。5.3 现象ping 不通或者大量丢包原因最常见的有三个。第一PC 的防火墙没关ICMP 回显被拦截第二IP 没有配在同一子网ARP 解析不到第三交换机或集线器端口处于关闭状态或网线没插紧。解决先ipconfig/ifconfig看 IP 地址和掩码互相 ping 网关地址确认二层通不通临时关闭系统防火墙后重试。在真实交换机上还可用display interface status看端口是否 UP。如果端口显示 DOWN检查网线和对端设备是否供电。5.4 现象display mac-address 看不到表项原因可能表项已经被老化清除或者当前接口是路由口而不是交换口也或者流量是广播流量不触发单播学习——不广播帧同样会学习源 MAC。最常见原因是你查看的时机不对比如设备没有转发过流量。解决在 PC1 和 PC2 之间连续 ping 3 秒以上然后在交换机上执行display mac-address。如果想看得更清楚把三台主机互 ping 一轮让每个端口都学到 MAC。另外注意华为设备上部分端口默认开启 MAC 学习如果配置了端口隔离或禁用 MAC 学习需要先检查。5.5 现象用模拟器eNSP、Packet Tracer做实验结论和真实设备不一样原因模拟器把真实硬件简化了。比如某些模拟器里的“集线器”实际行为更接近交换机有些模拟器忽略冲突退避时间RTT 恒定不变还有模拟器里 MAC 地址表的学习时间几乎为零看不到“第一个包泛洪”的现象。解决明确模拟器只适合验证逻辑不建议用来测延迟和丢包。真实实验必须用实体设备或严格调校过的虚拟化环境。如果买不到集线器可以用 Wireshark 的“Replay”功能配合交换机做半仿真但心里要知道边界。6. 进阶玩法用 VLAN 把这个实验延伸成“广播域隔离验证”当你已经能分清集线器和交换机后我给你一个更进阶的验证技巧在一台交换机上划分两个 VLAN把 PC1、PC2 放在 VLAN 10PC3 单独放 VLAN 20然后重复前面的抓包步骤。你会发现 PC1 ping PC2 时PC3 连 ARP 请求都收不到了——因为 VLAN 隔离了广播域广播帧只会被复制到同 VLAN 的端口。这个实验能直观证明交换机默认隔离冲突域VLAN 才隔离广播域。具体配置华为交换机为例# 创建 VLAN vlan 10 vlan 20 # 端口 1、2 划入 VLAN 10 interface gigabitethernet 0/0/1 port link-type access port default vlan 10 interface gigabitethernet 0/0/2 port link-type access port default vlan 10 # 端口 3 划入 VLAN 20 interface gigabitethernet 0/0/3 port link-type access port default vlan 20配好后在 PC3 上抓包PC1 ping PC2PC3 的 Wireshark 里没有任何帧如果想进一步看三层互通给 VLAN 10 和 VLAN 20 各配一个 VLANIF 接口启用交换机路由功能PC 设置网关后ping 又能通了但此时 PC3 能收到的 ARP 请求变成了“网关代答”目标 MAC 的请求——这又是另一个值得展开的实验。这个进阶玩法我每次给新人演示都用因为很多人以为“交换机就是比集线器聪明一点”实际上交换机的隔离能力和 VLAN 的广播域切分是两个维度把它们拆开验证一次比背十遍定义都有用。我自己以前也栽过以为 VLAN 配好了结果忘给接口设置 access 口流量全进了 VLAN 1抓包一看广播满天飞。从那以后我每做一个二层实验都会顺手display port vlan确认接口状态。这个实验做到最后真正的收获不是“会配置交换机”而是学会用抓包工具去验证设备行为。以后再遇到什么“智能交换机”“三层交换机”先别急着信宣传抓一个包看看它到底怎么转发。希望这篇笔记能帮你在实验台上亲手复现这些原理等你自己把数据抓出来那一刻很多概念就再也不会搞混了。本文还有配套的精品资源点击获取