arp协议解析

什么是ARP协议?

ARP被称为地址解析协议,它在局域网内部通过IP地址查找到目标主机的MAC地址。即ARP协议完成了一次从IP地址到MAC地址的转化。


为什么需要ARP协议?

因为在局域网中,如果源主机要和目的主机建立通信关系,那么源主机必须要知道目的主机的MAC地址(即硬件地址),但是如果目的主机或者源主机是第一次进行通信的,那么源主机要怎样才能知道目的主机的MAC地址呢? 所以这样就引入了ARP地址协议。


ARP数据报

什么是ARP数据报? 由上面的问题我们知道了,ARP地址解析协议的引入是为了让源主机和目标主句在进行通信时能够获得目标主机的MAC地址,那么是如何获得的呢? 
我们知道,在网络中,主机A要获得主机B的信息,主机B不能给主机A主动发送它自己的信息,主机A要想获得主机B的信息,它就必须向主机B发送相关信息,请求主机B把自己的信息发送给他,这里主机A发送的请求信息和主机B的应答信息就是我们所说的ARP数据报,它有请求和应答两种类型。 
arp协议的数据报格式如下图: 
这里写图片描述

下面来解释下里面相关结构的用途: 
* 帧类型*:用来向收到数据报的主机表示该数据报的类型,常见类型如下: 
0800:IP数据报; 
0806:ARP请求/应答数据报; 
8035:RAPP请求/应答; 
协议类型:表示的是ARP数据报是传给哪一层的协议。 
op:表示是应答包(0x2),还是请求包(0x1); 
剩余的一些字段都是相关的地址,在这里我们要注意一个问题,就是外面的首部地址和里面的发送端还有目的以太网地址都是一样的,那么为什么还要在一个数据报中有两个呢? 这个问题大家先不要着急,会在下个问题中被解决。


ARP地址解析协议是如何工作的?

下面我们就来谈一谈ARP地址解析协议是如何把目的地址的IP地址转化成MAC地址的。 

1. 首先,主机A想要向主机B发送消息,但它不知道主机B的MAC地址,只知道主机B的IP地址。这时,主机A会在当前局域网下以广播的形式发送ARP请求数据报,表示主机A想知道主机B的MAC地址(注:广播时,以太网首部的目的地址为全f)。 

{为什么发送目的地址时候是FF FF FF FF FF FF?这是因为 这样可以给所有的地址发送,因为我不知道到底是哪一个 所有全部都发}

(ARP请求数据报.png) 
2. 由于是广播,所以在本局域网上的所有主机都会受到主机A发送的ARP数据报,然后所有主机会把以太网首部这个报头给去掉,向上面的网络层发送ARP数据报。在这里我们便可以回答上面的问题了,以太网首部和ARP数据报内的MAC地址都不能少,一个是在数据链路层使用的,一个是在网络层使用的,因为两个层都不能看到互相的数据。 
3. 网络层首先会检查op字段,发现这时个ARP请求数据报,然后又会检查目的IP地址字段,检查完毕后,这时除了主机B外,在这个局域网内的其他主机都会把数据报丢弃,因为只有主机B的IP地址和目的IP地址是相同的。 
(ARP应答数据报) 
5. 主机A在收到主机B的ARP应答数据报后,会在其ARP高速缓存中写入主机B的IP地址到主机B的硬件地址的映射,还会设置相应的生存时间。 
注: 
高速缓存的引入是为了解决如果主机A在一段时间内反复向主机B发送数据,如果没有高速缓存存储第一次发送后得到的主机B的MAC地址,那么每次都要发送ARP数据报带来的开销是非常大的。

生存时间的引入是为了每次都要定期更新各个高速缓存的映射关系,防止主机地址发生变化而导致没有主机可以收到数据报,这个生存时间就是更新时间。

猜你喜欢

转载自blog.csdn.net/Gease_lcj/article/details/80270291