一、 实验目的与原理概述
1.1 实验核心目标
验证地址解析协议ARP不能跨网络直接使用,而只能逐个网络(或链路)使用。
1.2 核心原理解析:为何 ARP 不能跨越路由器?
在进行实操之前,我们需要在理论层面明确 ARP 为什么会被限制在本地网络:
第一点:二层广播域的物理边界。 ARP 请求报文在数据链路层是以太网广播帧(其目的 MAC 地址为 FF:FF:FF:FF:FF:FF)。路由器的核心功能之一就是隔离广播域,它出于安全和防范广播风暴的考虑,绝对不会跨网段转发任何二层广播报文。因此,ARP 请求就像是在一个房间里的大喊,隔壁房间(其他网段)是听不到的。
第二点:跨网段通信的网关接力机制。 当计算机 A 发现目的计算机 B 的 IP 地址与自己不在同一个子网时,它根本不会去尝试解析 B 的 MAC 地址。相反,A 会将数据包打包,通过 ARP 请求找到自己所在网络的"大门"------默认网关(路由器接口)的 MAC 地址,并将数据包发送给网关。路由器收到数据包后,会在目标网络里重新发起一次新的 ARP 请求,去寻找计算机 B 的 MAC 地址。这就是 ARP 必须"逐个网络"使用的本质原因。
二、 实验拓扑构建与地址规划
本实验的核心是观察跨网段的通信过程。为此,我们需要使用一台路由器将两个独立的网络连接起来。请在 Cisco Packet Tracer 的逻辑工作区中,按照以下步骤搭建网络环境。
2.1 搭建跨网段物理拓扑(PC与路由器的直连)
1. 添加网络设备
终端设备: 从软件左下角的设备库中选择"End Devices",将 2 台 型号为 PC-PT 的个人计算机分别放置在工作区的左侧和右侧,作为通信的源主机(PC0)和目的主机(PC1)。
网络设备: 选择"Routers",将 1 台 型号为 1941 的路由器放置在两台 PC 的正中间,命名为 Router0。(注:1941 路由器默认自带两个千兆以太网接口,非常适合本实验。)
2. 建立物理连接
为了确保接口类型的正确匹配,建议使用"自动选择连接类型"工具:点击左下角的闪电图标(Connections),选择带有黄色闪电标志的自动连线工具。依次点击 PC0 与 Router0,再点击 Router0 与 PC1。软件会自动使用交叉线(Copper Cross-Over)将电脑的百兆口(Fa)与路由器的千兆口(Gig)连接起来。
观察现象: 与交换机不同,路由器连线后,接口指示灯默认呈现红色向下箭头 。这是因为路由器的接口出于安全考虑,默认处于物理关闭(shutdown)状态,我们需要在后续步骤中手动开启它们。

2.2 识别并明确路由器接口名称
在配置路由器 IP 之前,我们必须精确知道哪台 PC 连接在路由器的哪个接口上,否则会导致网关配置方向反转。 通过菜单栏 Options -> Preferences,在 Interface 选项卡中勾选 "Always Show Port Labels in Logical Workspace" (在逻辑工作区始终显示端口标签)。观察拓扑图,确认 PC0 连接到了 Router0 的 Gig0/0 接口。确认 PC1 连接到了 Router0 的 Gig0/1 接口。记录完毕后,为了保持视图整洁,建议再次进入首选项取消勾选该功能。

2.3 IP 地址、子网掩码与默认网关的全局规划
在跨网段通信中,Router0 扮演着两个网络的"网关"角色。无论是 PC0 发给 PC1,还是 PC1 返回给 PC0,数据包都必须先交由网关 Router0 进行路由转发。为了清晰地进行配置,请使用顶部的"放置注释"(Place Note)工具(快捷键 N),在拓扑图上详细标注我们将要配置的网络参数。
本实验的地址规划如下:
| 设备及接口 | 网络规划 | IP 地址 | 子网掩码 | 默认网关 (Gateway) |
|---|---|---|---|---|
| PC0 (终端) | 左侧网络 192.168.0.0/24 |
192.168.0.1 |
255.255.255.0 |
192.168.0.254 |
| Router0 (Gig0/0) | 担任左侧网络的网关 | 192.168.0.254 |
255.255.255.0 |
(路由器接口无需网关) |
| Router0 (Gig0/1) | 担任右侧网络的网关 | 192.168.1.254 |
255.255.255.0 |
(路由器接口无需网关) |
| PC1 (终端) | 右侧网络 192.168.1.0/24 |
192.168.1.1 |
255.255.255.0 |
192.168.1.254 |
路由器的每个接口必须属于不同 的 IP 网段。在这里,Gig0/0 属于
0.0网段,Gig0/1 属于1.0网段。网关对应的原则: PC0 的默认网关必须填入与它直连的路由器接口(Gig0/0)的 IP 地址;同理,PC1 的网关必须是 Gig0/1 的 IP 地址。

三、 网络设备参数配置
有了前面清晰的地址规划,我们现在开始为网络设备注入"灵魂"。本环节分为终端配置和路由器配置两部分。
3.1 终端设备(PC0 与 PC1)网络参数配置
在跨网段通信中,个人计算机如果想要和自己网段之外的设备说话,就必须把数据包交给"默认网关"。因此,网关配置是这一步的重中之重。
1. 配置 PC0(左侧网络)
-
单击 PC0 ,在弹出的窗口中选择 "桌面"(Desktop) 选项卡,点击 "IP 配置"(IP Configuration) 。确保模式为 "静态"(Static)。
-
依次填入之前规划好的参数:
-
IPv4 Address(IP 地址):
192.168.0.1 -
Subnet Mask(子网掩码):
255.255.255.0 -
Default Gateway(默认网关):
192.168.0.254(务必注意:这是连接 PC0 的路由器接口 Gig0/0 的 IP 地址)
-
-
确认无误后,直接关闭窗口即可保存。
2. 配置 PC1(右侧网络)
-
使用相同的方法打开 PC1 的 IP 配置界面。
-
依次填入右侧网络的参数:
-
IPv4 Address:
192.168.1.1 -
Subnet Mask:
255.255.255.0 -
Default Gateway:
192.168.1.254(对应路由器 Gig0/1 接口的 IP)
-

3.2 路由器(Router0)接口 IP 配置与激活
与以太网交换机不同,路由器为了防止未经配置的接口意外接入网络引发安全问题,其所有物理接口出厂时均默认为关闭状态(Administratively Down)。我们需要进入 Cisco IOS 命令行手动为其配置 IP 并将其唤醒。
1. 绕过初始化向导
单击 Router0 ,进入 "CLI" 选项卡。此时屏幕上通常会提示 Would you like to enter the initial configuration dialog? [yes/no]:(是否进入初始配置对话向导?)。请输入 no 并回车。接着再按一次回车键,直到出现用户执行模式的命令提示符 Router>。
2. 录入配置命令
在命令行中依次输入以下命令,为路由器的两个千兆接口分配 IP 地址并激活它们:
Router>enable //从用户执行模式进入特权执行模式
Router#configure terminal //从特权执行模式进入全局配置模式
Router(config)#interface GigabitEthernet0/0 //从全局配置模式进入接口Gig0/0的配置模式
Router(config-if)#ip address 192.168.0.254 255.255.255.0 //给接口配置IP地址和子网掩码
Router(config-if)#no shutdown //开启接口
Router(config-if)#interface GigabitEthernet0/1 //进入接口Gig0/1的配置模式
Router(config-if)#ip address 192.168.1.254 255.255.255.0 //给接口配置IP地址和子网掩码
Router(config-if)#no shutdown //开启接口
3. 观察物理链路状态突变
在执行完两次 no shutdown 命令后,请将目光移回后方的拓扑工作区。 你会发现,原本连接路由器与 PC 的传输线缆两端的红色向下箭头,瞬间变成了绿色的向上箭头。这意味着物理链路已经成功激活,跨网段通信的"高速公路"已经全面竣工!

四、 仿真环境准备与协议监听
在真实的物理网络中,即使你什么都不做,设备之间也在不断发送着各种底层的探测报文。为了在后续的"慢动作回放"中不被这些背景流量干扰,我们需要利用 Packet Tracer 的仿真(Simulation)模式,设置一个精准的"过滤器",只抓取本实验最核心的两位主角:ICMP (用于 Ping 测试)和 ARP(用于 MAC 地址解析)。
4.1 切换仿真模式并设置监听过滤器
1. 开启仿真模式
将视线移至软件界面的右下角。默认情况下,网络处于 "Realtime"(实时) 模式。单击旁边的 "Simulation"(仿真) 按钮(或直接使用快捷键 Shift + S)。此时,屏幕右侧会弹出一个"仿真面板"(Simulation Panel)。
2. 清空默认监听列表
在仿真面板的底部,你会看到事件列表过滤器(Event List Filters)。首先,点击面板下方的 "Show All/None"(显示全部/无) 按钮。这会一键清除掉系统默认勾选的所有杂乱协议,让监听列表彻底清空。
3. 精准勾选目标协议
接着,点击旁边的 "Edit Filters"(编辑过滤器) 按钮。在弹出的协议选择窗口中,确保当前处于 "IPv4" 选项卡。在列表中找到并仅勾选 以下两项:ARP (Address Resolution Protocol,地址解析协议);ICMP (Internet Control Message Protocol,网际控制报文协议)。设置完成后,直接点击窗口右上角的红叉关闭该面板即可。
观察指南: 此时,在仿真面板的下方会显示
Event List Filters - Visible Events: ARP, ICMP。这意味着,从现在开始,除了 Ping 数据包和寻找 MAC 地址的请求包,网络中发生的一切其他动作都将被软件屏蔽。这就为我们接下来观察纯粹的跨网段通信提供了一个绝对干净的"实验室环境"。
4.2 实验前置状态确认(知识点铺垫)
在扣动 Ping 命令的扳机之前,请大家在脑海中明确当前网络的一个初始绝对真空状态: 因为所有设备都是刚刚连通且配置好 IP,它们之间还没有进行过任何通信。因此:
-
PC0 的 ARP 缓存表是空的: 它只知道默认网关的 IP(
192.168.0.254),但不知道网关路由器接口(Gig0/0)的物理 MAC 地址。 -
Router0 的 ARP 缓存表也是空的: 它知道 PC1 所在的网段连在自己的 Gig0/1 接口上,但不知道 PC1 具体的物理 MAC 地址。
正是由于这两段"未知",才会触发接下来极其经典的"两次 ARP 接力解析"与"首包丢弃"现象。

五、 核心现象验证:跨网段 ARP 抓包深度解析
一切准备就绪,我们现在要在 PC0 上执行 ping 192.168.1.1 命令,测试其与跨网段的 PC1 之间的连通性。
避坑提示: 如果你在练习时已经 Ping 过一次,想要重新演示"第一次请求超时"的现象,尝试使用命令(如
arp -d或clear arp-cache)清空 PC 和路由器的 ARP 缓存往往是无效的,Packet Tracer 偶尔会存在缓存残留。最稳妥的重置方法: 直接在拓扑图中删除原来的路由器,拖一个全新的 1941 路由器进来,重新配置一下两个接口的 IP 和
no shutdown。这只需要 30 秒,却能保证 100% 出现最纯净的初始演示效果。
5.1 第一次 Ping 通信机制解析(首包丢弃之谜)
在开始分析之前,我们必须严格按照以下顺序操作,才能让数据包"冻结"在屏幕上供我们观察:确保软件右下角处于 "Simulation"(模拟工作模式) ,且仿真面板已打开。打开 PC0 的命令提示符,输入 ping 192.168.1.1,按下回车键。此时你会发现,Ping 命令并没有像平时那样立刻刷出结果,拓扑图中的 PC0 旁边凭空出现了一个数据包(信封图标)。这意味着指令已生成,正在等待我们手动步进。

接下来,请将鼠标移至仿真面板底部的单步前进(Capture/Forward)按钮,我们将像看电影慢动作一样,拆解这其中的微观步骤:
【阶段一:PC0 寻找网关的 MAC 地址】
点击单步前进。PC0 生成了第一个 ICMP 报文,但它发现目标 IP(192.168.1.1)与自己不在同一个网段。因此,PC0 决定把包交给默认网关(Router0 的 Gig0/0)。然而,PC0 查阅自己的 ARP 缓存,发现没有 网关的 MAC 地址。于是,PC0 将 ICMP 报文暂存在原地 ,转而发出一个绿色的 ARP 请求报文(内容为:谁是 192.168.0.254?请告诉我你的 MAC)。

点击单步前进。ARP 请求报文到达 Router0。

点击单步前进。Router0 收到请求,立刻返回一个绿色的 ARP 应答报文给 PC0。至此,PC0 成功将网关的 MAC 地址写入了自己的 ARP 缓存表。

【阶段二:ICMP 报文到达网关,Router0 寻找目的主机的 MAC 地址与首包丢弃】
点击单步前进。有了网关的 MAC 地址后,PC0 终于把刚才暂存的第一个紫色的 ICMP 请求报文发送了出去。报文成功到达网关 Router0。Router0 收到 ICMP 报文后,查看其目的 IP(192.168.1.1),查路由表发现该 IP 属于自己右侧直连的 Gig0/1 网络。接着,Router0 翻看自己的 ARP 缓存,发现并没有 PC1 的 MAC 地址。路由器不会像个人电脑那样把 ICMP 报文暂存起来等待,而是极其果断地将这个紫色的 ICMP 报文直接丢弃! (注意,此时 PC0 并不知情,它还在傻傻地等待回复。) 
在丢弃 ICMP 报文的同时,Router0 从 Gig0/1 接口发出了一个新的绿色 ARP 请求报文(内容为:谁是 192.168.1.1?请告诉我你的 MAC)。

点击单步前进。PC1 收到请求,返回绿色 ARP 应答报文给 Router0。至此,Router0 成功学到了 PC1 的 MAC 地址。

第一次发包深度总结: 第一个 Ping 数据包光荣"牺牲"了,它死在了路由器的手里,因为它到达时,路由器还不知道 PC1 的下落。但它的牺牲是有巨大价值的:它同时触发了左边网络(PC0 找网关)和右边网络(网关找 PC1)两次完全独立的 ARP 解析。 这极其完美地验证了本次实验的核心目的------ARP 协议绝对不能跨越路由器使用,它只能在一段一段的链路中"逐跳"工作。
5.2 第二次 Ping 通信机制解析(计时器超时与顺畅交互)
Ping 命令默认会连发 4 个数据包。随着时间的推移,奇妙的现象即将发生:
【阶段三:首包超时确认与第二次发包】
由于第一个 ICMP 报文早已被路由器丢弃,PC0 内部的"等待计时器"最终耗尽。直到此时,PC0 才确信第一个包失败了,屏幕上赫然弹出那行红字:Request timed out.(请求超时) 。紧接着,PC0 立刻生成并发出第二个紫色的 ICMP 请求报文。因为全网的 ARP 缓存此时都已建立完毕,这次不再产生任何 ARP 报文,ICMP 直接飞向 Router0。


Router0 收到报文,查表转发。因为 Router0 的 ARP 缓存中已有 PC1 的 MAC,报文直接飞向 PC1。

PC1 收到请求,生成紫色的 ICMP 应答报文(Reply),顺着原路发送回 Router0。

Router0 将应答报文转发回 PC0。屏幕上顺利显示出 Reply from 192.168.1.1: bytes=32 time=...。第二次跨网段通信完美成功!

5.3 第三次与第四次发包
接下来的第三个和第四个 Ping 数据包,其传输过程与第二个数据包完全一致。你可以继续点击单步前进,会发现整个网络中只剩下紫色的 ICMP 报文在源和目的之间畅通无阻地穿梭,再也没有触发任何绿色的 ARP 报文。
开始第三次发包




开始第四次发包





六、 实验结果印证与状态检查
为印证刚才观察到的数据包流向,我们将软件切换回 "Realtime"(实时模式) ,通过提取终端与网络设备底层的地址解析协议(ARP)缓存表,从静态数据的角度对实验结论进行最终的交叉验证。
6.1 检查终端 PC 的 ARP 高速缓存表
打开 PC0 的命令提示符,输入命令 arp -a。 观察截图红框内的结果,列表中仅显示 了 192.168.0.254(默认网关 IP)对应着一个物理 MAC 地址。这完美印证了:PC0 根本没有跨网段去解析 PC1 的 MAC,它只是尽职尽责地把数据交给了自己网段的"大门"(网关)。


Internet Address(互联网地址): 这是对方的 IP 地址 (逻辑门牌号)。在这里是
192.168.0.254,也就是我们的默认网关(路由器接口)。Physical Address(物理地址): 这是对方的 MAC 地址 (网卡出厂自带的绝对唯一编号)。这个
00e0...开头的字符串,就是通过咱们刚才抓包看到的绿色 ARP 报文问回来的结果。Type(类型):
dynamic(动态):表示这个地址是刚才系统通过 ARP 协议自动问来、自动记下的。
static(静态):表示这是网络管理员手动死记硬背输进去的(咱们实验里没用到)。看表结论: PC0 的通讯录里只有网关。说明 PC0 极其守规矩,找跨网段的兄弟时,只查转运中心(网关)的地址,绝不越权去查 PC1 的地址。
6.2 检查路由器 Router0 的 ARP 高速缓存表
打开 Router0 的 CLI 界面,确保处于特权执行模式(Router#),输入命令 show arp。观察截图下半部分红框内的结果,路由器的 ARP 表中同时包含了左侧网络的 PC0(192.168.0.1)和右侧网络的 PC1(192.168.1.1)的 IP 与 MAC 地址绑定记录。这印证了:路由器在其连接的两个独立的网络中,分别、独立地进行了两段 ARP 解析工作。




Protocol(协议): 通常显示
Internet,代表这是 IPv4 网络的记录。Address(地址): 对方的 IP 地址。
Age (min)(老化时间/分钟): 这是一个极其关键的列!
显示数字(比如
2):代表这个 MAC 地址是 2 分钟前刚刚打听到的。如果长时间不联系,路由器为了节省内存,会把这条记录删掉。显示连字符(
-):代表这个 IP 和 MAC 就是路由器自己 身上的物理接口!自己当然不需要去记住自己的年龄,所以是-。Hardware Addr(硬件地址): 对应的 MAC 地址。
Type(类型):
ARPA指的是标准的以太网 ARP 封装类型。Interface(接口): 这对于路由器来说最重要!它指示了这个设备插在我的哪个网口上 。比如 PC0(0.1)插在
GigabitEthernet0/0上,以后有给 PC0 的包,路由器闭着眼睛从这个口扔出去就行。看表结论: 路由器的通讯录里有 4 行。两行(带
-的)是它自己的左右两个网口;另外两行(带数字的)是它刚才分别向左(找 PC0)和向右(找 PC1)打听来的。
至此,结合抓包的动态过程与最终的静态缓存表状态,我们极其严谨地证明了本次实验的核心结论:ARP 协议绝对不能跨网段使用,只能逐个网络(或链路)独立工作。