ARP(AddressResolutionProtocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议. ARP的基本功能就是负责将一个已知的IP地址解析成MAC地址,以便主机间能正常进行通信。ARP工作过程分为两个阶段,一个是ARP请求过程,一个是ARP响应过程.
(1)当主机PC1想发送数据给主机PC2时,首先在自己的本地ARP缓存表中检查主机PC2匹配的MAC地址。
(2)如果主机PC1在缓存中没有找到相应的条目,它将询问主机PC2的MAC地址,从而将ARP请求帧广播到本地网络上的所有主机。该帧中包括源主机PC1的IP地址和MAC地址。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的 IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将会丢弃 ARP请求。
(3)主机PC2确定ARP请求中的IP地址与自己的IP地址匹配,则将主机 PC1的地址和MAC地址添加到本地缓存表。
(4)主机PC2将包含其MAC地址的ARP回复消息直接发送回主机PC1(这个数据帧是单播)。
(5)当主机PC1收到从主机PC2发来的ARP回复消息时,会将主机PC2的IP 和MAC地址添加的自己的ARP缓存表。本机缓存是有生存期的,默认ARP缓存表的有效期是120s。当超过该有效期后,将再次重复上面的过程。主机PC2的MAC地址一旦确定,主机PC1将能向主机PC2发送IP通信了。
2.ARP缓存表维护工具arp命令。该命令用于查询本机ARP缓存中的IP地址和MAC地址的对应关系、添加或删除静态对应关系等。用户也可以通过使用arp命令验证ARP缓存条目的生命周期。ARP命令的语法格式 arp v。
3. 缓存表中保存中多个ARP条目。每个ARP条目都是由一个IP地址和一个对应的MAC地址组成。
注意:使用arp命令在Windows和Linux下删除ARP缓存条目的方法有点区别。在Linux下,删除ARP条目时,必须指定接口地址。在Windows下,可以直接执行arp-d命令删除。在Linux下,如果不指定接口时,将会提示“arp:needhostname”信息.
操作类型:表示ARP协议数据包类型。1表示ARP协议请求数据包,2表示ARP协议应答数据包。
ARP协议应答协议报文和ARP协议请求协议报文类似。不同的是,此时以太网帧头部的目标MAC地址为发送ARP协议地址解析请求的MAC地址,而源MAC地址为被解析的主机的MAC地址。同时,操作类型字段为2,表示ARP协议应答数据包,目标MAC地址字段被填充为目标MAC地址。
以上内容表示以太网帧头部信息。其中源MAC地址为02:00:04:78:01:7b,目标MAC地址为ff:ff:ff:ff:ff:ff(广播地址)。这里的目标地址为广播地址,是因为主机PC2不知道PC1主机的MAC地址。这样,局域网中所以设备都会收到该数据包。
以上内容表示地址解析协议内容,request表示该包是一个请求包。在该包中包括有ARP更详细的字段信息,如下所示:
通过以上内容的介绍,可以确定这是一个在以太网上使用IP的ARP请求。从该内容中,可以看到发送方的IP(10.1.1.142)和MAC地址(02:00:04:78:01:7b),以及接收方的IP地址(10.1.1.166)。由于目前还不知道目标主机的MAC地址,所以这里的目的MAC地址为00:00:00:00:00:00。