ARP协议的数据结构是什么?

RP(地址解析协议)地址解析协议用于将计算机的网络地址(IP地址32位)转换为物理地址(MAC地址48位)[RFC826]?ARP协议属于链路层协议。在以太网中,网络中一台主机到另一台主机的数据帧是根据48位以太网地址(硬件地址)而不是32位IP地址来确定接口的?内核(比如驱动)发送数据前必须知道目的地的硬件地址?当然,点对点连接不需要地址解析协议?

ARP协议的数据结构

以下是一段引文片段:

typedefstructarphdr

{

unsignedshortarp _ hrd/*硬件类型*/

unsignedshortarp _ pro/*协议类型*/

unsignedchararp _ hln/*硬件地址长度*/

unsignedchararp _ pln/*协议地址长度*/

unsignedshortarp _ op/*ARP操作类型*/

unsignedchararp _ sha[6];/*发送方的硬件地址*/

unsignedlongarp _ spa/*发送方的协议地址*/

unsignedchararp _ tha[6];/*目标的硬件地址*/

unsignedlongarp _ tpa/*目标的协议地址*/

}ARPHDR,* PARPHDR

为了解释地址解析协议的作用,需要了解数据在网络上的传输过程?下面是一个简单的PING示例。

假设我们的电脑IP地址是192.168.1.1。要执行这个命令:ping 192.168.438+0.2?此命令将通过ICMP协议发送互联网控制消息协议。这个过程需要经历以下几个步骤:

1?应用程序构造一个数据包,在本例中,生成一个ICMP包并提交给内核(网络驱动);

2?内核检查IP地址是否可以转换成MAC地址,即检查本地ARP缓存中的IP-MAC对应表;

3?如果存在IP-MAC对应关系,跳到步骤9;如果IP-MAC对应关系不存在,则继续以下步骤;

4?内核广播ARP,目的MAC地址为FF-FF-FF-FF-FF,ARP命令类型为REQUEST(1),包含自己的MAC地址;

5?192.168.1.2主机收到ARP请求时,发送ARP应答(2)命令,命令中包含自己的MAC地址;

6?在本地获取192.168.1.2主机的IP-MAC地址对应关系并保存在ARP缓存中;

7?内核会把IP转换成MAC地址,然后封装在以太网头结构中,再把数据发送出去;

您可以使用arp-a命令查看本地ARP缓存的内容。所以执行一个本地PING命令后,ARP缓存中会有目的IP的记录?当然,如果你的数据包发往不同的网段,那么网关的IP-MAC地址一定有对应的记录?

知道了ARP协议的作用,我们就可以清楚的知道,数据包的向外传输依赖于ARP协议,当然也就是ARP缓存?要知道,ARP协议的所有操作都是内核自动完成的,与其他应用无关?同时需要注意的是,地址解析协议只在这个网络中使用?