ARP协议与RARP协议
ARP协议
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。比如当边界路由器收到一个数据报时,此时只有本网段内目标主机的 IP 地址,而不知道主机的MAC地址,此时就需要使用ARP协议,根据目标主机的IP地址解析出MAC地址,然后将该数据包交付给目标主机。
RARP协议
逆地址解析协议(Reverse Address Resolution Protocol,RARP),是一种网络协议,互联网工程任务组(IETF)在RFC903中描述了RARP[1]。RARP使用与ARP相同的报头结构,作用与ARP相反。RARP用于将MAC地址转换为IP地址。其因为较限于IP地址的运用以及其他的一些缺点,因此渐为更新的BOOTP或DHCP所取代。
与MAC帧的关系
我们知道根据TCP/IP网络分层结构,ARP以及RARP也和IP协议一样是在网络层,也就是说要依赖下层协议来为它提供服务。根据文章 以太网帧结构,可以知道以太网数据部分最小长度为46字节,而当ARP或RARP协议作为数据的时候,由于不够以太网数据的最小长度,所以需要填充字节。在看ARP和RARP协议之前要记住一点,这两者的的报文结构是相同的,在使用的时候,会有一个一段区分使用的是ARP还是RARP。
报文结构
报文结构图
报文数据介绍 :
- 硬件协议地址:占16位,用来标识链路层网络类型,如以太网(0x0001),分组无线网。
- 协议类型:占16位,用来标识是 IPV4(0x8000)还是 IPV6(0x86DD)。
- 硬件地址长度:占8位,每种硬件地址的字节长度,一般为6(以太网),如网卡的MAC地址。
- 协议地址长度:占8位,IP地址长度,IPV4 为四字节32位, IPV6 位 16字节128位。
- 操作符:占16位,1为ARP请求,2为ARP应答,3位RARP请求,4位RARP应答。
- 源硬件地址:占48位,发送方的MAC地址。
- 源协议地址:一般为32位,表示发送方的IP地址。
- 目标硬件地址:可以理解为接收方MAC地址。
- 目标协议地址:接收方IP地址,一般为32位。
使用ARP协议的四种典型情况
(1) 发送方是主机,要把 IP 数据发送到本地网络上的另一个主机。这时用ARP获取目的主机的MAC地址。
(2) 发送方是主机,要把 IP 数据发送到另一个网络上的一个主机,这时需要使用ARP获取路由器的MAC地址,将数据发送到路由器,由路由器完成在不同路由器之间跨越网络的数据传输此时处于(4)情形,当到达目标网络的路由器时,处于(3)的情形。
(3) 发送方是路由器,需要把 IP 数据发送到本地网络上的一个主机,这时用 ARP 找到目标主机的 IP地址。
(4) 发送方是路由器,需要把 IP 数据包转发到另一个网络的主机。这时用 ARP找到去往该主机的下一跳路由器,之后的工作由下一个路由器完成。
ARP高速缓冲(ARP cache)
每一个主机或路由器都动态维护一张 ARP映射表,路面有与它相连设备的 IP 地址到硬件地址的映射关系。维护该缓冲的目的是,减少网络上广播数据的通信量,提高转发效率。在Windows或者Linux都可以查看arp表arp -a
。