拓扑图

配置

路由器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数据包。

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

  1. JavaScript学习记录三

    title: JavaScript学习记录三 toc: true date: 2018-09-14 23:51:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  2. 3.VUE前端框架学习记录三:Vue组件化编码1

    VUE前端框架学习记录三:Vue组件化编码1文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...

  3. leveldb 学习记录(三) MemTable 与 Immutable Memtable

    前文: leveldb 学习记录(一) skiplist leveldb 学习记录(二) Slice 存储格式: leveldb数据在内存中以 Memtable存储(核心结构是skiplist 已介绍 ...

  4. 三分钟网络基础-ARP协议

    什么是 ARP 协议 地址解析协议 ARP (Address Resolution Protocal):在同一局域网下,根据已知道的主机或路由器的 IP 地址,找出其相应的硬件地址. 高速缓存 每一个 ...

  5. Bootstrap 我的学习记录3 导航条理解

    以下理论内容copy自Bootstrap中文网 (一个不错的bootstrap学习网站) 导航条 默认样式的导航条 导航条是在您的应用或网站中作为导航页头的响应式基础组件.它们在移动设备上可以折叠(并 ...

  6. webrtc学习———记录三:mediaStreamTrack

    参考: https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack 转自http://c.tieba.baidu.com/p/3 ...

  7. 下页小希学MVC5+EF6.2 学习记录三

      目的:1 学习mvc+ef 2  写下日记也是对自己的督促 期待已久的EF终于来了. 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程. 本次将会完成EF数据模型的搭建和使用. 基于这个模型 ...

  8. LoadRunner11学习记录三 -- 迭代和并发

    LoadRunner中%d和%s是什么意思? %d 格式化输出短整形数据,TC环境中占用两个字节,输出整数范围为:32768~32767.Visual C++环境中占用四个字节,输出数据范围为:-21 ...

  9. 【java并发编程艺术学习】(五)第二章 java并发机制的底层实现原理 学习记录(三) 原子操作的实现原理学习

    章节介绍 主要包括 术语定义.处理器如何实现原子操作.Java如何实现原子操作: 原子(atomic)本意是 不能再进一步分割的最小粒子,“原子操作” 意为 不可被中断的一个或一系列操作. 术语定义 ...

随机推荐

  1. Python基础:18类和实例之二

    1:绑定和非绑定 当存在一个实例时,方法才被认为是绑定到那个实例了.没有实例时方法就是未绑定的.在很多情况下,调用的都是一个绑定的方法. 调用非绑定方法并不经常用到,其中一个主要的场景是:派生一个子类 ...

  2. 《C语言深度解剖》学习笔记之函数

    第6章 函数 1.编码风格 [规则6-1]每一个函数都必须有注释 [规则6-2]每个函数定义之后以及每个文件结束之后都要加若干个空行 [规则6-3]在一个函数体内,变量定义与函数语句之间要加空行 [规 ...

  3. sspanel 常用审计规则

    规则 禁用 BT 防止版权争议 BitTorrent protocol 数据包明文匹配 禁止 百度高精度定位 防止IP与客户端地理位置被记录 (api|ps|sv|offnavi|newvector| ...

  4. 学习layer弹层组件移动版

    layer弹层组件官网 常用参数: shadeClose:默认true,是否点击遮罩时关闭层

  5. oracle函数 exp(y)

    [功能]返回e的y次幂(e为数学常量) [参数]y,数字型表达式 [返回]数字 [示例] select exp(3),exp(0),exp(-3) from dual; 返回:20.0855369,1 ...

  6. 受控组件 & 非受控组件

    在 React 中表单组件可分为两类,受控与非受控组件. 一. 受控组件 设置了 value 的 <input> 是一个受控组件. 对于受控的 <input>,渲染出来的 HT ...

  7. HTML--表格与表单

    一.表格 <table></table>表格 width:宽度.可以用像素或百分比表示. 常用960像素. border:边框,常用值为0. cellpadding:内容跟边框 ...

  8. laravel 常用文档

    [ Laravel 5.6 文档 ] 快速入门 —— 目录结构  laravel学院 http://laravelacademy.org/post/8657.html Laravel 的缓存系统    ...

  9. ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1

    ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name'  at row 1   数据库字符集问 ...

  10. Spring Cloud探路(三)REST 客户端Feign

    Declarative REST Client: Feign Feign is a declarative web service client. It makes writing web servi ...