ARP和RARP
作者:互联网
ARP协议
IP地址把实际的物理地址对上层应用隐藏起来,使Internet表现出统一的地址格式,但是在实际的网络通信过程中,IP地址无法被物理网络所识别,物理网络依然只能识别物理地址,所以,要实现通信,就必须实现IP地址对物理地址的映射。
ARP报文格式
要先清楚的我们常说的以太网地址就是物理地址
字段1是ARP请求的目的以太网地址,全1时代表广播地址。
字段2是发送ARP请求的以太网地址。
字段3以太网帧类型表示的是后面的数据类型,ARP请求和ARP应答这个值为0806
。
字段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是目的端的硬件地址和协议地址。
对于以太网而言,当IP数据包通过以太网发送时,以太网链路并不识别32位的IP地址,它们是以48位的MAC地址标识以太网节点的。因此,必须在IP地址与MAC地址之间建立映射(map)关系,建立这种映射的过程称为地址解析(Resolution)。
ARP
(Address Resolution Protocol,地址解析协议)就是用于动态地将IP地址解析为MAC地址的协议。主机通过ARP解析到目的MAC地址后,将在自己的ARP缓存表中增加相应的IP地址到MAC地址的映射表项,用于后续到同一目的地报文的转发。
假设HostA和HostB在同一个网段,HostA要向HostB发送IP包,其地址解析过程如下:
1)HostA首先查看自己的ARP表,确定其中是否包含有HostB的IP地址对应的ARP表项。如果找到了对应的表项,则HostA直接利用ARP表项中的MAC地址对IP数据包封装成帧,并将帧发送给HostB。
2)如果HostA在ARP表中找不到对应的表项,则暂时缓存该数据包,然后以广播方式发送一个ARP请求。ARP请求报文中的发送端IP地址和发送端MAC地址为HostA的IP地址和MAC地址,目标IP地址为HostB的IP地址,目标MAC地址为全0的MAC地址。
3)由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求。HostB比较自己的IP地址和ARP请求报文中的目标IP地址,由于两者相同,HostB将ARP请求报文中的发送端(即HostA)IP地址和MAC地址存入自己的ARP表中,并以单播方式向HostA发送ARP响应,其中包含了自己的MAC地址。其他主机发现请求的IP地址并非自己,于是都不做应答。
4)HostA收到ARP响应报文后,将HostB的MAC地址加入到自己的ARP表中,同时将IP数据包用此MAC地址为目的地址封装成帧并发送给HostB。
RARP协议
主机只知道自己的硬件地址时,可以通过RARP
(Reverse Address Resolution Protocol,反向地址解析协议)解析自己的IP地址。RARP常用于无盘工作站启动前获取自身IP地址。在刚刚启动时,无盘工作站只知道自己网卡的MAC地址,需要获得自己的IP地址,于是向网络中广播RARP请求。RARP服务器接收广播请求后发送应答报文,无盘工作站随即获得IP地址。
RARP服务器要响应请求,首先必须知道物理地址与IP地址的对应关系。为此,在RARP服务器中维持着一个本网段的“物理地址-IP地址”映射表。当某无盘工作站发出RARP请求后,网上所有主机均收到该请求,但只有RARP服务器处理请求并根据请求者物理地址响应请求。无盘工作站发出的RARP请求中携带其物理地址,服务器根据此硬件地址查找其IP地址。由于服务器此时已经知道无盘工作站的物理地址,因此不再采用广播方式,而是直接向无盘工作站发送单播应答。
对应于ARP、RARP请求以广播方式发送,ARP、RARP应答一般以单播方式发送,以节省网络资源。
标签:ARP,请求,MAC,RARP,地址,IP地址 来源: https://blog.csdn.net/weixin_45468947/article/details/110437948