ARP协议(Address Resolution Protocol):
- ARP协议用于在IP网络中将IP地址解析为物理MAC地址,以便实现数据包在局域网上的传输。它负责维护IP地址与MAC地址之间的对应关系,使得网络设备能够正确地发送和接收数据。
ARP协议的使用场景:
- 在局域网内部,当主机A要发送数据给主机B时,会先通过ARP协议查询目标主机B的MAC地址,并将数据包封装在以太网帧中发送到目标MAC地址。
- 当一个路由器接收到一个来自外部网络的数据包,并需要将其转发到目标主机时,也会利用ARP协议查询目标主机的MAC地址。
ARP协议的常用配置:
- ARP协议的配置通常涉及以下两个方面:
- ARP缓存表:每个主机或路由器都维护一个ARP缓存表,其中存储了IP地址和相应的MAC地址的对应关系。该表用于快速查找目标MAC地址,在必要时可以手动添加或删除条目。
- ARP请求与回应:当一个主机需要获取另一个主机的MAC地址时,它会发送一个ARP请求广播消息,询问该IP地址对应的MAC地址。而目标主机则会回复一个ARP响应消息,包含自己的MAC地址。
ARP协议的工作原理:
- 主机A要发送数据给主机B,首先检查其ARP缓存表中是否已有主机B的IP-MAC对应关系。
- 如果ARP缓存表中没有该对应关系,主机A会发送一个ARP请求广播消息,包含自己的MAC地址和目标IP地址。
- 局域网内的所有主机都会接收到该ARP请求消息,但只有目标主机B会响应。它会将自己的MAC地址封装在一个ARP回应消息中,并发送回给主机A。
- 主机A收到目标主机B的ARP回应消息后,将目标主机的IP-MAC对应关系添加到自己的ARP缓存表中。
- 主机A可以使用目标主机B的MAC地址封装数据包,并通过以太网发送到目标主机B。
下图展示了两个主机(A和B)之间的数据传输过程:
+----------------------+
| ARP 缓存表 |
+----------------------+
| IP 地址 | MAC 地址 |
+----------------------+
| 192.168.0.1 | AA:BB:CC |
| 192.168.0.2 | DD:EE:FF |
+----------------------+
ARP 请求
+-------------------------+
| |
+------------+ +------------+
| 主机 A | | 主机 B |
+------------+ +------------+
在这个示意图中,主机A想要将数据发送到主机B。因为主机A的ARP缓存表中没有主机B的IP-MAC对应关系,所以它会发送一个ARP请求广播消息。 只有主机B会响应ARP请求,并发送一个ARP回应消息,其中包含自己的MAC地址。主机A收到ARP回应消息后,将主机B的IP-MAC对应关系添加到其ARP缓存表中。 之后,主机A可以使用主机B的MAC地址封装数据包,并通过以太网发送到主机B。
查看路由器或主机上的ARP缓存表:
- 在Windows操作系统上,可以使用命令
arp -a
来查看本地主机的ARP缓存表。在路由器上,具体的查看方法可能因厂商和操作系统而异。 - 在Linux操作系统上,可以使用命令
arp -n
来查看本地主机的ARP缓存表。 - 在路由器设备上,可以通过使用display arp查看所有的arp缓存表。
ARP在不同网段主机访问解析过程示意图:
假设有两个网段:网段A(192.168.0.0/24)和网段B(192.168.1.0/24),主机A位于网段A(IP地址:192.168.0.10),主机B位于网段B(IP地址:192.168.1.20)。
+------------------+
| 网段 A |
+------------------+
| 主机 A (A1) |
| 192.168.0.10 |
+------------------+
ARP 请求
+-------------------+
| |
+--------------+ +----------------+
| 路由器 | | 主机 B (B1) |
+--------------+ +----------------+
|| ||
|| ARP 响应 ||
\/ \/
+--------------+ +----------------+
| 路由器 | | 主机 B (B2) |
+--------------+ +----------------+
||
数据包
||
\/
+------------------+
| 网段 B |
+------------------+
| 主机 B (B3) |
| 192.168.1.20 |
+------------------+
- 主机A(A1)想要访问主机B(B3),但它们位于不同的网段。所以主机A首先会发送一个ARP请求广播消息,询问网关路由器的MAC地址(其IP地址为192.168.0.1)。
- 路由器收到ARP请求后,将会响应该消息,并将自己的MAC地址封装在ARP回应消息中发送给主机A(A1)。
- 主机A(A1)收到ARP回应后,会更新自己的ARP缓存表,并将数据包封装在以太网帧中,其中目标MAC地址为路由器的MAC地址(假设为AA:BB:CC:DD:EE:FF)。
- 通过以太网将数据包发送给路由器,路由器收到数据包后,根据目标IP地址(192.168.1.20)将数据包转发给网段B。
- 在网段B中,主机B(B3)接收到数据包,进而完成整个访问过程。
ARP在同一网段主机访问解析过程示意图:
假设有一个网段A(192.168.0.0/24),其中有两个主机:主机A(IP地址:192.168.0.10)和主机B(IP地址:192.168.0.20)。
+------------------+
| 网段 A |
+------------------+
| 主机 A (A1) |
| 192.168.0.10 |
+------------------+
ARP 请求
+-------------------+
| |
+--------------+ +----------------+
| 路由器 | | 主机 B (B1) |
+--------------+ +----------------+
||
ARP 响应
||
\/
+------------------+
| 网段 A |
+------------------+
| 主机 B (B2) |
| 192.168.0.20 |
+------------------+
- 主机A(A1)想要访问主机B(B2),它们位于同一网段。
- 主机A(A1)首先会检查自己的ARP缓存表,如果该表中没有主机B(B2)的IP-MAC对应关系,则发送一个ARP请求广播消息询问主机B的MAC地址。
- 主机B(B2)收到ARP请求后,会回复一个ARP响应消息,其中包含自己的MAC地址。
- 主机A(A1)接收到ARP响应后,将主机B(B2)的IP-MAC对应关系添加到自己的ARP缓存表中。
- 主机A(A1)可以直接使用主机B(B2)的MAC地址封装数据包,并通过以太网发送给主机B。
在上述ARP解析过程中,路由器扮演着重要的角色并具有以下作用:
- 网关功能: 路由器通常是不同网络之间的连接点,它通过具备多个接口和路由功能,实现了从一个网络到另一个网络的数据转发。在ARP解析过程中,当主机A位于一个网段而目标主机B位于另一个网段时,主机A会将数据包发送给路由器作为网关,以便实现跨网段的通信。
- 转发数据包: 当路由器收到来自本地网络(局域网)的数据包时,它会根据目标IP地址查找路由表,确定下一跳的路径,并进行数据包的转发。在ARP解析过程中,当路由器收到主机A的数据包后,它会查找目标主机B的IP地址,并利用自己的ARP缓存表或者发送ARP请求来获取主机B的MAC地址。一旦获得目标主机B的MAC地址,路由器可以正确地封装数据包,并将其转发到目标主机B所在的网络。
- 维护ARP缓存表: 路由器也会维护自己的ARP缓存表,保存IP地址与对应的MAC地址的映射关系。当收到ARP请求或响应时,路由器会更新自己的ARP缓存表。这样,下一次需要转发数据包时,就可以直接从缓存表中获取目标主机的MAC地址,减少了发送ARP请求的次数,提高了转发效率。
在ARP解析过程中,路由器的作用主要包括充当网关、转发数据包以及维护ARP缓存表。它起到了连接不同网络、实现跨网段通信的重要角色,并通过确定下一跳路径和更新缓存表来保证数据的正确传递。