实验十一:地址解析协议ARP不能跨网络直接使用

一、 实验目的与原理概述

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,它们之间还没有进行过任何通信。因此:

  1. PC0 的 ARP 缓存表是空的: 它只知道默认网关的 IP(192.168.0.254),但不知道网关路由器接口(Gig0/0)的物理 MAC 地址。

  2. Router0 的 ARP 缓存表也是空的: 它知道 PC1 所在的网段连在自己的 Gig0/1 接口上,但不知道 PC1 具体的物理 MAC 地址。

正是由于这两段"未知",才会触发接下来极其经典的"两次 ARP 接力解析"与"首包丢弃"现象。

五、 核心现象验证:跨网段 ARP 抓包深度解析

一切准备就绪,我们现在要在 PC0 上执行 ping 192.168.1.1 命令,测试其与跨网段的 PC1 之间的连通性。

避坑提示: 如果你在练习时已经 Ping 过一次,想要重新演示"第一次请求超时"的现象,尝试使用命令(如 arp -dclear 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 协议绝对不能跨网段使用,只能逐个网络(或链路)独立工作。

相关推荐
老虎06272 小时前
LeetCode热题100 刷题笔记(第五天)多维动态规划(中心扩展法) 「 最长回文子串」
笔记·leetcode·动态规划
talen_hx2962 小时前
《零基础入门Spark》学习笔记 Day 10
大数据·hive·笔记·学习·spark
AI视觉网奇2 小时前
fp8 量化笔记
人工智能·笔记
以太浮标2 小时前
华为eNSP模拟器 - 设备及技术栈场景全维度解析
运维·网络·网络协议·网络安全·华为·负载均衡·信息与通信
虚拟世界AI2 小时前
无线网络优化全攻略
网络·智能路由器
天行健,君子而铎2 小时前
政务行业高准确率、可控、符合规范的数据库审计与监测实践方案
网络·数据库·政务
AI精钢2 小时前
OpenClaw Exec Approvals 机制:在安全与效率之间寻找平衡
网络·安全·自动化·权限管理·安全配置·openclaw·agent 开发
晨枫阳2 小时前
从零搭建私有 npm 仓库:一次完整的实战学习笔记
笔记·学习·npm
南境十里·墨染春水2 小时前
C++ 笔记 赋值兼容原则(公有继承)(面向对象)
开发语言·c++·笔记