ARP协议 地址解析协议:IP地址转换为MAC地址

ARP协议 地址解析协议

ARP协议全称 Address Resolution Protocol。
ARP协议能实现任意网络层地址到任意物理地址的转换,我们在此只讨论IP到以太网MAC地址的转换。

工作原理:

主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址,此网络上的的其他机器都将收到这个请求,但只有目的机器会回应一个ARP应答,其中包含自己的物理地址。

以太网ARP请求/应答报文:

ARP协议 地址解析协议:IP地址转换为MAC地址

硬件类型:不同的值表示不同的物理地址类型。值为 1 表示 MAC 地址。
协议类型:表示要映射的协议地址类型。值为 0x800 表示 IP 地址。
硬件地址长度:对应硬件类型的地址长度,MAC地址长度为6。单位是字节。
协议地址长度:对应的协议类型的长度,IP地址长度是4。单位是字节。
操作:4中操作类型:1--ARP请求、2--ARP应答、3--RARP请求、4--RARP应答
最后4各个字段是通信双方的以太网地址和IP地址。

发送方会填写除目标端以太网地址外的其他3个字段,构建ARP请求并发送,接收端发现该请求的目的端IP地址是自己,就把自己的以太网地址填进去,然后交换两个目的端地址和两个发送端地址,构建ARP应答并返回(操作数要改为2)。

ARP请求/应答报文的长度是28字节,再加上以太网帧头部和尾部的18字节,则一个携带ARP请求/应答报文的以太网帧长度是46字节。不过有的以太网帧数据部分要求长度至少是46字节,此时ARP请求/应答报文将增加一些填充字节,以满足这个要求。在这种情况下,一个携带ARP请求/应答报文的以太网帧长度为64字节。

(以太网帧头部和尾部的18字节是固定的,规定传输的帧最小长度是64字节,也就是要求数据部分不小于46字节,显然ARP报文才28字节是不够的,所以要填充下)

ARP高速缓存的查看和修改:

ARP维护一个高速缓存,包含经常访问或者最近访问的机器地址到物理地址的映射。这样就避免了重复的ARP请求,提高了发送数据包的速度。

ARP协议 地址解析协议:IP地址转换为MAC地址

使用tcpdump观察ARP通信过程:

抓包前先清理ARP缓存。

ARP协议 地址解析协议:IP地址转换为MAC地址