地址解析协议(ARP)处理在网络上的计算机之间解析本地IP地址的方式。
最简单的形式是想象你有一台计算机,如笔记本电脑,你想与你的Raspberry PI进行通信,它是作为本地宽带连接的一部分连接的。
您通常可以通过ping它来查看网络上是否可以使用Raspberry PI。只要您对Raspberry PI执行ping操作或尝试与Raspberry PI进行任何其他连接,您就会开始解决地址问题。把它想象成握手的一种形式。
ARP比较主机和目标计算机的地址和子网掩码。如果这些匹配,则地址已有效地解析到本地网络。
那么这个过程实际上如何运作?
您的计算机将具有ARP缓存,首先访问该缓存以尝试解析该地址。
如果缓存不包含解析地址所需的信息,则会向网络上的每台计算机发送请求。
如果网络上的计算机没有搜索到的IP地址,那么它将忽略该请求,但如果该计算机匹配,则它将把呼叫计算机的信息添加到其自己的ARP缓存中。然后它会将响应发送回原始呼叫计算机。
在接收到目标计算机地址的确认后,进行连接,因此可以处理ping或其他网络请求。
源计算机从目标计算机寻找的实际信息是其MAC地址,或者有时称为HW地址。
使用ARP命令的工作示例
为了使这更容易理解,您需要将两台计算机连接到您的网络。
确保两台计算机都已打开并且能够连接到Internet。
现在使用Linux打开终端窗口并输入以下命令:
地址解析协议
显示的信息是当前存储在计算机ARP缓存中的信息。
结果可能只显示您的计算机,您可能根本看不到任何内容,或者如果您之前已连接到计算机,则结果可能包含其他计算机的名称。
arp命令提供的信息如下:
- 地址
- 硬件类型
- 硬件地址
- 旗
- 面具
- 我面对
如果您没有显示任何内容,请不要担心,因为这会很快改变。如果您可以看到另一台计算机,那么您可能会看到硬件地址设置为“(不完整)”。
您需要知道要连接的计算机的名称。就我而言,我正在连接我的Raspberry PI零。
在终端中运行以下命令,将单词raspberrypizero替换为您要连接的计算机的名称。
ping raspberrypizero
发生的事情是您正在使用的计算机已查看其ARP缓存并意识到它没有关于您尝试ping的计算机的信息或信息。因此,它通过网络发出请求,询问网络上的所有其他计算机是否确实是您正在寻找的计算机。
网络上的每台计算机都会查看请求的IP地址和掩码,除了具有该IP地址的所有计算机都将丢弃该请求。
具有所请求的IP地址和掩码的计算机将喊出“嘿,那就是我!”并将其HW地址发送回请求计算机。然后,这将被添加到调用计算机的ARP缓存中。
不相信我?再次运行arp命令。
地址解析协议
这次你应该看到你所掌握的计算机的名称,你也会看到硬件地址。
显示IP地址而不是计算机的主机名
默认情况下,arp命令将显示ARP缓存中项目的主机名,但您可以使用以下开关强制它显示IP地址:
arp -n
或者,您可能希望使用以下开关,它将以不同的方式显示输出:
arp -a
上面命令的输出将是这样的:
raspberrypi(172.16.15.254)at d4:ca:6d:0e:d6:19 ether on wlp2s0
这次你得到计算机的名称,IP地址,硬件地址,硬件类型和网络。
如何从ARP缓存中删除条目
ARP缓存不会长时间保留其数据但如果您在连接到特定计算机时遇到问题并且您怀疑这是因为保存的地址数据不正确,您可以通过以下方式从缓存中删除条目。
首先,运行arp命令以获取要删除的条目的HW地址。
现在运行以下命令:
arp -d HWADDR
将HWADDR替换为要删除的条目的HW地址。
摘要
arp命令通常不被普通计算机用户使用,并且仅在解决网络问题时与大多数人相关。