分类: LINUX
2009-02-27 11:24:58
假设网络中有两个节点A和B,如果A需要把IP数据包通过网络发送到B,那么A首先在自己的缓存中搜索和B关联的表目,如果查找成功,就使用表中对应的MAC地址来发送数据;如果查找关联表目失败,A就生成一个以太网的广播帧,并在帧中填入A的IP地址、A的MAC地址、B的IP地址、协议类型等字段,形成一个ARP请求帧。
B接收到A发出的ARP请求(广播)帧后,首先根据A的信息刷新自己的ARP缓存,以节省不必要的ARP通信,然后生成一个ARP应答帧,在其中填入B的MAC地址,并把应答帧通过以太网发送回A。A将B的ARP信息写入高速缓存,完成一次ARP请求和应答过程。
即使没有发送ARP请求,当收到任何格式正确的ARP应答帧时,也要对此帧作出响应,刷新自己ARP缓存中的相应表。
ARP报文格式如表所示。
表中每行为32个二进制位,也就是4个8位组。硬件类型字段(2字节)指明了发送方想知道的硬件接口类型,以太网对应数值为十六进制“0001”。协议类型字段(2字节)指明了发送方提供的高层协议类型,P协议对应数值为十六进制“0806”。硬件地址长度字段(1字节)和逻辑地址长度字段(1字节)指明了硬件(2字节)地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意高层协议的网络中使用。操作字段(2字节)指明了ARP帧所进行的操作类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4。发送和接收端硬件地址字段(6字节)为相应机器的物理MAC地址,发送和接收端IP地址字段(4字节)为相应的高层IP地址。
以下是捕获的一个ARP请求帧和一个ARP应答帧,它显示了当IP地址为192.168.1.23的A访问IP地址为192.168.1.1的B时,A通过广播帧发出ARP请求并得到B的应答帧的过程。
****A(192.168,1.17)的ARP请求报文