什么是ARP协议

ARP(A ddress R esolution P rotocol)— 地址解析协议 ,用于将IP地址解析为MAC地址。复杂来说,ARP用于32位IPv4地址和以太网的48位MAC地址之间的映射。

与ARP相反功能的协议称为 RARP(Reverse Address Resolution Protocol)逆地址解析协议 。用于将MAC地址转换为IP地址。一般用于无盘系统中。

一个基本的例子

PC1 访问 网关(switch0,192.168.1.1)

网络拓扑结构如下图:

环境

  1. PC1 没有ARP缓存

  2. PC1 ,PC2,Switch0 在同一个网段同一个Vlan

PC1 执行如下命令,并且监听并捕获e0/0 和 e0/1 两个端口(只捕获ARP协议)

VPCS> ping 192.168.1.1

捕获结果

e0/0

e0/1

捕获分析

  • No.773帧,PC1 向 Switch0 发送一个帧,Switch 0在本Vlan广播 ,查找谁的IP是192.168.1.1

  • No770,Switch广播帧到网段,向e0/1 发送广播帧,PC2接受但没有回复。

  • No774,Switch0 答复了PC1。表明192.168.1.1 对应的MAC地址是我的

NO.773 帧:

需要注意的是

  1. 目标地址是一个广播地址(MAC全为1的),用来对全网进行广播。

  2. opcode 字段为 1,是一个ARP请求

NO.774

需要注意:

  1. opcode 字段值为2,为ARP应答

  2. 发送方MAC和IP为Switch0 的映射

  3. 目标MAC为PC1 的MAC地址,这里目标IP没有,是直接交付的帧。

简单来说就是这样:

结论

解析IP分为以下几个步骤:

  • 发送帧查找局域网中有无对应的MAC地址

  • 有则回复,如果局域网中没有这个对应MAC,ARP会有一个规定时间,超过这个时间则认为没有。

需要注意以下几点:

  • ARP不是广播回复,是直接应答原始请求的发送方。

  • 接受到回复的主机将映射存储在本地的缓存中以供下次使用。

ARP缓存

ARP 缓存用来记录每个接口从网络层地址(IP地址)到硬件地址的最新映射 (MAC地址)。

其正常到期时间是条目创建开始后的20分钟[RFC1122]

查看ARP缓存

通过使用命令

> arp -a

windows平台下的显示结果:

类型字段指明了映射关系是通过动态获取还是静态获取

ARP帧

下图显示了ARP帧的格式:

字段解释:

以太网帧头部

    - DST:目的地址

    - SRC : 源地址

    - 长度或类型:多数情况用于确定后面的协议类型,在ARP帧中,这个值是0x0806

固定大小:

    - 硬件类型:指出硬件地址的类型。对以太网来说该值为1

    - 协议类型:指出映射的协议地址类型。位于IPv4地址,该值为0x0800

    - 硬件大小,协议大小:

        分别指出硬件地址和协议地址的字节数

        对于以太网使用IPv4地址的ARP请求或应答,它们的值分别为6和4

    - op:指出操作的类型,这个值是必须的(?由于ARP请求和ARP应答的长度/类型字段相同)

        ARP请求(值为1)

        ARP应答(2)

        RARP请求(3)

        RARP应答(4)

可变大小:

    - 发送方硬件地址

    - 发送方协议地址

    - 目的硬件地址

    - 目的协议地址

  • FSC:用于校验

ARP帧的示例

下图是一个ARP帧的示例,1.2 主机查找1.5主机的ARP请求帧:

其中 :

以太网帧部分

  • 前导码和SFD占了8个bit

  • 目的地址为FFFF.FFFF.FFFF(全1的广播地址),同网段同vlan的所有主机将接受到这个帧

  • type(类型)字段为0x0806,用来表示这是一个ARP帧

ARP帧部分:

    - HARDWARE TYPE(硬件类型):在以太网中该值为1

    - PROTOCAL TYPE(协议类型):0x0800,对于IPv4地址,该值为0x0800

    - 硬件大小(HLEN)和协议大小(PLEN)

        这里分别是0x06和0x04 ,表示MAC 6字节,IPv4地址4字节

    - OP(OPCODE):操作码,这里表示ARP请求(值为1)

可变大小:

  • 发送方的硬件地址(SOURCE MAC)

  • 发送方的协议地址(SOURCE IP):这里是一个IPv4地址

  • 目的硬件地址(TARGET MAC)

  • 目的协议地址(TARGET IP)

ARP缓存超时

刷新缓存,来保证映射条目是最新的。

防止出现不完整条目,比如说IP和MAC对应不上(出现这种情况可能是主机IP设置改变,网卡改变)

完整条目的超时为20分钟,不完整条目的超时为3分钟

代理ARP

代理ARP用来隐匿发送端和接收端。

代理ARP使一个系统可回答不同主机的ARP请求

这样做有两个常见原因:

  • 有些系统无法进行子网划分

  • 有些系统使用比较旧的广播地址(全零的主机ID ,而不是全1的主机ID)

免费ARP和地址冲突检测

Gratuitous ARP ,被翻译为“免费ARP”,也被称为“无故ARP”。相比“免费”这个翻译,“无故”这个更易理解:“在没有人问自己的情况下,无缘无故自问自答”,即免费ARP是设备发送的一个发送端IP地址和目标IP地址都是本设备IP地址的ARP request/reply报文

一个免费ARP的例子

PC3 的IP地址与PC1的冲突

网络拓扑结构图如下:

环境

  • 只捕获ARP帧

  • PC3 的IP地址没有设置

  • PC3的ARP缓存表是空的

分析

e0/2 端口

e0/0 端口

e0/1 端口

通过上述包分析得知:

  1. 首先PC3 先发送一个探测帧,探测是否有无相同的映射关系。

  2. PC1 回复了PC3 ,表示这个IP有人用了,用这个IP的人是我。

  3. PC2 没有回复PC3,因为没有检测到冲突。

ACD的三次探测

什么是ACD

ARP并没有为IP和MAC的映射冲突提供解决方式,而是由[RFC5277]描述IPv4地址冲突检测(ACD)

ACD 定义了ARP探测分组和ARP通告分组。探测分组是一个ARP请求分组,ARP通告与ARP探测相同,除了发送方协议地址和目的协议地址字段被填充为候选IPv4地址外。它用于通告发送方使用候选IPv4地址的意图

如下是ACD的三次通告:

  • time列中,每次间隔一秒发送,用来防止接口拥塞,网络流量激增。

ACD 被认为是一个持续的过程

这是它与免费ARP的区别

当一个主机通告它正在使用的地州,它会继续检查输入的ARP流量(请求和应答),查看自己的地址与之冲突(自己的协议地址是否出现在发送方的协议地址字段中,也就是IP地址相同),如果IP地址相同,代表发生冲突了,ACD提供了三种可能的解决方案:

  1. 停止使用这个地址

  2. 保留这个地址。 但发送一个“防御性”ARP通告,如果冲突继续,则停止使用

  3. 不理会冲突,继续使用。

与ARP有关的攻击

最为典型的中间人攻击

如下图所示:

引用/参考/使用的工具

参考书籍与网站:

https://zhiliao.h3c.com/Theme/details/27896

TCP/IP 详解 卷一

工具:

EVE-NG

Packet tracer

地址解析协议(ARP) 分析的更多相关文章

  1. TCP/IP的排头兵――地址解析协议(ARP) (转载)

    转自:http://blog.csdn.net/wangxg_7520/article/details/2488442 一.引言 古人行军打仗,都要有一个可以引领队伍前进方向的排头兵,在TCP/IP网 ...

  2. 2016.7.8 计算机网络复习要点第四章之地址解析协议ARP

    1.地址解析协议ARP:知道一个机器的IP地址,需要找到其相应的硬件地址:ARP协议的用途是为了从网络层使用的IP地址解析出在链路层使用的硬件地址: 2.由于是IP协议使用了ARP协议,因此通常就把A ...

  3. 【RL-TCPnet网络教程】第23章 RL-TCPnet之地址解析协议ARP

    第23章      RL-TCPnet之地址解析协议ARP 本章节为大家讲解ARP(Address Resolution Protocol,地址解析协议),通过前面章节对TCP和UDP的学习,需要大家 ...

  4. TCP/IP具体解释学习笔记——地址解析协议ARP

    一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址 ...

  5. 地址解析协议ARP与逆地址解析协议RARP

    IP地址是用来通信的,但是和硬件地址是有区别的.物理地址是数据链路层和物理层使用的地址,IP地址是网络层及以上各层使用的地址. 发送数据时,数据从高层向下层传输,使用IP地址的IP数据报交给下层的数据 ...

  6. <TCP/IP>地址解析协议ARP

    从前两章中有学到,网络层地址和链路层地址是由不同的,一个是物理地址,一个是IP地址.物理地址固定存储在网卡中,不会改变,而IP地址是可以网络管理员和用户自己分配的 在传统的IPv4网络中,一台A主机要 ...

  7. 地址解析协议ARP,网络层协议IP、ICMP协议

    分析所用软件下载:Wireshark-win32-1.10.2.exe 阅读导览 1. 分析并且应用ARP协议 2.分析IP协议 3.分析ICMP协议 1.分析arp报文的格式与内容 (1)ping ...

  8. 地址解析协议ARP(Address Resolution Protocol)

    1.引言 说明: ARP的作用,解决了什么问题: 以太网中的链路层,可能会采用不同的网络技术,而且不以ip作为路由依据. 链路层以mac地址作为路由依据. ARP的功能是在32 bit的IP地址和采用 ...

  9. linux 地址解析协议 arp

    随便转载,保留出处:http://www.cnblogs.com/aaron-agu/ arp –na #查看 arp –s 123.253.68.209 00:19:56:6F:87:D4 #添加

随机推荐

  1. k8s入门之ConfigMap(九)

    ConfigMap是k8s的配置管理工具,通常用来保存明文的配置信息,以key-value形式传递配置. 一.使用命令创建ConfigMap对象 1.通过--from-literal参数创建 kube ...

  2. NLP教程(2) | GloVe及词向量的训练与评估

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  3. 谈谈最近玩的设计软件:Figma 与 Sketch

    谈谈最近玩的设计软件:Figma 与 Sketch 本文写于 2020 年 5 月 9 日 作为一个优秀的开发者,不懂设计是绝对不行的! 毕竟不懂设计的程序员不是好老板. 而做设计,早已不是尺规作图的 ...

  4. vscode编写的程序中文乱码怎么办?

    (以下教程在源码文件的编码是utf-8的基础上进行!) (dev的源码文件是GBK编码,或者是GB2312?我现在好久没用dev,关于dev的信息可能有错误. 如果拿dev编写的代码用vscode打开 ...

  5. CentOS7 单节点和多节点 HPL测试

    前置工作:安装OpenBLAS; 安装Mpich (可参考首页博客) 官网下载压缩包到/opt目录 cd /opt && wget https://www.netlib.org/ben ...

  6. vue大型电商项目尚品汇(前台篇)day05终结篇

    前台部分到此结束,一路走来还挺怀念,今天主要是对整个项目的完成做一个最后的收尾工作,对于功能上的需求没有什么了,主要就是项目上线的一些注意事项. 一.个人中心二级路由 当我们点击查看订单应该跳转到个人 ...

  7. 【多线程与高并发原理篇:4_深入理解synchronized】

    1. 前言 越是简单的东西,在深入了解后发现越复杂.想起了曾在初中阶段,语文老师给我们解说<论语>的道理,顺便给我们提了一句,说老子的无为思想比较消极,学生时代不要太关注.现在有了一定的生 ...

  8. jeecgboot-vue3笔记(三)弹窗的使用

    需求描述 点击按钮,弹窗窗体(子组件),确定后在子组件中完成业务逻辑处理(例如添加记录),然后回调父组件刷新以显示最近记录. 实现步骤 子组件 子组件定义BasicModal <BasicMod ...

  9. 零成本搭建个人博客之图床和cdn加速

    本文属于零成本搭建个人博客指南系列 为什么要使用图床 博客文章中的图片资源文件一般采用本地相对/绝对路径引用,或者使用图床通过外链进行引用展示.本地引用的弊端我认为在于: 图片和博客放在同一个代码托管 ...

  10. 深度学习与CV教程(13) | 目标检测 (SSD,YOLO系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...