IP服务-1-ARP和代理ARP
代理ARP常被人忽视,因为现在基本不用了
Fred使用一个正常的ARP进程,它发出一个ARP请求广播,以R1的E1IP地址作为目标。ARP消息中有一个目标(Target)字段,这个字段全为0表示Fred需要学习这个MAC地址,目标IP地址标识出需要学习哪个IP地址的MAC地址,在本例中就是10.1.1.1。ARP应答中列出了与这个IP地址相关的MAC地址,也就是R1上E1接口的MAC地址。
ARP消息本身并不包含IP包头,尽管它在与IP包头类似的位置上也有目的IP地址和源IP地址。ARP请求中的目的IP地址是255.255.255.255。ARP以太网协议类型是0x0806,而IP数据包的以太网协议类型是0x0800。
代理ARP使用与ARP完全相同的消息,只不过这个ARP请求中实际上请求的MAC地址并不在本地子网中。因为ARP请求是以广播形式在本地子网中发送的,因此目标主机将无法收到这个请求——因此如果一台路由器可以把数据包路由给目标主机,它就可以代替目标主机充当代理ARP中继的角色。
举例来说,Barney将Web服务器的IP地址(10.1.2.200)放在目标字段中,因为Barney的子网掩码为255.0.0.0,因此它认为自己与Web服务器位于相同的子网。ARP请求是一个在LAN中泛洪的广播,因此R1如果工作正常的话,是不会转发ARP广播的。由于知道这个ARP请求永远无法到达10.1.2.200所在的子网,因此R1这个救世主代替Web服务器对ARP请求进行了应答。R1在ARP进程中代替了Web服务器,因此称它为代理ARP。还要注意的是,R1的ARP应答中包含R1的E1接口MAC地址,因此当Barney想要向Web服务器发送数据包时,它会把数据帧转发给R1。
在DHCP出现前,很多网络都依赖于代理ARP,并使用网络的默认掩码来配置主机。无论是否使用了代理服务器,结果都是主机学到路由器的MAC地址,并通过路由器将数据包转发到另一个子网。