ARP:地址解析协议

来源:互联网 发布:mac系统破解版下载 编辑:程序博客网 时间:2024/04/29 20:40

1. ARP的数据包格式

以太网的帧头部(橙色部分)广播MAC地址(全1):其目标是网络上的所有主机MAC地址:请求地址解析的主机MAC地址 协议类型:0x0806ARP协议)

ARP协议报文硬件类型:表明ARP实现在何种类型的网络上。一般为0x0001,表示以太网地址 协议类型:代表解析协议(上层协议)。一般为0x0800表示IP硬件地址长度:MAC地址长度,此处为6个字节协议地址长度:IP地址长度,此处为4个字节操作类型:代表ARP数据包类型。0表示ARP请求数据包,1表示ARP应答数据包  MAC地址:发送端MAC地址IP地址:代表发送端协议地址(IP地址)目标MAC地址:目的端MAC地址(待填充)目标IP地址:代表目的端协议地址(IP地址)
    对于一个ARP请求来说,除目的MAC地址外其他字段都有填充值。当系统收到一个目的端是本季的ARP请求时,就把本机MAC地址填充,然后用两个目的端的地址分别替换两个源端的地址,并把操作类型置为2,然后发送回去。

    下图是电脑上使用wireshark软件抓包的一个ARP请求数据包。

  ARP应答协议报文和ARP请求协议报文类似。不同的是,操作类型字段,请求协议为1,应答协议为2;以及源MAC、源IP、目的MAC、目的IP不同;

 

2. ARP高速缓存

      该高速缓存存放着最近Internet地址到硬件地址之间的映射记录。每个映射记录都设置了生存时间(通常为几分钟或几十分钟),凡超过生存时间的记录都会从映射记录中删除。     可以通过arp -a查看ARP高速缓存中的所有内容。     可以通过arp -s来增加高速缓存中的内容,通过命令只能增加静态ARP信息。

       可以通过arp -s来删除高速缓存中的内容,比如arp -d 157.55.85.212

3. 代理ARP

    如果A R P请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托A R PA R P代理(Proxy ARP)。这样可以欺骗发起A R P请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机是在路由器的“另一边”。路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。


   上图是代理ARP的应用例子,路由器从E0/0端口出来的属于子网:192.168.1.16,从E0/1端口出来的属于子网:192.168.1.32PC1需要向PC2发送报文时,因为PC1不知道子网的存在,并且与PC2属于同一个主网络网段。所以PC1将发送ARP请求广播报文来请求PC2MAC地址。   报文到达路由器时,路由器识别出报文的目标地址属于另一个子网,因此向请求主机回复E0/0接口的MAC。之后PC1将发往PC2的数据包都发往MAC地址为11:22:33:44:55:67,由路由器将数据包转发到目标主机PC2。同样,路由器为PC2做同样的代理发送数据包的工作。这种ARP使得子网化网络拓扑对于主机来说是透明的。

4. 免费ARP

   因为它不是经过其他主机的ARP请求广播后发出的ARP广播,所以叫无故ARP,无故(Gratuitous ARPGARPARP也称为无为ARP,免费ARP。主机有时会使用自己的IP地址作为目标地址发送ARP请求。这种ARP请求称为无故ARPGARP

主要有两个用途:  <1> 检查重复地址(如果收到ARP响应表明存在重复地址)。  <2> 用于通告一个新的数据链路标识。当一个设备收到一个arp请求时,发现arp缓冲区中已有发送者的IP地址,则更新此IP地址的MAC地址条目。