CCNA 学习记录(三)通过仿真理解ARP协议

ubuntu使用记录

拓扑图

CCNA 学习记录(三)通过仿真理解ARP协议

配置

路由器R2:
GigabitEthernet 0/0/0 IP Address: 192.168.1.1 Subnet Mask: 255.255.255.0
Serial 0/1/0 IP Address: 192.168.1.2 Subnet Mask: 255.255.255.0

PC0:
IP Address: 192.168.1.2 Subnet Mask: 255.255.255.0

PC1:
IP Address: 192.168.1.3 Subnet Mask: 255.255.255.0

终端设备IP配置方法

例如,点击PC0 -> Desktop -> IP Configuration,填写IP Address,子网掩码自动设置,Default Gateway默认网关我们写上路由器的IP地址192.168.1.1,后面会用到

Java程序员必备:异常的十个关键知识点

CCNA 学习记录(三)通过仿真理解ARP协议

仿真测试

把软件右下角的 RealTime 模式点击切换为 Simulation 仿真模式,点击上边的Edit Filters按钮,打开过滤器选择,把除了 ARPICMP 的其他都取消勾选,目的是为了让我们更方便能看到ARP协议的过程。然后打开PC0页面,PC0 -> Desktop -> Command prompt,打开命令行,跟Windows Dos一模一样的界面,然后尝试输入ping 192.168.1.1,发现右边的Even List中出现两个待发送的包,分别是ICMP包和ARP包

CCNA 学习记录(三)通过仿真理解ARP协议

然后点击右边类似播放器快进的”下一步”按钮,会发现ARP包发送到交换机,再点击一次,包则被交换机分发到子网下所有设备,继续向前,路由器接到包后发送一个返回包,应答自己就是192.168.1.1设备,而PC1则将包丢弃,因为它的IP地址不是PC0要请求的地址。最后PC1再将ICMP包发往路由器。

在我们将剩余包全部通过后,再次重新执行这个过程,会发现PC1不再像之前一样发送ARP包,而是直接将ICMP包发送到路由器,这是因为:ARP地址解析协议中。在对本地网络上的IP地址(例如192.168.1.1)执行ping操作时,会将IP地址192.168.1.1转换为MAC地址。因为计算机间的通信底层中实际是通过物理地址进行通信。另外,系统会保留一个ARP缓存表,在其中存储有IP地址与MAC地址相关联的信息。尝试将数据包发送到IP地址时,系统将首先查阅此表以查看其是否已经知道MAC地址。如果缓存了一个值,则不使用ARP。

所以,在一次ping时,PC1在ARP表中找不到IP地址,于是使用ARP协议向网络发送广播数据包,询问 “谁是192.168.1.1″。而且我们在第一次仿真时,点击拓扑图中出现的ARP包,再点击Outbound PDU Details,则可以看到待发ARP包的数据信息,发现其中的DEST ADDRFFFF.FFFF.FFFF,这是因为,广播数据包必须发送到一个特殊的MAC地址,而该地址会使网络上的所有计算机都可以接收它,这个地址正是FFFF.FFFF.FFFF而IP地址符合要求的任何计算机都将使用ARP数据包进行应答,应答的数据包中包含 “我是192.168.1.1” 信息和自己的能用于接收数据包的MAC地址信息,同时自己也将请求方的Ip地址和mac地址存入ARP缓存表

拓扑图中待发数据包
CCNA 学习记录(三)通过仿真理解ARP协议

ARP包头部数据
CCNA 学习记录(三)通过仿真理解ARP协议

查看和删除ARP缓存表

在完成第一次ping命令后,在PC1命令行中,输入arp -a,可查看到路由器的ip地址对应的mac地址已经缓存到表中了,然后输入arp -d,这条命令会删除所有缓存,再重新查找,发现缓存表已经为空,这时候重新ping,会发现PC1又将重新发送广播ARP数据包。

Go处理PDF

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享