BOOTP穿越路由器
RARP的一个缺点就是它使用链路层广播,这种广播通常不会由路由器转发。这就需要在每个物理网络内设置一个RARP服务器。假如路由器支持BOOTP协议,那么BOOTP能够由路由器转发(绝大多数路由器厂商的产品都支持这个功能)。
这个功能主要用于无盘路由器,因为假如在磁盘的多用户系统被用作路由器,它就能够自己运行BOOTP服务器。此外,常用的UnixBOOTP服务器(附录F)支持这种中继模式(relaymode)。但假如在这个物理网络内运行一个BOOTP服务器,通常没有必要将BOOTP请求转发到在另外网络中的另一个服务器。
研究一下当路由器(也称作“BOOTP中继代理”)在服务器的熟知端口(67)接收到BOOTP请求时将会发生什么。当收到一个BOOTP请求时,中继代理将它的IP地址填入收到BOOTP请求中的“网关IP地址字段”,然后将该请求发送到真正的BOOTP服务器(由中继代理填入网关字段的地址是收到的BOOTP请求接口的IP地址)。该代理中继还将跳数字段值加1(这是为防止请求被无限地在网络内转发。RFC951认为假如跳数值到达3就可以丢弃该请求)。既然发出的请求是一个单播的数据报(与发起的客户的请求是广播的相反),它能按照一定的路由通过其他的路由器到达真正的BOOTP服务器。真正的BOOTP服务器收到这个请求后,产生BOOTP应答,并将它发回中继代理,而不是请求的客户。既然请求网关字段不为零,真正的BOOTP服务器知道这个请求是经过转发的。中继代理收到应答后将它发给请求的客户。