概念:
ARP(Address Resolution Protocol)是一种网络协议,用于将网络层的IP地址映射到物理网络接口(MAC地址),以便在局域网(LAN)上进行通信。其主要作用是解决从IP地址到MAC地址的映射关系,使得数据包能够通过物理网段正确地传递。
当计算机发送数据包到目标IP地址时,它需要知道目标IP对应的MAC地址才能正确地转发数据。这时就会使用ARP协议来完成以下过程:
- ARP请求(ARP Request):发送方主机向局域网上的广播地址发送一个ARP请求,该请求包含源主机的IP地址和MAC地址,并询问具有目标IP地址的设备的MAC地址。
- ARP应答(ARP Reply):拥有目标IP地址的设备收到ARP请求后,会向发送方主机发送一个ARP应答,其中包含它的IP地址和MAC地址。
- ARP缓存(ARP Cache):发送方主机在收到ARP应答时,将对应IP地址和MAC地址的映射关系存储在ARP缓存中,在之后的通信中可以直接使用该映射关系。
ARP协议的使用场景:
- 在局域网内部,当主机A要发送数据给主机B时,会先通过ARP协议查询目标主机B的MAC地址,并将数据包封装在以太网帧中发送到目标MAC地址。
- 当一个路由器接收到一个来自外部网络的数据包,并需要将其转发到目标主机时,也会利用ARP协议查询目标主机的MAC地址。
ARP协议的常用配置:
- ARP协议的配置通常涉及以下两个方面:
- ARP缓存表:每个主机或路由器都维护一个ARP缓存表,其中存储了IP地址和相应的MAC地址的对应关系。该表用于快速查找目标MAC地址,在必要时可以手动添加或删除条目。
- ARP请求与回应:当一个主机需要获取另一个主机的MAC地址时,它会发送一个ARP请求广播消息,询问该IP地址对应的MAC地址。而目标主机则会回复一个ARP响应消息,包含自己的MAC地址。
ARP协议的使用过程:
以下是一个示例说明ARP的使用过程:
假设有两台主机A和B,它们连接在同一个局域网上,具有以下信息:
- 主机A的IP地址:192.168.0.10,MAC地址:AA:BB:CC:DD:EE:FF
- 主机B的IP地址:192.168.0.20,MAC地址:11:22:33:44:55:66
- 主机A想要向主机B发送数据包。
- 主机A首先检查ARP缓存,看是否有目标IP地址(192.168.0.20)对应的MAC地址。
- 如果在ARP缓存中找到了目标IP地址对应的MAC地址,则直接使用该映射关系发送数据包。
- 如果ARP缓存中没有目标IP地址的映射关系,在主机A上发送一个ARP请求,广播给整个局域网。
- 主机B收到ARP请求后,检查请求中的IP地址是否与自己的IP地址相匹配。
- 如果匹配,主机B会发送一个ARP应答,将自己的IP地址和MAC地址作为应答发送给主机A。
- 主机A收到ARP应答后,将目标IP地址(192.168.0.20)和相应的MAC地址(11:22:33:44:55:66)存储在ARP缓存中,并使用此映射关系发送数据包到主机B。
这样,通过ARP协议的帮助,主机A成功地获取了主机B的MAC地址,并可以进行正常的通信。
需要注意的是,ARP协议仅适用于同一物理网络的局域网内部,而不涉及跨越路由器的网络通信。对于跨越子网的通信,使用ARP的方法与上述过程略有不同,包括使用代理ARP或者通过网关进行通信。
可以看下 一个arp 抓包的内容如下:
查看路由器或主机上的ARP缓存表:
- 在Windows操作系统上,可以使用命令
arp -a
来查看本地主机的ARP缓存表。在路由器上,具体的查看方法可能因厂商和操作系统而异。 - 在Linux操作系统上,可以使用命令
arp -n
来查看本地主机的ARP缓存表。路由器上的具体查看方法可能需要参考相关文档或运行特定的命令。 - 在路由交换设备上,可以通过dispaly arp all 命令查看当前所有得arp缓存表。