一. 作用:
地址解析协议是用来提供ip地址与硬件地址之间的动态映射的
二 . 报文格式:
| 字段 | 字段说明 | | ------- -------- |
以太网目的地址 | 目的地的硬件地址(mac地址),全为1的话代表是广播地址,电缆上所有以太网接口都要接受此数据帧 |
---|---|
以太网源地址 | 发送方的硬件地址 |
-------- | -------- |
帧类型 | 对于arp请求或应答,该字段的值为0x0806 |
-------- | -------- |
硬件类型 | 硬件地址类型 1代表以太网地址 |
-------- | -------- |
协议类型 | 要映射的协议地址类型 0x800代表IP地址 ,它的值与包含IP数据报的以太网数据帧的类型字段值相同,有意设计的 |
-------- | -------- |
硬件地址长度 | mac地址为6字节 |
-------- | -------- |
协议地址长度 | IP地址为4字节 |
-------- | -------- |
操作字段 | 在报文中占2个字节,1表示ARP请求,2表示ARP应答,3表示RARP请求,4表示RARP应答 |
-------- | -------- |
发送端以太网地址 | 发送方的硬件地址 |
-------- | -------- |
发送端ip地址 | 发送方ip地址 |
-------- | -------- |
目的端以太网地址 | 目的端的硬件地址 |
-------- | -------- |
目的IP地址 | 目的端ip地址 |
前三个字段代表的是以太网首部站14字节,后面的字段代表arp请求或应答的数据帧占28字节,这里面有些字段是重复的。
三.arp请求过程
首先明确arp是发生在局域网内的。 当A主机要向B主机发送ip数据报,首先会在本机的arp缓冲表中查看有无此ip所对应的硬件地址,如果有就查出来写入数据报中,如果没有就启动arp进程,在局域网上广播一个arp请求,请求内容大致意思是: 我是ip:xx.xx.xx.xx(A主机的ip) 我的硬件地址是 mac:xx.xx.xx.xx.xx.xx, 我想知道ip:xx.xx.xx.xx(B主机的ip)的硬件地址是多少 局域网上所有主机都会收到这样一个请求 如果存在主机B,主机B就会接受请求,并更新自己的arp缓存,其余的主机会丢弃这个包。主机B将自己的mac地址写入响应包,将数据包类型改为响应类型,将目的地址改为源地址,然后通过单播的方式发送给主机A,主机A接受到响应包会进行更新arp缓存,并将mac地址写入ip数据报。