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;
以太网帧头中的前两个字段是以太网的目的地址和源地址。目的地址为全1时为广播地址。
两个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0X0806.
硬件类型字段:指明了发送方想知道的硬件地址的类型,以太网的值为1;
协议类型字段:表示要映射的协议地址类型,IP为0X0800;
硬件地址长度和协议地址长度:指明了硬件地址和高层协议地址的长度,这样ARP帧就可以在任意硬件和任意协议的网络中使用。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;
操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
发送端的以太网地址:源主机硬件地址,6个字节;
发送端IP地址:发送端的协议地址(IP地址),4个字节;
目的以太网地址:目的端硬件地址,6个字节;
目的IP地址:目的端的协议地址(IP地址),4个字节。
两个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0X0806.
硬件类型字段:指明了发送方想知道的硬件地址的类型,以太网的值为1;
协议类型字段:表示要映射的协议地址类型,IP为0X0800;
硬件地址长度和协议地址长度:指明了硬件地址和高层协议地址的长度,这样ARP帧就可以在任意硬件和任意协议的网络中使用。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;
操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
发送端的以太网地址:源主机硬件地址,6个字节;
发送端IP地址:发送端的协议地址(IP地址),4个字节;
目的以太网地址:目的端硬件地址,6个字节;
目的IP地址:目的端的协议地址(IP地址),4个字节。

非常感谢作者的分享,清晰易懂。