Address Resolution Protocol (ARP)。 ARP是 TCP IP 设计者利用乙太网的广播性质﹐设计出来的地址解释协定。它的主要特性和优点是它的地址对应关系是动态的﹐它以查询的方式来获得 IP协议地址和实体地址的对应。它的工作原理非常简单:1. 首先﹐每一台主机都会在 ARP快取缓冲区 (ARPCache)中建立一个 ARP表格﹐用来记录 IP协议地址和实体地址的对应关系。这个 Table 的每一笔资料会根据自身的存活时间递减而最终消失﹐以确保资料的真实性。 2. 当发送主机有一个封包要传送给目的主机的时候﹐并且获得目的主机的 IP协议地址﹔那发送主机会先检查自己的 ARP表格中有没有该 IP协议地址的实体地址对应。如果有﹐就直接使用此地址来传送框包﹔如果没有﹐则向网路发出一个 ARPRequest 广播封包﹐查询目的主机的实体地址。这个封包会包含发送端的 IP协议地址和实体地址资料。 3. 这时﹐网路上所有的主机都会收到这个广播封包﹐会检查封包的 IP 栏位是否和自己的 IP协议地址一致。如果不是则忽略﹔如果是则会先将发送端的实体地址和 IP 资料更新到自己的 ARP表格去﹐如果已经有该 IP 的对应﹐则用新资料覆盖原来的﹔然后再回应一个 ARPReply 封包给对方﹐告知发送主机关于自己的实体地址; 4. 当发送端接到 ARPReply 之后﹐也会更新自己的 ARP表格﹔然后就可以用此纪录进行传送了。 5. 如果发送端没有得到 ARPReply ﹐则宣告查询失败。 ARP的查询过程 前面说的 ARP表格﹐只有在 TCPIP 协定被载入核心之后才会建立﹐如果 TCPIP 协定被卸载或关闭机器﹐那么表格就会被清空﹔到下次协定载入或开机的时候再重新建立﹐而同时会向网路发出一个A广播﹐告诉其它机器它的目前地址是什么﹐以便所有机器都能保持最正确的资料。 然而﹐ARPcache 的大小是有所限制的﹐如果超过了界限﹐那么越长时间没被使用过渡资料就必须清理掉﹐以腾出空间来储存更新的资料。所以﹐当机器收到 ARPequest 封包时﹐如果查询对象不是自己﹐则不会根据发送端地址资料来更新自己的ARP表格﹐而是完全忽略该封包。同时﹐每笔存在 cache 中的资料﹐都不是永久保存的﹕每笔资料再更新的时候﹐都会被赋予一个存活倒数计时值﹐如果在倒数时间到达的时候﹐该资料就会被清掉。然而﹐如果该资料在倒数时间到达之前被使用过﹐则计时值会被重新赋予。 当然了﹐ARP尚有一套机制来处理当 ARP表格资料不符合实际地址资料的状况(例如﹐在当前连线尚未结束前﹐收到目的端的地址资料更新讯息)﹔或是目的主机太忙碌而未能回答 ARP请求等状况。
|