文章目录
- 1 概述
- 2 ARP 地址解析协议
- 2.1 工作过程
- 2.2 报文格式
- 2.3 ARP 命令
- 3 扩展
- 3.1 网工软考真题
1 概述
2 ARP 地址解析协议
2.1 工作过程
- 主机 A 的 IP 地址为:192.168.1.1,MAC 地址为:0A-11-22-33-44-01;
- 主机 B 的 IP 地址为:192.168.1.2,MAC 地址为:0A-11-22-33-44-02;
- 当主机 A 要与主机 B 通信时,地址解析协议可以将主机 B 的 IP 地址(192.168.1.2)解析成主机 B 的 MAC 地址,以下为工作流程:
- 第 1 步:根据主机 A 上的路由表内容,确定用于访问主机 B 的转发 IP 地址是 192.168.1.2。然后 A 主机在自己的本地ARP缓存中检查主机 B 的匹配 MAC 地址。
- 第 2 步:如果主机 A 在ARP缓存中没有找到映射,它将询问 192.168.1.2 的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机 A 的 IP 地址和 MAC 地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
- 第 3 步:主机 B 确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
- 第 4 步:主机 B 将包含其MAC地址的ARP回复消息直接发送回主机A。
- 第 5 步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
2.2 报文格式
- 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;
- 协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);
- 硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
- 操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
- 发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;
- 发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;
- 发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
- 发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
- 目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
- 目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
- 目标IP地址(0-3字节):目的主机的IP地址。
2.3 ARP 命令
常见命令 | 描述 |
---|---|
arp -a 或 arp -g | 用于查看缓存中的所有项目 |
arp -a ip | 如果有多个网卡,那么使用arp -a加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目 |
arp -s ip 物理地址 | 可以向ARP缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目 |
arp -d ip | 使用该命令能够人工删除一个静态项目 |
3 扩展
3.1 网工软考真题
【2019上半年 - 22,23,24】ARP的协议数据单元封装在(22)中传送;ICMP的协议数据单元封装在(23)中传送,RIP路由协议数据单元封装在(24)中传送。
(1)A.以太帧
B.IP 数据表
C.TCP 段
D.UDP 段
(2)A.以太帧
B.IP 数据表
C.TCP 段
D.UDP 段
(3)A.以太帧
B.IP 数据表
C.TCP 段
D.UDP 段
参考答案:22=A,23=B,24=D
【2018上半年 - 24,25】若主机hostA的MAC地址为aa-aa-aa-aa-aa-aa,主机hostB的MAC地址为bb-bb-bb-bb-bb-bb。由hostA发出的查询hostB的MAC地址的帧格式如下图所示,则此帧中的目标MAC地址为(24),ARP报文中的目标MAC地址为(25)。
(24) A.aa-aa-aa-aa-aa-aa
B.bb-bb-bb-bb-bb-bb
C.00-00-00-00-00-00
D.ff-ff-ff-ff-ff-ff
(25) A.aa-aa-aa-aa-aa-aa
B.bb-bb-bb-bb-bb-bb
C.00-00-00-00-00-00
D.ff-ff-ff-ff-ff-ff
参考答案:24=D,25=C
当主机A向本局域网内的主机B发送IP数据报的时候,就会先查找自己的ARP映射表,查看是否有主机B的IP地址,如有的话,就继续查找出其对应的硬件地址,在把这个硬件地址写入MAC帧中,然后通过局域网发往这个硬件地址。也有可能找到不到主机B的IP地址项目,在这种情况下,主机A就要运行ARP协议,广播ARP请求分组,去请求主机B的MAC。
mac帧中的mac地址不知道发给谁,所以广播选择全f,arp报文中不知道发给谁,先写全0,后面进行填充