技术服务
24小时提供高效率、高质量的技术支持

什么是ARP协议?ARP协议详解

时间:2019-12-31 11:15:22来源:本站原创

  当我们需要给其他设备发送数据的时候,我们必须要知道另一台设备的IP地址,但是我们仅仅只知道IP地址是远远不够的,我们还要将IP数据报文封装成帧才可以通过数据链路进行数据的发送。而这里面,数据帧又必须要有MAC地址,所以我们还要获取另一台设备的MAC地址。通过IP地址来获取MAC地址的这个过程是要依靠ARP协议来实现的。

  ARP协议是TCP/IP协议簇中的重要组成部分,ARP能够通过目的IP地址发现目标设备的MAC地址,从而实现数据链路层的可达性。

  ARP的工作过程

  ARP之简单请求应答


  PC1依据OSI模型

  1、依次从上至下对数据进行封装,包括对ICMP Date加IP包头的封装,但是到了封装MAC地址的时候;

  2、PC1首先查询自己的ARP缓存表,发现没有IP2和他的MAC地址的映射,这个时候MAC数据帧封装失败。我们使用ping命令的时候,是指定PC2的IP2的,计算机是知道目的主机的IP地址,能够完成网络层的数据封装,因为设备通信还需要对方的MAC地址,但是PC1的缓存表里没有,所以在MAC封装的时候填入不了目的MAC地址。

  3、那么PC1为了获取PC2的MAC地址,PC1要发送询问信息,询问PC2的MAC地址,询问信息包括PC1的IP和MAC地址、PC2的IP地址,这里我们想到一个问题,即使是询问信息,也是需要进行MAC数据帧的封装,那这个询问信息的目的MAC地址填什么呢,规定当目的MAC地址为ff-ff-ff-ff-ff-ff时,就代表这是一个询问信息,也即使后面我要说的广播。PC2收到这个询问信息后,将这里面的IP1和MAC1(PC1的IP和MAC)添加到本地的ARP缓存表中;

  4、PC2发送应答信息,对数据进行IP和MAC的封装,发送给PC2,因为缓存表里已经有PC1的IP和MAC的映射了呢。这个应答信息包含PC2的IP2和MAC2。PC1收到这个应答信息,理所应当的就获取了PC2的MAC地址,并添加到自己的缓存表中。

  经过这样交互式的一问一答,PC1和PC2都获得了对方的MAC地址,值得注意的是,目的主机先完成ARP缓存,然后才是源主机完成ARP缓存。之后PC1和PC2就可以真正交流了。

  ARP之广播请求单播回应

  上图面的图解是不完全的ARP协议,因为在局域网里边不会只有两台主机,这里就要考虑如何在局域网众多主机里获得目的主机的MAC。


  和上面的一样,刚开始PC1并不知道PC2的MAC地址,同样需要发送ARP请求,但是这个局域网里主机很多的时候,PC1是这么做的:

  1、首先PC1广播发送询问信息(信息和上一张图介绍的一样),在这个普通交换机上连接的设备都会受到这个PC1发送的询问信息。

  2、所有在这个交换机上的设备需要判断此询问信息,如果各自的IP和要询问的IP不一致,则丢弃,如图PC3、Route均丢弃该询问信息,而对于PC2判断该询问信息发现满足一致的要求,则接受,同样的写入PC1的IP和MAC到自己的ARP映射表中。

  3、PC2单播发送应答信息给PC1,告诉PC1自己的IP和MAC地址。

  ARP代理


  1、如果两台主机在同一个网段,则直接发送ARP Request报文就好。

  2、如果在不同网段,(1)主机A设置了网关,ARP协议可以正常使用。

  (2)主机A没有设置网关,这种情况下,我们要开启ARP代理,路由器来重新封装,转发报文

  免费ARP


  主机A将ARP Request 广播报文中的目的IP地址字段设置为自己的IP地址,该网络中的所有主机都会接受到此报文。当目的IP地址已经被某一个主机或网关私有时,该主机或网关就会回应ARP reply 报文,通过这种方式主机A就能探测到IP地址冲突了。

  ARP协议总结:

  1.网络设备在什么情况下会发送ARP request?

  发送设备在进行数据发送之前,会首先查看自身的ARP缓存,查找自身的ARP缓存里是否存在目的设备的IP地址和MAC地址的映射。如果存在则直接使用,如果不存在则会发送ARP request。

  2.网络设备什么时候会产生免费ARP?

  当网络上的一个设备被分配了IP地址或者IP地址发生变化后,可以通过免费ARP来检查IP地址是否冲突。

计讯物联——物联网产品与行业解决方案提供商 申请样机
All Rights Reserved 厦门计讯物联科技有限公司版权所有 闽ICP备15001895号 闽公网安备 35021102001331号