ARP协议的数据结构是什么?
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协议的所有操作都是内核自动完成的,与其他应用无关?同时需要注意的是,地址解析协议只在这个网络中使用?