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,后面会用到

仿真测试

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

拓扑图中待发数据包

ARP包头部数据

查看和删除ARP缓存表

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

原文地址:https://www.cnblogs.com/haluk/p/12090430.html

时间: 2024-10-10 23:37:08

CCNA 学习记录(三)通过仿真理解ARP协议的相关文章

Windows API 编程学习记录<三>

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

CCNA学习笔记三——STP生成树协议

广播风暴:当网络中存在物理环路,会产生广播风暴 STP协议:Spanning Tree Protocol(生成树协议) 逻辑上断开环路,防止广播风暴的产生 STP算法:(所有选择都是比小-小的当选) 选择根网桥(Root Bridge):在网络中的所有交换机中选择一台 选择依据:网桥ID(网桥优先级+MAC地址) 选择根端口(Root Ports):在所有非根网桥中选择一个 选择依据:(1)根路径成本最低 (2)直连网桥ID最小 (3)端口ID最小 选择指定端口(Designated Ports

Spring Boot学习记录(三)--整合Mybatis

Spring Boot学习记录(三)–整合Mybatis 标签(空格分隔): spring-boot 控制器,视图解析器前面两篇都已弄好,这一篇学习持久层框架整合. 1.数据源配置 数据源使用druid,maven引入相关依赖,包括spring-jdbc依赖,mysql依赖 1.转换问题 配置的过程要学会为什么这样配置,而不是只学会了配置.这里我们可以和以前的配置方式对比: 以前版本 <!--配置数据库连接池Druid--> <bean id="dataSource"

CCNA 学习笔记(三)--路由选择协议(静态路由协议)

CCNA 学习笔记(三)--路由选择协议(静态路由协议) 上一章,我们对CISCO的设备有了一定的了解,那现在我们开始去学习下路由选择协议. 静态路由: 1.什么时候是路由? 答:A.路由就是数据包从一端传输到另一端所选择的一条路径.B.数据包的转发. 2.路由器的工作内容? 答:A.路由器首先要知道要到达的目标地址. B.能发现到达目标地址所有可能经过的路由或者节点. C.选择最佳路径. D.维护路由表. 3.查看路由表的命令:show ip route 由上面我们可以看到当前的路由器只是有一

在实践中深入理解ARP协议

0.说明 在同一个网络(无特别说明,均指以太网络)中进行通信的主机,必须要拥有目标主机的MAC地址才能够正确地将数据发送给目标主机,那么如何知道目标主机的MAC地址呢?可以通过ARP协议.ARP协议就是用来获取目标IP地址所对应的MAC地址的,也就是说,ARP协议可以动态地在三层IP地址和二层MAC地址之间建立一种映射关系.可以用如下示意图来形象表示其作用: 可以看到上面的图示是把ARP协议划分到网络层,也既是认为它是一个网络层的协议,这是出于它为网络层的IP协议提供服务而考虑的.但实际上,由于

c++学习记录(三)

c++面向对象记录(二) 1.继承 继承是面向对象程序设计的一个重要概念.继承指依据另一个类来定义一个类,就好像子女继承父母的基因.运用继承的方法,我们就不需要重新编写数据成员.已有的类称为基类,新建的类称为派生类或者子类. (1)子类定义 定义一个子类,使用格式: \\class 子类名: 访问修饰符 基类名 (2)访问控制和继承 子类可以访问基类中的非私有成员,不可访问私有成员.子类继承了除下列情况外基类的所有方法: ·基类的构造方法.析构方法和拷贝构造函数 ·基类的重载运算符 ·基类的友元

Mybatis学习记录(三)--Mybatis配置文件详解

关于mybatis的配置文件,主要有两个,一个是SqlMapperConfig.xml文件一个是mapper.xml文件,分别对这两个进行深入全面学习. 一.SqlMapperConfig.xml文件 1.标签概况 在SqlMapperConfig.xml中主要有以下标签,其中环境集合environments和spring整合后废除不用.objectFactory和plugins不经常使用. properties(属性) settings(全局配置参数) typeAliases(类型别名) ty

产品需求文档的学习记录(三)

我们通过思维导图将想法进行了结构化梳理,接下来我们就需要进行方案的可行性推演,验证产品功能是否可行,预估项目要花多少人力物力,因此我们就要通过原型设计进行相关需求的论证.一开始就撰写PRD文档,我们很难对产品进行各方面的评估,也无法得知方案的可行性,并且无法直观细致的考虑产品. 原型设计是帮助我们更细致的思考,并做各项需求的评估,同时也是将自己脑海里的想法进行输出,通过原型设计后,我们就可以进行产品宣讲了.相对于之前抽象的文字描述,原型则更加清晰产品的需求,设计和技术人员或者老板也能够更加直观的

UNP学习记录---三次握手和四次挥手

三次握手: 1.服务器被动接受客户的连接请求,调用socket,bind,listen来完成,并且阻塞在accpet. 2.客户调用connect发起主动打开,客户发送一个SYN 3.服务器收到SYN,回复一个ACK和SYN. 4.客户回复一个ACK确认. 四次挥手: 1.客户调用close主动关闭,发送一个FIN. 2.服务器回复一个ACK 3.服务器调用close回复一个FIN 4.客户回复一个ACK 主动发起断连的那端会在最后保持一个TIME_WIAT状态. TIME_WAIT存在的理由: