目录
一、ARP协议概述
二、使用ARP的四种情况
三、ARP缓存
四、ARP的工作原理
1. 地址解析
2. 地址缓存
五、ARP报文格式
1. ARP请求报文格式
2. ARP响应报文格式
六、免费ARP
七、代理ARP
ARP(Address Resolution Protocol)地址解析协议是一种用于将IP地址解析为物理地址的协议。在TCP/IP协议中,数据包的传输需要知道目标主机的MAC地址,而IP地址只是逻辑地址,不能直接用于数据包的传输。因此,需要使用ARP协议将IP地址转换为MAC地址,以便数据包能够正确地传输到目标主机。
ARP协议是一种无连接协议,它不需要建立连接就可以进行地址解析。它是在网络层和数据链路层之间进行的,因此可以在不同的数据链路层上使用。
1. 主机向本地网络中的其他主机发送数据包时,需要将目标主机的IP地址转换为MAC地址,以便数据包能够正确地传输到目标主机。
2. 主机向本地网络中的路由器发送数据包时,需要将路由器的IP地址转换为MAC地址,以便数据包能够正确地传输到路由器。
3. 路由器向本地网络中的主机发送数据包时,需要将目标主机的IP地址转换为MAC地址,以便数据包能够正确地传输到目标主机。
4. 路由器向其他网络中的主机发送数据包时,需要将下一跳路由器的IP地址转换为MAC地址,以便数据包能够正确地传输到下一跳路由器。
ARP缓存是指主机或路由器中存储的IP地址和MAC地址的映射表。当主机或路由器需要将IP地址转换为MAC地址时,首先会在ARP缓存中查找是否已经存在该映射关系。如果存在,则直接使用该映射关系进行地址解析;如果不存在,则需要发送ARP请求报文进行地址解析。
ARP缓存中的映射关系是有时限的,一般为几分钟到几小时不等。当映射关系过期时,主机或路由器会重新发送ARP请求报文进行地址解析,并更新ARP缓存中的映射关系。
ARP协议的工作原理可以分为两个步骤:地址解析和地址缓存。
当主机或路由器需要将IP地址转换为MAC地址时,首先会在ARP缓存中查找是否已经存在该映射关系。如果存在,则直接使用该映射关系进行地址解析;如果不存在,则需要发送ARP请求报文进行地址解析。
ARP请求报文中包含了源主机的MAC地址和IP地址,以及目标主机的IP地址。当目标主机收到ARP请求报文时,会将自己的MAC地址和IP地址封装在ARP响应报文中返回给源主机。源主机收到ARP响应报文后,将目标主机的MAC地址和IP地址存储在ARP缓存中,并使用该映射关系进行地址解析。
当主机或路由器成功地进行了地址解析后,会将IP地址和MAC地址的映射关系存储在ARP缓存中。当下一次需要进行地址解析时,主机或路由器会首先在ARP缓存中查找是否已经存在该映射关系。如果存在,则直接使用该映射关系进行地址解析;如果不存在,则需要重新发送ARP请求报文进行地址解析。
ARP缓存中的映射关系是有时限的,一般为几分钟到几小时不等。当映射关系过期时,主机或路由器会重新发送ARP请求报文进行地址解析,并更新ARP缓存中的映射关系。
ARP报文分为ARP请求报文和ARP响应报文,它们的格式如下:
| 2 bytes | 2 bytes | 1 byte | 1 byte | 2 bytes | 6 bytes | 4 bytes | 6 bytes | 4 bytes |
|---------|---------|--------|--------|---------|---------|---------|---------|---------|
| Hardware Type | Protocol Type | HLEN | PLEN | Operation | Sender MAC Address | Sender IP Address | Target MAC Address | Target IP Address |
- Hardware Type:表示硬件类型,如以太网、令牌环等。
- Protocol Type:表示协议类型,如IP、IPX等。
- HLEN:表示硬件地址长度,如以太网地址长度为6个字节。
- PLEN:表示协议地址长度,如IP地址长度为4个字节。
- Operation:表示操作类型,如ARP请求为1,ARP响应为2。
- Sender MAC Address:表示发送方的MAC地址。
- Sender IP Address:表示发送方的IP地址。
- Target MAC Address:表示目标主机的MAC地址,由于是ARP请求报文,该字段为空。
- Target IP Address:表示目标主机的IP地址。
| 2 bytes | 2 bytes | 1 byte | 1 byte | 2 bytes | 6 bytes | 4 bytes | 6 bytes | 4 bytes |
|---------|---------|--------|--------|---------|---------|---------|---------|---------|
| Hardware Type | Protocol Type | HLEN | PLEN | Operation | Sender MAC Address | Sender IP Address | Target MAC Address | Target IP Address |
- Hardware Type:表示硬件类型,如以太网、令牌环等。
- Protocol Type:表示协议类型,如IP、IPX等。
- HLEN:表示硬件地址长度,如以太网地址长度为6个字节。
- PLEN:表示协议地址长度,如IP地址长度为4个字节。
- Operation:表示操作类型,如ARP请求为1,ARP响应为2。
- Sender MAC Address:表示发送方的MAC地址。
- Sender IP Address:表示发送方的IP地址。
- Target MAC Address:表示目标主机的MAC地址。
- Target IP Address:表示目标主机的IP地址。
免费ARP是指主机或路由器在更新自己的ARP缓存时,向本地网络中的其他主机发送ARP响应报文,以便更新其他主机的ARP缓存。免费ARP的作用是加快网络中主机之间的通信速度,减少ARP请求报文的发送次数。
举个例子,当主机A更换了自己的MAC地址时,它会向本地网络中的其他主机发送免费ARP响应报文,以便更新其他主机的ARP缓存。这样,其他主机在向主机A发送数据包时,就可以直接使用新的MAC地址,而不需要发送ARP请求报文进行地址解析。
代理ARP是指路由器在收到ARP请求报文时,向本地网络中的其他主机发送ARP响应报文,以便代替目标主机进行地址解析。代理ARP的作用是解决网络中存在的子网划分问题,使得不同子网中的主机能够进行通信。
举个例子,当主机A向主机B发送数据包时,如果主机A和主机B不在同一个子网中,那么主机A需要将数据包发送给路由器,由路由器进行转发。在这个过程中,主机A需要将目标主机的IP地址转换为MAC地址,但是它并不知道主机B的MAC地址。这时,路由器就可以使用代理ARP的方式,向主机A发送ARP响应报文,以便代替主机B进行地址解析。这样,主机A就可以正确地将数据包发送给主机B了。