地址解析协议 ARP
1、工作原理
在共享总线型的以太网中
为了简单起见:只有各主机所配置的 IP 地址和其网卡上固化的 MAC 地址
假设主机 B 要给主机 C 发送数据包
主机 B 知道主机 C 的 IP 地址,但是不知道 C 的 MAC 地址
- 因此,主机
B的数据链路层在封装MAC帧时,就无法填写目的MAC地址字段,进而也就无法构建出要发送的MAC帧

实际上,每台主机都会有一个 ARP 高速缓存表
-
其中记录有
IP地址和MAC地址的对应关系 -
例如:主机
A的IP地址与MAC地址的对应关系
主机 B 要给主机 C 发送数据包时
-
会首先在自己的
ARP高速缓存表中查找主机C的IP地址对应的MAC地址,但是未找到
因此,主机 B 需要发送 ARP 请求报文来获取主机 C 的 MAC 地址
- (通过
广播来根据获取目的主机IP获取其MAC地址)
ARP 请求报文的内容:
- 我的
IP地址为 192.168.0.2 192.168.0.2 192.168.0.2 - 我的
MAC地址为 00 − E 0 − F 9 − A 3 − 43 − 77 00-E0-F9-A3-43-77 00−E0−F9−A3−43−77 - 我想知道
IP地址为 192.168.0.3 192.168.0.3 192.168.0.3 的主机的MAC地址

注意:
-
这里以比较通俗的语言描述其内容,实际上
ARP地址有具体的格式 -
ARP请求报文封装在MAC帧中发送,目的地址为广播地址
主机 B 发送封装有 ARP 请求报文的广播帧
总线上的其他主机都能收到该广播帧
-
主机
A的网卡收到该广播帧后,将其交给上层处理- 上层的
ARP进程解析ARP请求报文 - 发现所询问的
IP地址不是自己的IP地址,因此不予理会
- 上层的
-
主机
C的网卡收到该广播帧后,将其交给上层处理-
上层的
ARP进程解析ARP请求报文 -
发现所询问的
IP地址正是自己的IP地址,需要进行响应 -
主机
C首先将ARP请求报文中所携带的主机B的IP地址与MAC地址记录到自己的ARP高速缓存表中 -
然后给主机
B发送ARP响应报文,已告知自己的MAC地址
-

ARP 响应报文的内容:
- 我的
IP地址为 192.168.0.3 192.168.0.3 192.168.0.3 - 我的
MAC地址为 00 − 0 C − C F − B 7 − 4 A − 82 00-0C-CF-B7-4A-82 00−0C−CF−B7−4A−82

注意:
-
这里以比较通俗的语言描述其内容,实际上
ARP地址有具体的格式 -
ARP响应报文封装在MAC帧中发送,目的地址为主机B的MAC地址
主机 C 发送封装有 ARP 响应报文的单播帧
总线上的其他主机都能收到该单播帧
- 主机
A的网卡收到该单播帧后,发现其目的MAC地址与自己的MAC地址不匹配- 直接丢弃该帧
- 主机
C的网卡收到该广播帧后,发现其目的MAC地址就是自己的MAC地址(数据链路层)- 将其交给上层(网络层)处理
- 上层的
ARP进程解析ARP响应报文 - 将其所包含的主机
C的IP地址与MAC地址记录到自己的ARP高速缓存表中

主机 B 现在可以给主机 C 发送之前想发送的数据包了
ARP 请求的广播帧和 ARP 响应的单播帧是不同的
- 对于请求,每个主机都会接受并检查其
IP地址是不是自己的IP地址 - 对于响应,每个主机会根据
MAC地址接不接收该帧
2、ARP 高速缓存表记录类型
ARP 高速缓存表中的每一条记录都有其类型
-
动态
- 记录是主机自动获取到的,生命周期默认为 2 2 2 分钟
- 当生命周期结束时,该记录将自动删除
- 原因:
IP地址与MAC地址的对应关系并不是永久性的- 例如:主机的网卡坏了,当更新新的网卡后,主机的
IP地址并没有改变,但主机的MAC地址改变了
- 例如:主机的网卡坏了,当更新新的网卡后,主机的
-
静态
- 用户或网路维护人员手工配置的,不同操作系统下的生命周期不同,
- 例如:系统重启后不存在或系统重启后依然有效。
- 用户或网路维护人员手工配置的,不同操作系统下的生命周期不同,

3、APR 的作用范围
主机 H1 是否可以更用 ARP 协议获取到主机 H2 的 MAC 地址?

否定的。
ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用
对于本例,ARP 协议的使用是逐段链路进行的

4、说明
除 ARP 请求和响应外,ARP 还有其他类型的报文
- 例如:用于检查
IP地址冲突的 “ 无故ARP、免费ARP(Gratuitous ARP) ” ;
ARP 没有安全验证机制,存在 ARP 欺骗(攻击)问题。
- 因为其他主机给它发送
ARP请求的广播帧时,都会接受该广播帧,然后返回给自己的IP地址和MAC地址








![[附源码]Python计算机毕业设计SSM流浪猫狗救助站(程序+LW)](https://img-blog.csdnimg.cn/18cbe3eb6baa4b1e9eb0a81b5f9dae51.png)










