ARP协议详解
- 1、概述
- 2、ARP协议的基本概念
- 3、ARP协议的工作原理
- 4、以案例说明ARP协议的工作原理
- 1)同一局域网内的MAC寻址
- 2)不同局域网内的MAC寻址
- 1.主机 A 查询 ARP 表,期望寻找到目标路由器的本子网接口的 MAC 地址。
- 2.主机 A 未能找到目标路由器的本子网接口的 MAC 地址,将采用 ARP 协议,问询到该 MAC 地址,由于目标接口与主机 A 在同一个子网内,该过程与同一局域网内的 MAC 寻址相同。
- 3.主机 A 获取到目标接口的 MAC 地址,先构造 IP 数据报,其中源 IP 是 A 的 IP 地址,*目的 IP 地址是 B 的 IP 地址*,再构造链路层帧,其中源 MAC 地址是 A 的 MAC 地址,目的 MAC 地址是本子网内与路由器连接的接口的 MAC 地址。主机 A 将把这个链路层帧,以单播的方式,发送给目标接口。
- 4.目标接口接收到了主机 A 发过来的链路层帧,解析,根据目的 IP 地址,查询转发表,将该 IP 数据报转发到与主机 B 所在子网相连的接口上。
- 5.路由器接口查询 ARP 表,期望寻找到主机 B 的 MAC 地址。
- 6.路由器接口如未能找到主机 B 的 MAC 地址,将采用 ARP 协议,广播问询,单播响应,获取到主机 B 的 MAC 地址。
- 7.路由器接口将对 IP 数据报重新封装成链路层帧,目标 MAC 地址为主机 B 的 MAC 地址,单播发送,直到目的地。
- 5、ARP的应用
- 6、总结
1、概述
在计算机网络中,地址解析协议(Address Resolution Protocol,简称ARP)是一个重要的协议,用于将网络层的IP地址解析为数据链路层的MAC地址。ARP在局域网(LAN)中广泛使用,是网络通信中不可或缺的一部分。本文将详细介绍ARP协议的工作原理、具体实现、常见问题及其解决方案。
2、ARP协议的基本概念
ARP是一种网络层协议【我们从它能看到IP地址的角度理解】,工作在OSI模型的第三层(网络层)和第二层(数据链路层)之间,用于在同一个局域网内将IP地址映射为MAC地址。MAC地址是硬件地址,用于在以太网中标识网络接口,而IP地址是逻辑地址,用于标识网络中的主机。
-
IP地址
IP地址是一个逻辑地址,用于标识网络中的设备。IPv4地址由32位二进制数表示,通常以点分十进制形式表示(例如192.168.1.1)。 -
MAC地址
MAC地址是一个硬件地址,用于标识网络接口。MAC地址由48位二进制数表示,通常以六组十六进制数表示(例如00:1A:2B:3C:4D:5E)。
3、ARP协议的工作原理
ARP协议通过广播请求和单播响应的方式工作,主要包括以下步骤:
1)ARP广播请求:
当一个主机需要发送数据到另一个主机时,会首先检查自己的ARP缓存中是否有目标IP地址对应的MAC地址。
如果缓存中没有对应的MAC地址,主机会发送一个ARP请求报文,该报文包含源IP地址、源MAC地址、目标IP地址,并以**广播方式【目的MAC为FF:FF:FF:FF:FF:FF】**发送到局域网中的所有设备。
2)ARP单播响应:
局域网上所有设备都会接收到ARP请求报文,但只有目标IP地址匹配的设备会回应。
目标设备会发送一个ARP响应报文,该报文包含目标IP地址和对应的MAC地址,以及自己的IP地址和MAC地址,并以单播方式发送回请求的主机。同时,主机还会提取发送过来的IP地址和MAC地址信息,在自己的ARP表中构造一条IP-MAC的映射记录。
3)缓存更新:
请求主机接收到ARP响应后,会将目标IP地址和MAC地址映射关系存储在ARP缓存中,以便下次通信时直接使用,避免重复发送ARP请求。
4、以案例说明ARP协议的工作原理
1)同一局域网内的MAC寻址
假设当前有如下场景:IP 地址为137.196.7.23的主机 A,想要给同一局域网内的 IP 地址为137.196.7.14主机 B,发送 IP 数据报文。
为了实现这一过程,主机A将不得不通过 ARP 协议来获取主机 B 的 MAC 地址,并将 IP 报文封装成链路层帧,发送到下一跳上。在该局域网内,关于此将按照时间顺序,依次发生如下事件:
1. 主机 A 检索自己的 ARP 表,发现 ARP 表中并无主机 B 的 IP 地址对应的映射条目,也就无从知道主机 B 的 MAC 地址。
2.主机 A 将构造一个 ARP 查询分组,并将其广播到所在的局域网中。
ARP 分组是一种特殊报文,ARP 分组有两类,一种是查询分组,另一种是响应分组,它们具有相同的格式,均包含了发送和接收的 IP 地址、发送和接收的 MAC 地址。当然了,查询分组中,发送的 IP 地址,即为主机 A 的 IP 地址,接收的 IP 地址即为主机 B 的 IP 地址,发送的 MAC 地址也是主机 A 的 MAC 地址,但接收的 MAC 地址绝不会是主机 B 的 MAC 地址(因为这正是我们要问询的!),而是一个特殊值——FF-FF-FF-FF-FF-FF,之前说过,该 MAC 地址是广播地址,也就是说,查询分组将广播给该局域网内的所有设备。
3.主机 A 构造的查询分组将在该局域网内广播。
理论上,每一个设备都会收到该分组,并检查查询分组的接收 IP 地址是否为自己的 IP 地址,如果是,说明查询分组已经到达了主机 B,否则,该查询分组对当前设备无效,丢弃之。
4.主机B收到查询分组后,进行验证是自己的问询,同时构造一条映射记录。
主机 B 收到了查询分组之后,验证是对自己的问询,接着构造一个 ARP 响应分组,该分组的目的地只有一个——主机 A,发送给主机 A(单播的形式)。同时,主机 B 提取查询分组中的 IP 地址和 MAC 地址信息,在自己的 ARP 表中构造一条主机 A 的 IP-MAC 映射记录。
5. 主机 A 终将收到主机 B 的响应分组,提取出该分组中的 IP 地址和 MAC 地址后,构造映射信息,加入到自己的 ARP 表中。
2)不同局域网内的MAC寻址
更复杂的情况是,发送主机 A 和接收主机 B 不在同一个子网中,假设一个一般场景,两台主机所在的子网由一台路由器联通。这里需要注意的是,一般情况下,我们说网络设备都有一个 IP 地址和一个 MAC 地址,这里说的网络设备,更严谨的说法应该是一个接口。路由器作为互联设备,具有多个接口,每个接口同样也应该具备不重复的 IP 地址和 MAC 地址。因此,在讨论 ARP 表时,路由器的多个接口都各自维护一个 ARP 表,而非一个路由器只维护一个 ARP 表。
同样,我们默认主机A与主机B都不知道对方的MAC,我们依然从最开始主机A发送问询报文开始讲解整个过程:
1.主机 A 查询 ARP 表,期望寻找到目标路由器的本子网接口的 MAC 地址。
目标路由器指的是,根据目的主机 B 的 IP 地址,分析出 B 所在的子网,能够把报文转发到 B 所在子网的那个路由器。
2.主机 A 未能找到目标路由器的本子网接口的 MAC 地址,将采用 ARP 协议,问询到该 MAC 地址,由于目标接口与主机 A 在同一个子网内,该过程与同一局域网内的 MAC 寻址相同。
3.主机 A 获取到目标接口的 MAC 地址,先构造 IP 数据报,其中源 IP 是 A 的 IP 地址,目的 IP 地址是 B 的 IP 地址,再构造链路层帧,其中源 MAC 地址是 A 的 MAC 地址,目的 MAC 地址是本子网内与路由器连接的接口的 MAC 地址。主机 A 将把这个链路层帧,以单播的方式,发送给目标接口。
4.目标接口接收到了主机 A 发过来的链路层帧,解析,根据目的 IP 地址,查询转发表,将该 IP 数据报转发到与主机 B 所在子网相连的接口上。
到此,该帧已经从主机 A 所在的子网,转移到了主机 B 所在的子网了。
5.路由器接口查询 ARP 表,期望寻找到主机 B 的 MAC 地址。
6.路由器接口如未能找到主机 B 的 MAC 地址,将采用 ARP 协议,广播问询,单播响应,获取到主机 B 的 MAC 地址。
7.路由器接口将对 IP 数据报重新封装成链路层帧,目标 MAC 地址为主机 B 的 MAC 地址,单播发送,直到目的地。
5、ARP的应用
ARP协议在现代网络中具有广泛的应用,以下是几个常见的应用场景:
- 局域网通信:
在局域网中,ARP用于解析主机之间的IP地址和MAC地址,确保数据帧能够正确发送到目标设备。 - 路由器通信:
路由器使用ARP解析相邻路由器和主机的MAC地址,实现数据包的转发和路由选择。 - 网络管理和监控:
网络管理员使用ARP扫描工具(如arp-scan)发现和管理网络中的设备,进行故障排除和性能优化。
6、总结
ARP协议是网络层的重要组成部分,通过将IP地址解析为MAC地址,确保局域网内的设备能够正常通信。理解ARP的工作原理、报文格式和缓存机制,对于网络管理和故障排除具有重要意义。同时,面对ARP欺骗和缓存中毒等安全威胁,采取适当的防护措施,保障网络安全和稳定运行。