ARP址解析协议是根据IP地址获取物理地址的一个TCP/IP协议。它工作在OSI七层模型的中第二层——数据链路层。

使用ARP地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。

  • 可能会受到恶意攻击——ARP欺骗
  • 与IPV6的NDP协议相比,ARP使用广播的效率偏低。

ARP是通过报文工作的,报文的结构如下图所示:

假设同一个网络中的主机A要与主机B进行通信,A和B的信息如下:

主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;

主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;

ARP的工作流程如下:

  1. 根据主机A上的路由表信息,得出要到达主机B的转发地址是192.168.1.2。然后主机A在自己的本地ARP缓存中查找该IP对应的MAC地址
  2. 如果在主机A的ARP缓存中没有找到对应的映射,它将向整个网络的所有主机广播询问192.168.1.2的MAC地址,广播信息中包括了源主机A的IP、MAC地址和目的主机的IP地址。本地网络上的每台主机都接收到ARP请求并且检查请求中的目的IP是否与自己的IP地址匹配,如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
  3. 主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
  4. 主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
  5. 当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存(本地缓存是有生存期的,生存期结束后,将再次重复上面的过程)。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址–>MAC地址的对应表。在windows cmd下输入 “arp
-a”就可以看到这个映射信息:

ARP缓存可以包含动态和静态项目。

  • 动态项目随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。
  • 静态项目一直保留在缓存中,直到重新启动计算机为止。

ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,雅思和托福从而篡改本地的MAC地址表。

ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。

  • 设置静态的MAC–>IP对应表,不要让主机刷新设定好的转换表。
  • 使用ARP服务器。
  • 管理员定期轮询,检查主机上的ARP缓存。
  • RARP(Reverse Address Resolution Protocol
    反向地址转换协议):它是根据MAC地址请求IP地址的协议,其功能与地址解析协议相反。
  • PARP(Proxy ARP 代理ARP):ARP工作在一个网段中,而代理ARP则工作在不同的网段之间。网关收到源计算机的 ARP 请求后,会使用自己的
    MAC 地址与目标计算机的 IP地址对源计算机进行应答。
  • NDP(Neighbor Discovery
    Protocol邻居发现协议):地址解析协议是IPv4中必不可少的协议,但在IPv6中将不再存在地址解析协议。在IPv6中,地址解析协议的功能将由NDP实现,它使用一系列IPv6控制信息报文(ICMPv6)来实现相邻节点(同一链路上的节点)的交互管理,并在一个子网中保持网络层地址和数据链路层地址之间的映射。地址解析协议以及ICMPv4路由器发现和ICMPv4重定向报文基于广播,而NDP的邻居发现报文基于高效的组播和单播。

ARP(Address Resolution Protocol)地址解析协议初识的更多相关文章

  1. ARP(Adress Resolution Protocol): 地址解析协议

    地址解析协议(Address Resolution Protoclol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利.它是IPV4中网络层必不可少的协议.不过在IP ...

  2. arp:地址解析协议(Address Resolution Protocol)(来自维基百科)

    地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...

  3. Neighbor Discovery Protocol Address Resolution Protocol

    https://en.wikipedia.org/wiki/Address_Resolution_Protocol The Address Resolution Protocol (ARP) is a ...

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

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

  5. 网络协议抓包分析——ARP地址解析协议

    前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...

  6. ARP (地址解析协议)

    地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机, ...

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

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

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

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

  9. ARP(地址解析协议)

    目录 1. ARP 概述 2. ARP 协议工作原理 3. ARP 缓存 4. ARP 报文格式 5. 抓包分析 5.1. ARP 请求报文 5.2. ARP 应答报文 6. 免费 ARP 7. AR ...

随机推荐

  1. js 相关好文章推荐

    1.关于xmlhttprequest https://segmentfault.com/a/1190000004322487 2.XMLHttpRequest2 新技巧 https://www.htm ...

  2. 简述Vue中的过滤器

    1.过滤器的基本概念 概念:本质上是函数: 作用:用户输入数据后,它能够进行处理,并返回一个数据结果:(无return语句不会报错,但是这种过滤器没有丝毫意义) 格式:管道符(  |  )进行连接,而 ...

  3. HardFault_Handler

    STM32程序一运行就进入HardFault_Handler,原因很可能是堆栈溢出 ]={}; // 我把程序中上面这句注释了就没事了 :进入HardFault_Handler也可能是数组越界引起的: ...

  4. 优化内存_内存泄漏——C

    内存泄漏:  动态申请内存,没有正常释放,后续又申请内存,也没释放内存,导致内存池被全部被占用,最终再申请内存的时候失败:严格点则每次申请内存的时候判断申请到的指针是否为空,若为空NULL则表示申请失 ...

  5. HDFS数据流——写数据流程

    剖析HDFS文件写入 假设文件ss.avi共200m,其写入HDFS指定路径/user/atguigu/ss.avi流程如下: 1)客户端向namenode请求上传文件到指定路径,namenode通过 ...

  6. 【洛谷p1970】花匠

    莫得致敬lz谢谢.lz的题解是优秀的题解谢谢! 看算法标签 但是我并不会DP的思路,用一个很神奇的码量超级少的代码(虽然我码了超多),然后其实这个数据可以看做是一个函数嘛对吧:(比如说样例) 那么要注 ...

  7. c++ const 修饰变量位置含义

    c++ const 修饰变量位置含义 const 修饰成员变量 const修饰指针变量时: 只有一个const,如果const位于*左侧,表示指针所指数据是常量,也就是指向常量的指针,不能通过解引用修 ...

  8. 洛谷 - P4114 - Qtree1 - 重链剖分

    https://www.luogu.org/problem/P4114 维护边权的话,用深度大的点表示这条边(可以遍历一边边询问两端深度,这样不需要修改dfs1,也可以在dfs1的时候向下走的同时把边 ...

  9. python学习第四十九天XML模块的用法

    xml是实现不通语言或程序之间进行数据交换的协议,跟json差不多,但是json用起来简单,还没诞生json,以前都是用xml,下面讲述XML模块的用法. 1,导入xml模块 import xml 2 ...

  10. python Calendar 模块导入及用法

    Calendar 是python 日历模块,此模块的函数都是日历相关的,例如打印某月的字符月历,星期之类的模块,下面剖析python Calendar 模块导入及用法. 1,python导入日历模块 ...