Address Resolution Protocol
地址解析协议(Address Resolution Protocol),通常称为“ARP”,是一种允许主机在只有IPv4地址时获取远程主机的以太网地址(MAC)的协议。 从技术上讲,由于数据格式大小可变,ARP支持其它地址格式,但通常与Ethernet和IP地址一起使用。
应该注意的是,IPv6中通过不同的协议提供了类似的功能。
背景
ARP定义于RFC826。 它运行在链路层上。
数据包格式
** 注 **
如果所有整数字面量都假定为小尾端表示。 那么发送数据包时,需要将16位和32位整数转换为big-endian。
C风格的数据包格式
struct arp { u16 htype; //硬件类型 u16 ptype; //协议类型 u8 hlen; // 硬件地址长度(以太网=6) u8 plen; // 协议地址长度(IPv4=4) u16 opcode; // ARP操作码 u8 srchw[hlen]; // 源硬件地址-hlen字节(见上文) u8 srcpr[plen]; // 源协议地址-plen字节(见上文)。如果IPv4只能是“u32”类型。 u8 dsthw[hlen]; // 目标硬件地址-hlen长度字节(见上文) u8 dstpr[plen]; //目的协议地址——plen字节(见上文)。如果IPv4只能是“u32”类型。 };
描述
硬件类型 Hardware Type
发送ARP数据包的硬件层的类型。以太网是0x1,除非使用PPP或其它什么,否则不需要任何其它值。
协议类型 Protocol Type
ARP请求使用的协议地址的类型。 IP是0x0800。 同样,除非你有不寻常的需求,否则你不应该在这里需要另一个值(在这种情况下,你应该知道你在做什么)。
硬件长度 Hardware Length
硬件层类型的硬件地址长度。 MAC地址的长度为6字节。
协议长度 Protocol Length
协议层的协议地址长度。IPv4地址的长度为4字节。
操作代码 Operation Code
区别要执行的操作。
源/目的硬件地址 Source/Dest Hardware Address
源主机和目的主机的硬件地址。 对于ARP请求操作时,大多数实现将目标MAC地址归零。
源/目的协议地址 Source/Dest Protocol Address
源主机和目的主机的协议地址。
操作(Operations)
ARP Request (ARP请求)
ARP请求允许主机查找IP已知主机的MAC地址。 它的操作码是0x0001。
ARP Reply (ARP应答)
ARP应答是对ARP请求的响应。 它的操作码是0x0002。 de:Address Resolution Protocol