ARP协议格式和实例分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/deramer1/article/details/73467048

ARP协议是一个网络层协议,它的出现是为了完成网络层的ip和数据链路层的MAC地址之间的对应关系。

一、ARP协议的报文格式

arp的报文格式如下:


1.硬件地址类型:该字段表示物理网络类型,即标识数据链路层使用的是那一种协议,其中0x0001为以太网。


2.协议地址类型:该字段表示网络地址类型,即标识网络层使用的是那一种协议,其中0x0800表示为ip。


3.硬件地址长度:表示源和目的物理地址的长度,单位是字节。


4.协议地址长度:表示源和目的的协议地址的长度,单位是字节。


5.操作:记录该报文的类型,其中1表示ARP请求报文,2表示ARP响应报文。


6.源站的物理地址和目的地址为发送请求报文的主机填写。


7.目的站物理地址在请求报文中为空,目的ip为需要进行转换的ip。在回应报文中,目的地址为,arp请求者的地址。目的ip为请求者的ip.

注意:arp报文是直接封装在MAC帧的数据部分,在MAC地址的标识当中注明为0806,具体的帧为下图所示:


二、ARP协议的工作过程

    当需要ip地址和mac地址进行转换的时候,首先,主机会查询自己的arp缓存表,如果自己的arp缓存表中有相应的对应关系,会直接取出对应的MAC地址,填写到MAC帧里面。

     如果arp缓存表中没有该地址映射,主机会在局域网内发MAC地址广播,MAC帧的源MAC为自己,目的MAC为ff-ff-ff-ff-ff-ff。发送的arp报文的的源ip为自己的ip,目的ip为需要进行转换的ip地址,源MAC是自己的mac地址,目的地址为空。当其它主机发现自己的ip地址和arp报文中的目的ip地址相同时,会用单播进行回应,源ip为自己的ip,源MAC为自己的MAC,目的ip和目的MAC为刚才请求arp的MAC。例如:主机a的ip地址为192.168.10.14,MAC地址为00-1e-90-7c-b6-fe,它需要知道192.168.10.15的MAC地址。在ARP请求报文中,源ip,MAC为a主机的ip和mac。目的ip为192.168.10.15,目的MAC为空。该帧为广播帧。在回应报文中,源ip为192.168.10.15,源MAC为192.168.10.15的MAC地址。目的ip,目的MAC为a主机的ip和MAC。该帧为单播帧。同时将a主机的ip和mac记录在自己的ARP缓存当中。

    如果请求的MAC地址不再同一个网段内,那么该请求报文需要跨网端进行查找,这时候,MAC帧的源ip和源mac都是网管的相应地址。通过,网关进行跨网段的查找。arp报文和上面一样。

三、ARP协议的具体报文分析

下面我们通过一个具体的ARP报文来进行分析,帮助我们更深一步掌握ARP报文。

下面是一个ARP请求报文的格式:


可以看到MAC帧的目的MAC为广播地址,源MAC为请求者的MAC地址,协议的类型是0x0806.

在ARP请求报文中,Hardware type 位0x0001位以太帧。Protocal type 为0x0800位i。 Hard size 为6字节 Protocal size 为4 字节。请求类型为 0x0001,为ARP请求报文。

源地址,源ip,目的ip如上所示,可以看见在请求报文中,目的MAC为空。

下面是ARP的响应报文的格式:


前面的都一样,在这里就不说了。MAC帧的地址,变成了单播的地址。同样可以看到源MAC换成了刚才请求的ip的MAC,源ip为刚才请求的ip。目的ip,MAC为刚在请求者的ip和MAC。请求类型变成了0x0002,位ARP响应报文。

以上是我对ARP报文的分析。

展开阅读全文

没有更多推荐了,返回首页