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地址冲突了。

浙公网安备 33010602011771号