ARP协议

当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。

IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。

  • 数据链路层在进行数据封装时,需要目的MAC地址。

    ARP(Address Resolution Protocol)地址解析协议,可以通过对端回复的ARP报文中得知对端的MAC,进而在ARP缓存表中添加此条IP/MAC映射表项进去。

  • ARP报文格式:

  

    ARP报文不能穿越路由器,不能被转发到其他广播域,即只在二层中转发。

字段说明:

    Hardware Type表示硬件地址类型,一般为以太网

    Protocol Type表示三层协议地址类型,一般为IP

    Hardware Length和Protocol Length为MAC地址和IP地址的长度,单位是字节;

    Operation Code指定了ARP报文的类型,包括ARP Request和ARP Reply

    Source Hardware Address指的是发送ARP报文的设备MAC地址;

    Source Protocol Address指的是发送ARP报文的设备IP地址;

    Destination Hardware Address指的是接收者MAC地址,在ARP Request报文中,该字段值为0;

    Destination Protocol Address指的是接收者的IP地址。

  • ARP工作过程:

    • 缓存:ARP缓存表是IP/MAC地址的表项,在数据链路层传输时会数据帧根据MAC地址转发;
    • 请求:当ARP缓存表有目的地址的IP,没有对于的MAC时,ARP机制通过在二层泛洪发送ARP Request报文,请求寻找此 IP 地址的主机,并要求回应MAC地址;
    • 响应:目的主机收到ARP Request之后,确认报文的IP地址是自己的,对其回应一个 ARP Reply报文(包含了自身的MAC地址)
    • 缓存:发送端的主机收到回应之后,会检测报文的目的MAC是否是自己的,如果是,就将报文中的源MAC记录下来,形成一个新的ARP缓存表项。
  • ARP代理:

    位于不同网络的网络设备在不配置网关的情况下,可以通过ARP代理实现相互通信。

  

 

 

   路由器启用代理ARP后,路由器收到这样的请求,查找路由表,如果存在主机B的路由表项,路由器将会使用自己的G0/0/0接口的MAC地址来回应该ARP Request。主机A收到ARP Reply后,将以路由器的G0/0/0接口MAC地址作为目的MAC地址进行数据转发。

  • 免费ARP:  

    免费ARP可以用来探测IP地址是否冲突。

    

  主机通过周期性发送ARP Request报文来进行地址冲突检测。主机A将ARP Request广播报文中的目的IP地址字段设置为自己的IP地址,且该网络中所有主机包括网关都会接收到此报文。当目的IP地址已经被某一个主机或网关使用时,该主机或网关就会回应ARP Reply报文。通过这种方式,主机A就能探测到IP地址冲突了。

 

posted @ 2020-02-20 15:53  一个特立独行的猪  阅读(342)  评论(0)    收藏  举报