硬件类型 (2byte) | 协议类型 (2byte) | 硬件长度(1byte) | 协议长度(1byte) | 操作类型(2byte) | 发送者mac(6byte) | 发送者ip(4byte) | 目标mac (6byte) | 目标ip (4byte) | |
Arp请求 | 1 | 0x0800 | 6 | 4 | 1 | 33:44 | 1.1 | Ff:ff | 1.2 |
Arp应答 | 1 | 0x0800 | 6 | 4 | 2 | 33:55 | 1.2 | 33:44 | 1.1 |
一、 arp报头结构
硬件类型,实现在何种网络上,以太网的值一般为0x0001
协议类型:发送方提供的高层协议类型,arp协议是位于TCP/IP协议栈中的底层协议。所以一般为ip协议的类型0x0800
硬件长度和协议长度:指的是地址的长度即:指明的是mac地址和ip地址的长度 6和4.
操作类型:arp请求为1 arp应答为2 RARP请求为3 RARP应答为4
二、工作原理
PC1和pC2进行通信时,PC1.先查看自己arp缓存是否有目的ip对应的mac地址,如果没有则发送arp request 报文,报文结构如上。交换机会将该arp进行广播,PC2和PC3都会收到。Pc3查看arp中的目的ip发现跟自己的ip一样,则发送arp应答报文,结构如图上。
Pc在收到arp时,都会根据arp报文里的源ip和mac更新自己arp表。
三、arp缓存
为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态arp。动态arp随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个映射添加后2分钟内没有再使用,则此映射过期并从ARP缓存中删除;如果某个映射在这两分钟内又使用过,则又收到2分钟的生命周期,一直到10分钟的最长生命周期。不过不同的设备arp缓存的有效期也不同。
四、代理arp(貌似目前很少用arp代理了)
代理ARP就是通过使用一个主机(通常为router),来作为指定的设备对另一设备的ARP请求作出应答。
A要和D通信,目的ip为1.1.2.2/24,因为A的子网掩码为16,A一看目的ip和我在同一个网段,Arp缓存里又没有目的ip对应的mac,所以A直接发送一个arp请求报文,但是路由器默认的是不会转发广播包的,所以D不会响应A的arp请求。路由器知道D在它的子网内,所以路由器给A发一个单播回应,将自己接口的mac地址回应给A。A根据arp应答报文里的信息更新自己的arp表。以后发给D的数据全都会发给路由器。由路由器发给D。
Arp代理的好处:
能够在不影响其他router的路由表的情况下在网络上添加一个新的router
Arp proxy的坏处:
1.增加了某一网段上ARP流量
2.主机需要更大的ARP table来处理IP地址到MAC地址的映射
3.安全问题,比如ARP欺骗
五、免费arp
即主机发送一个目标ip为自己的arp请求包。
目的:
(1)检查重复地址(如果收到ARP响应表明存在重复地址)。
(2)用于通告一个新的数据链路标识。当一个设备收到一个arp请求时,发现arp缓冲区中已有发送者的IP地址,则更新此IP地址的MAC地址条目。
六、arp欺骗
单项欺骗
B不断发送伪造的应答报文发送给A,使A更新自己的arp表,使A发给C的报文都发给自己。但此时C还是可以给A发送消息的。
双向欺骗:
即B做同样的操作给C,使c发的消息也给B