2.3.0 以太网 ARP帧与ARP工作过程
Address Resolution Protocol(地址解析协议)
在二层网络中用户的数据封装在以太网数据帧中,而转发数据帧的依据就是源目MAC地址。
ARP的主要作用就是将IP地址进行解析成对应的MAC地址,便于数据帧的转发。
一、ARP的格式
ARP请求
ARP应答
ARP字段详细介绍
字段 | 长度(bit) | 含义 |
---|---|---|
Hardware Type | 16比特 | 表示硬件地址的类型。对于以太网,该类型的值为“1”。 |
Protocol Type | 16比特 | 表示发送方要映射的协议地址类型。对于IP地址,该值为0x0800。 |
Hardware Length | 8比特 | 表示硬件地址的长度,单位是字节。对于ARP请求或应答来说,该值为6。 |
Protocol Length | 8比特 | 表示协议地址的长度,单位是字节。对于ARP请求或应答来说,该值为4。 |
OPcode | 16比特 | 操作类型: 1 ARP请求 2 ARP应答 3 RARP请求 4 RARP应答 |
Ethernet Address of sender | 48比特 | 发送方以太网地址。这个字段和ARP报文首部的源以太网地址字段是重复信息。 |
IP Address of sender | 32比特 | 发送方的IP地址。 |
Ethernet Address of destination | 48比特 | 接收方的以太网地址。发送ARP请求时,该处填充值为0x00.00.00.00.00.00。 |
IP Address of destination | 32比特 | 接收方的IP地址。 |
二、ARP缓存表
ARP缓存表中主要的内容就是IP地址
和MAC地址
。
当向目标主机发送数据时,通过查找ARP缓存表取出目标IP对应的MAC地址进行数据的封装。
C:\Users\Administrator>arp -a
接口: 172.28.129.15 --- 0xd
Internet 地址 物理地址 类型
10.0.0.5 58-69-6c-4c-5a-3b 动态
10.99.0.1 58-69-6c-4c-5a-3b 动态
10.99.94.221 58-69-6c-4c-5a-3b 动态
10.232.20.244 58-69-6c-4c-5a-3b 动态
13.107.3.254 58-69-6c-4c-5a-3b 动态
13.107.6.254 58-69-6c-4c-5a-3b 动态
终端在数据转发时依赖ARP缓存表
中的MAC地址映射信息;
在交换设备上进行数据帧转发的依赖是MAC地址表
,由于二层交换设备并不能识别三层的IP地址,所以二层交换机只将MAC地址与端口号进行一个绑定,从而组成MAC地址表项方便数据帧的快速转发。
三、ARP的工作原理
ARP的主要作用就是将IP地址解析成与其对应的MAC地址
,常见的ARP功能就是ARP Request请求
、ARP Replay应答
。
ARP Request:
- 当需要将数据包发送给目标网络时,发现只有IP地址却没有其MAC地址。先通过发送ARP Request请求其IP的MAC地址信息,然后再进行数据的封装。
- ARP Request中:
源IP
为自己,目的IP
为请求的IP地址,源MAC地址
为自己,目的MAC地址
为全0。 - 将ARP Request封装在目的MAC地址为全F的数据帧中,向出接口发送,ARP Request经过若干交换机的
泛洪操作
最后将数据包发送到目标主机。 - 如果长时间没有收到ARP Replay应答,将再次发送ARP Request。
ARP Replay:
- 交换网络中的所有主机都能收到该ARP Request请求,但拆开发现其中请求的IP并不是自己,将直接丢弃。
- 直到目标主机收到该ARP Request,拆开发现请求的是自己的MAC地址,立即生成ARP Relay应答进行回应:
源IP
为自己,目的IP
为发送请求的主机,源MAC地址
为自己,目的MAC地址
为请求主机的MAC。 - 收到ARP Replay应答的主机,将IP与MAC对应信息记录在本地的ARP缓存表中,有了目标的MAC地址信息,就能成功的将数据进行封装发送了。