1. 简介
同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。如果知道其IP地址,则可以通过ARP(Address Resolution Protocol,地址解析协议)查询到其MAC地址。ARP仅用于IPv4,IPv6使用ICMPv6。
2. ARP帧格式
ARP帧格式上图是一个以太网封装上层ARP包后的以太网帧,其中的一些字段,如
- 硬件类型:硬件地址类型,如以太网的值为0x0001
- 协议类型:映射的协议的地址类型,如IPv4的值为0x0800
- 硬件地址长度:硬件地址占多少个字节的长度,如以太网占6个字节,该值就为6
- 协议地址长度:协议地址占多少个字节的长度,如IPv4占4个字节,该值就为4
- OP:指出这个ARP包是一个请求或响应包,请求为1,响应为2
3. 原理
ARP抓包结果以主机A(192.168.1.103)向所在子网的主机B(192.168.1.101)发送数据为例:
-
当主机A发送数据时,主机A会在本机的ARP缓存表中寻找是否有主机B的IP地址。
- 如果找到就知道主机B的MAC地址为
主机B的MAC地址
,直接把主机B的MAC地址写入帧首部发送数据。
- 如果找到就知道主机B的MAC地址为
-
如果在ARP缓存表中没有找到主机B的MAC地址,主机A就会在网络上广播一个ARP请求帧。如下图:
ARP请求结果 -
同一子网上的主机都会收到这个帧,并且根据ARP包的内容更新自己的ARP缓存表。但只有主机B接收到这个帧时,单播一个目的IP地址为192.168.1.103的ARP响应帧,其他主机则丢弃这个请求帧。
ARP响应结果
ARP缓存表采用老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
网友评论