打工人日报#20251026
打工人日报#20251026
ARP协议介绍
地址解析协议(ARP,Address Resolution Protocol)是 TCP/IP 协议族中的一个重要协议,主要用于将网络层的 IP 地址解析为数据链路层的物理地址(通常是 MAC 地址) ,从而实现网络通信中从逻辑地址到物理地址的映射。
1. ARP 协议的作用
在网络通信中,IP 地址用于标识网络中的主机,但数据在物理网络中传输时,最终需要通过物理地址(如以太网中的 MAC 地址)来确定目标设备。ARP 协议的作用就是在已知目标设备 IP 地址的情况下,找到与之对应的 MAC 地址,确保数据能够准确地发送到目标设备。例如,当主机 A 要向主机 B 发送数据时,主机 A 首先检查自己的 ARP 缓存表。若缓存表中有主机 B 的 IP - MAC 映射关系,主机 A 就直接使用该 MAC 地址封装数据帧并发送;若没有,则通过 ARP 协议获取主机 B 的 MAC 地址。
2. ARP 工作流程
- ARP 请求:当主机需要解析一个 IP 地址对应的 MAC 地址时,会构建一个 ARP 请求数据报。该数据报包含发送方的 IP 地址、MAC 地址以及目标 IP 地址(要解析的 IP 地址),目标 MAC 地址字段填全 0。然后,ARP 请求以广播的形式发送到局域网内的所有主机。在以太网中,广播帧的目的 MAC 地址为 FF:FF:FF:FF:FF:FF。网络中的所有主机都会收到这个 ARP 请求,但只有目标 IP 地址与请求中目标 IP 地址匹配的主机才会处理该请求。
- ARP 响应:目标主机接收到 ARP 请求后,发现请求中的目标 IP 地址是自己的 IP 地址,就会构建一个 ARP 响应数据报。响应数据报包含发送方(即请求方)的 IP 地址、MAC 地址,以及自己的 IP 地址和 MAC 地址。然后,目标主机将这个 ARP 响应以单播的形式发送回请求方。请求方收到 ARP 响应后,将目标主机的 IP - MAC 映射关系添加到自己的 ARP 缓存表中,以便后续通信使用。
3. ARP 缓存表
- 概念:ARP 缓存表是主机内存中的一个表,用于存储 IP 地址与 MAC 地址的映射关系。每一个映射关系都有一个生存时间(TTL,Time - To - Live),超过这个时间,该映射关系将从缓存表中删除。这样可以确保缓存表中的信息始终保持最新。
- 作用:ARP 缓存表避免了主机每次通信都发送 ARP 请求,提高了网络通信效率。例如,主机 A 在获取到主机 B 的 IP - MAC 映射关系并存储在缓存表后,当再次向主机 B 发送数据时,直接从缓存表中获取主机 B 的 MAC 地址,无需再次发送 ARP 请求,减少了网络流量和通信延迟。
4. ARP 协议的报文格式
- 硬件类型(Hardware Type):2 字节,标识网络接口硬件的类型。常见值为 1,表示以太网。
- 协议类型(Protocol Type):2 字节,指定上层协议的类型,通常为 0x0800,表示 IP 协议。
- 硬件地址长度(Hardware Address Length):1 字节,定义硬件地址(如 MAC 地址)的长度,对于以太网为 6 字节。
- 协议地址长度(Protocol Address Length):1 字节,指定协议地址(如 IP 地址)的长度,对于 IPv4 为 4 字节。
- 操作码(Opcode):2 字节,定义 ARP 数据报的操作类型。1 表示 ARP 请求,2 表示 ARP 响应。
- 发送方硬件地址(Sender Hardware Address):可变,通常为 6 字节(以太网环境),即发送方的 MAC 地址。
- 发送方 IP 地址(Sender IP Address):可变,通常为 4 字节(IPv4 环境),即发送方的 IP 地址。
- 目标硬件地址(Target Hardware Address):可变,通常为 6 字节(以太网环境)。在 ARP 请求中填全 0,在 ARP 响应中为目标主机的 MAC 地址。
- 目标 IP 地址(Target IP Address):可变,通常为 4 字节(IPv4 环境),在 ARP 请求中是要解析的目标 IP 地址,在 ARP 响应中与发送方 IP 地址相同。
5. ARP 协议的安全性问题
- ARP 欺骗:攻击者通过伪造 ARP 响应,将目标主机的 IP 地址映射到自己的 MAC 地址,从而截获目标主机的网络流量。例如,攻击者向主机 A 发送伪造的 ARP 响应,使主机 A 认为攻击者的 MAC 地址就是网关的 MAC 地址。这样,主机 A 发送给网关的数据就会先发送到攻击者的主机,攻击者可以对数据进行窃取、篡改等操作,然后再转发给网关,实现中间人攻击。
- 防御措施:
- 静态 ARP 绑定:手动在主机或网络设备上设置固定的 IP - MAC 映射关系,避免 ARP 缓存表被动态更新,从而防止 ARP 欺骗。但这种方法在网络设备变动时需要手动重新配置,不太灵活。
- ARP 防火墙:通过检测 ARP 请求和响应的合法性,阻止非法的 ARP 报文,防止 ARP 欺骗攻击。ARP 防火墙可以监测 ARP 报文的来源、IP 地址与 MAC 地址的匹配关系等,发现异常立即报警并阻止。
ARP数据报格式

1. 硬件类型(Hardware Type)
- 长度:2 字节
- 含义:此字段标识网络接口硬件的类型。常见的值为 1,表示以太网。不同的硬件类型对应不同的网络环境,例如,值为 6 表示 IEEE 802 网络,值为 15 表示帧中继网络。ARP 协议通过这个字段来识别发送方和接收方的网络接口类型,以便正确处理地址解析过程。
2. 协议类型(Protocol Type)
- 长度:2 字节
- 含义:指定上层协议的类型,通常为 0x0800,表示 IP 协议。这表明 ARP 用于解析 IP 地址到物理地址的映射关系。如果网络中使用其他网络层协议,如 IPX,这里会相应地设置为该协议对应的类型值。
3. 硬件地址长度(Hardware Address Length)
- 长度:1 字节
- 含义:定义了硬件地址(如 MAC 地址)的长度,对于以太网,此值为 6,因为以太网 MAC 地址长度是 6 字节。该字段使 ARP 能够适应不同硬件地址长度的网络,确保在解析地址时正确处理地址数据。
4. 协议地址长度(Protocol Address Length)
- 长度:1 字节
- 含义:指定了协议地址(如 IP 地址)的长度,对于 IPv4,此值为 4,因为 IPv4 地址长度是 4 字节。同样,这有助于 ARP 处理不同长度的协议地址。
5. 操作码(Opcode)
- 长度:2 字节
- 含义:该字段定义了 ARP 数据报的操作类型。常见的操作码有两种:
- 1 - ARP 请求:当主机需要解析一个 IP 地址对应的 MAC 地址时,会发送 ARP 请求,请求广播到局域网内的所有主机。
- 2 - ARP 响应:目标主机接收到 ARP 请求后,如果请求的 IP 地址是自己的,会发送 ARP 响应,将自己的 MAC 地址告知请求方。此外,还有其他较少使用的操作码,如 3 表示 RARP 请求(反向地址解析协议请求,用于将物理地址解析为 IP 地址),4 表示 RARP 响应。
6. 发送方硬件地址(Sender Hardware Address)
- 长度:可变,通常为 6 字节(以太网环境)
- 含义:发送方网络接口的硬件地址,在以太网中就是发送方的 MAC 地址。这个地址用于接收方在回复 ARP 响应时,知道将响应发送到哪里。同时,接收方可以将这个地址与发送方的 IP 地址一起缓存起来,以便后续通信使用。
7. 发送方 IP 地址(Sender IP Address)
- 长度:可变,通常为 4 字节(IPv4 环境)
- 含义:发送方的 IP 地址。在 ARP 请求中,发送方将自己的 IP 地址包含在数据报中,以便接收方了解请求来源。在 ARP 响应中,这个 IP 地址就是接收方在 ARP 请求中所请求解析的 IP 地址。
8. 目标硬件地址(Target Hardware Address)
- 长度:可变,通常为 6 字节(以太网环境)
- 含义:在 ARP 请求中,由于发送方不知道目标主机的 MAC 地址,此字段通常被设置为全 0。而在 ARP 响应中,此字段填写目标主机(即发送 ARP 请求的主机)的 MAC 地址。
9. 目标 IP 地址(Target IP Address)
- 长度:可变,通常为 4 字节(IPv4 环境)
- 含义:在 ARP 请求中,这是发送方想要解析其 MAC 地址的目标 IP 地址。在 ARP 响应中,这个 IP 地址与发送方 IP 地址相同,因为响应是针对请求中指定的 IP 地址进行的回复。
阅读
《杀死一只知更鸟》
第27章

感恩
感恩遇见!
