以太网封装:地址解析协议(address resolution protocol)

翻译:[AKA] Security

版权所有(C) 1987,Charles L.Hedrick

如果附加以下申明,任何人均可部分或全部复制该文:
(1)任何复制本必须申明该文出自Rutgers University,并附本申明;
(2)任何形式的对于本文的使用必须申明参考本文及版权经过作者许可。

早先时候,有一场讨论:关于IP数据报在以太网到底是什么,它包括了以太网的帧头和校验和。但是有一点没有指出:当你IP地址通信的时候,(底层)使用的是什么格式的以太网地址。 实际上,有专门独立的协议:地址解析协议,来申明这一点(注意:ARP不是IP协议,因为ARP数据报不包括IP数据报的报头)。假设(设想)你利用IP地址为128.6.4.194的系统与IP地址为128.6.4.7的系统进行互联(通信),你的系统首先会在你(或系统)所处的子网寻找128.6.4.7,然后通过以太网与它直接连接(通信); 其次,系统会在自身的ARP表中查找128.6.4.7,以便确定是否已经知道该IP地址所对应的以太网地址。如果查找发现,系统会在ARP数据报上加上以太网数据报头,并直接发送改分组, 但是,如果128.6.4.7所对应系统的以太网地址不在ARP表中,则无法发送该分组,因为你必须(或需要)以太网地址以便进行通信。系统使用ARP协议发送ARP请求数据报,实际上是说:“我需要IP128.6.4.7所对应的以太网地址”,所有(同一网段内的)系统均会收到ARP请求(数据报,或分组)。当某主机发现该ARP请求的实际上是发给它的,则返回一个ARP回应分组申明:“128.6.4.7所对应的以太网地址是 8:0:20:1:56:34”(以太网地址长度48比特,即6字节。通常以如上的分号格式间隔开并用16进制表示)。你的主机(或者系统)将在自身的ARP分组中加入该条记录,以便下一步的直接通信。 绝大多数系统把ARP表放在高速缓存中,如果在一定时间内没有使用,则将缓存中的相应记录清空。

必须之处:ARP请求必须以广播形式。(这是因为),ARP请求分组不可能直接发送到目的地。毕竟发送ARP请求的目的是因为你不知道你所需要通信的主机的以太网地址, 所以全“1”的以太网地址,即ff:ff:ff:ff:ff:ff用于ARP广播。按照惯例, 每台在这个以太网上的所有主机必须接受处理该广播分组,所以,每台主机接受到了所有的ARP请求,而不论,这个ARP请求的目的是不是自己。如是,则响应;反之则丢弃该分组,部分系统通过目的地不是自己的ARP请求分组来更新自身在该以太网中的ARP表。注意:IP广播数据报或者分组(例如255.255.255.255 或者128.6.4.255)将以以太网广播 报的形式发送。