一、ARP协议简介
简单的说ARP协议就是实现ip地址到物理地址的映射。当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址(物理地址)来确定网络接口的。
ARP高效运行的关键在于每个主机上都有一个ARP高速缓存,这个缓存中存放了最近的ip地址和物理地址的映射记录(缓存中,每页的生存时间一般为20分钟)。
ARP分组格式:
分组格式分为以太网首部部分和arp请求/应答部分,各部分细节如下:
以太网目的地址:指的是这条数据帧要发送到以太网中的哪些地方(物理地址)。
以太网源地址:发送这条数据帧的以太网地址(自己的物理地址).
帧类型:区分这是一个干啥用的帧,如arp请求或应当的帧类型号为0x0806,arap的类型号为0x8035
硬件类型:1表示是以太网
协议类型:表示要映射的协议地址类型。(0x0800表示ip地址)
硬件地址长度和协议地址长度,对于arp请求/应答来说始终是6和4.
op:1-arp请求,2-arp应当,3-rarp请求,4-rarp应答
发送端以太网地址:发送端的物理地址
发送端ip地址:就是发送端的ip地址
目的以太网地址:目的的物理地址
目的ip地址:目标ip地址
二、wareshark抓包分析
抓取下面几个包,然后通过过滤器过滤只看arp相关的包。
从中可以简单的看出arp请求和响应的过程了,显示两个请求问谁知道192.168.1.102的物理地址告诉192.168.1.1,然后后面有主机发送告诉说192.168.1.102的物理地址是d0:7e:35:83:c1:88
具体过程如下:
请求包:
这是一个请求arp数据包(已知一个ip地址,想知道其对应的物理地址),所以其op的值为1,既然是请求,那么事先就不知道目的的物理地址,所以以太网目的地址是全ff(广播地址),而目的以太网地址,由于不知道目的以太网地址,所以设置为全0表示全网段(这个我是根据结果猜的,如有错误请及时指出,谢谢),其他对应arp分组格式即可。
应答包:
与请求包相比,应答包是知道目的地址的(请求包的地址),所以这里不是广播而是单播,操作码op为2表示这是一个应答包,其他对应arp协议分组格式即可。