一、引言
在真实的网络上传输的数据帧不是IP地址来传的,是通过每一个网卡的特有的物理地址(MAC地址)来传输的。上层协议一般是只知道IP地址,不知道MAC地址的。因此需要有通过IP地址知道MAC地址的方法,这就是ARP(Addess Resolution Protocol)。 有时候知道一台机器的物理地址,而不知道该机器的IP地址(如,具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机/无盘工作站,则需要采用其他方法(RARP)来获得 I P地址)。通常是某主机发送一份RARP数据包到网络上,另一主机(RARP服务器)响应该RARP数据包,告诉当前主机他的IP地址。
二、ARP与RARP数据包
- 以太帧帧类型:长度2个字节,0x0800-IP数据包,0x0806-ARP请求/应答数据包,0x8035-RARP请求/应答数据包。
- 硬件类型(Hardware type):指明该ARP数据包的网络硬件类型,长度2个字节,0x0001-以太网。
- 协议类型(Protocol type):指明该ARP数据包的使用协议,长度2个字节,0x0800-IP地址协议。协议类型与硬件类型共同确定后面数据存储结构,这里只是以太网ARP/RARP。
- 硬件地址长度(Hardware Size): 指明之后的硬件地址长度,长度1个字节。0x06-以太网地址长度(6个字节),该长度的单位是字节。
- 协议地址长度(Protocol Size):指明之后的协议地址长度,长度1个字节。0x04-IP地址长度(4个字节),该长度的单位是字节。
- 操作码(Opcode):指明该数据包是干嘛的,长度2个字节。0x0001-ARP请求包,0x0002-ARP应答包;0x0003-RARP请求包,0x0004-RARP应答包。
- 源以太网MAC地址(Sender MAC Address):发送端以太网物理地址,长度6个字节。
- 源IP地址(Sender IP Address):发送端IP地址,长度4个字节。
- 目的以太网MAC地址(Target MAC Address):目的以太网MAC地址,长度6个字节。ARP发送包初始化为0,ARP应答包为具体MAC地址;RARP发送包初始化为需要解析的MAC地址。
- 目的IP地址(Target IP Address):目的IP地址,长度为4个字节。ARP发送包初始化为需要解析的IP地址。RARP发送包初始化为0,RARP应答包填充对应的IP地址。
ARP与RARP数据包既可以单播(以太网目的地址为具体的某个机器的MAC地址),也可以广播(以太网目的地址为全为1的MAC地址)。