ARP协议分析
(An Analysis Of ARP Protocol)
ARP(Address Resolution Protocol)地址解析协议用于将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位) [RFC 826]。ARP协议是属于链路层的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据。当然,点对点的连接是不需要ARP协议的。
ARP协议的数据结构:
typedef struct arphdr
{
unsigned short arp_hrd; /* 硬件类型 */
unsigned short arp_pro; /* 协议类型 */
unsigned char arp_hln; /* 硬件地址长度 */
unsigned char arp_pln; /* 协议地址长度 */
unsigned short arp_op; /* ARP操作类型 */
unsigned char arp_sha[6]; /* 发送者的硬件地址 */
unsigned long arp_spa; /* 发送者的协议地址 */
unsigned char arp_tha[6]; /* 目标的硬件地址 */
unsigned long arp_tpa; /* 目标的协议地址 */
}ARPHDR, *PARPHDR;
为了解释ARP协议的作用,就必须理解数据在网络上的传输过程。这里举一个简单的PING例子。
假设我们的计算机IP地址是192.168.1.1,要执行这个命令:ping 192.16