地址解析协议 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
地址