ARP和RARP
ARP
ARP简介
ARP地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。一般说以太网地址就是指MAC地址。
ARP报文格式
字段1是ARP请求的目的以太网地址,全1时代表广播地址。
字段2是发送ARP请求的以太网地址。
字段3以太网帧类型表示的是后面的数据类型,ARP请求和ARP应答这个值为0x0806。
字段4表示硬件地址的类型,硬件地址不只以太网一种,是以太网类型时此值为1。
字段5表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。
字段6和7表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节。
字段8是操作类型字段,值为1,表示进行ARP请求;值为2,表示进行ARP应答;值为3,表示进行RARP请求;值为4,表示进行RARP应答。
字段9是发送端ARP请求或应答的硬件地址,这里是以太网地址,和字段2相同。
字段10是发送ARP请求或应答的IP地址。
字段11和12是目的端的硬件地址和协议地址。
抓包分析
下面是抓取的ARP数据包,可以对照上面的说明进行理解。
图中红框圈起来的是一对ARP请求和ARP应答。
ARP请求报文
ARP应答报文
ARP工作流程
假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
ARP表
设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用于后续到同一目的地报文的转发。
动态ARP表
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口down时会删除相应的动态ARP表项。
静态ARP表
静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。
配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。
RARP
RARP
RARP分组的格式与ARP分组基本一致。RARP为逆地址解析协议,作用与ARP相反,用于将MAC地址转换为IP地址。
具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址,但是无盘机,如X中断或无盘工作站,则需要采用其他方法来获得IP地址。
总得说来就是,网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址。
RARP的工作过程如下:
网络上每台设备都会有一个独一无二的硬件地址,一般是由设备厂商分配的MAC地址。发送主机从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求任何收到此请求的RARP服务器分配一个IP地址;
RARP服务器收到此请求后,检查其RARP表项,查找该MAC地址对应的IP地址;
如果存在,RARP服务器就给发送主机回复一个响应数据包,并将此IP地址提供给对方主机使用;
如果不存在,RARP服务器对此不做任何的响应;
发送主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯,如果一直没有收到RARP服务器的响应消息,表示初始化失败。
需要清楚,与ARP不同的是RARP是主机向RARP服务器获取自己的IP地址。
RARP从概念上看起来比较简单,但实际上比较复杂,服务器一般要为多个主机提供硬件地址到IP地址的映射,该映射包含在一个磁盘文件中,而内核一般不读取和分析磁盘文件,所以RARP服务器的功能就需由用户进程来提供。更为复杂的是,RARP请求是作为一个特殊类型的以太网数据帧来传送的,其请求是在硬件层上进行广播的,不经过路由器进行转发。
RARP协议是许多无盘系统在引导时用来获取IP地址的,一个RARP请求在网络上进行广播,它在分组中表明发送端的MAC地址,以请求相应IP地址的响应。另外RARP服务器的实现与系统相关。
对应于ARP,RARP请求是以广播方式发送,而ARP,RARP应答则一般是单播传送的。
1
END
1
欢迎关注我们~
计算机网络翻转课堂