因特网子网( 四 )


好的方法是存放在磁盘文件中 。但对于不断增加的无盘工作站来说,由于它是从网络启
动的,所以两种“应编码”的方法都不适用 。而大多数的局域网技术都支持广播,因此
另一个较好的方法是启动的主机广播所需要信息的要求 。比如,为了知道自己的因特网
地址,可以使用“逆向地址解析协议”[4] 。
我们建议将ICMP[9]协议(因特网信报控制协议)进行扩展,加入一对新的ICMP
消息类型:“地址格式请求”和“地址格式回复“,和“信息请求”和“信息恢复”消
息很相似 。细节参看附录1 。
当一台主机启动时,广播新加入的ICMP消息“地址格式请求“<3>.网关(或相当
于网关的主机)接收到后,回复以”地址格式回复“ 。假如请求中没有说明是哪台主
机发送的(源IP地址是0),则回复消息以广播形式发出 。发出请求的主机就能接收到
这个消息,从而知道自己的子网字段长度 。
在“地址格式请求”中只可能有一个值,所以发出请求的主机就没有必要去匹配请
求和回复:就是有多个网关回复也没有关系 。我们认为主机不会经常从新启动,所以网
络上这两个消息的广播负载是很小的 。
假如主机连在好几个局域网上,它需要对每个局域网使用这个协议,除非它能确定
(从其中一个网络的回复)几个局域网是在同一个网络中的 。在这种情况下,其地址会
有相同的子网字段长度 。
一个潜在的问题是假如主机重复好多次都没有收到对“地址格式请求”的响应时该
怎么办 。有三种原因可能导致这种情况:
1. 局域网没有和其他的网络相连(永久的) 。
2. 没有使用子网,而且没有主机支持这两个ICMP请求 。
3. 所有的网关都没有正常工作(暂时的)
第一、二种情况意味着子网字段长度是0 。第三种情况下没法知道其值会是什么:
最安全的选择是0 。虽然很可能是错的,但这样不会阻止原来可以成功的数据传送 。
当网关恢复工作以后,当它收到“地址格式请求”时,就会回复,主机就可以获得正确
的信息,并将自身的数据相应的调整 。主机和网关不应该发送基于“猜”出的“地址格
式回复” 。
最后,要注重并不要求主机使用这两个ICMP协议消息来获得子网字段长度,非凡
是对于有稳定存储介质的主机 。
3.子网路由方法
一个因特网所有主机都要面对的是怎么决定到另一台主机的路由 。在有子网的情况
下,这个问题只需要很小的改变 。
使用子网后,路由过程就要处理两个层次 。假如目标主机和源主机在同一个网络中,
只需要子网间的网关来决定路由 。而假如目标主机和源主机在不同的网络中,则需要网
络间的网关和子网间的网关共同来决定路由 。
幸运的是,许多主机可以使用“缺省”的网关作为所有路由的第一个目标,在回复
ICMP主机重定向消息时再定义更多的合适的路由 。但这种方法对于网关和连在多个网
络中的主机来说效率太低,而应该使用路由信息交换协议 。这超出了本文档的讨论范围,
在没有子网的情况下也存在这个问题 。
对于只连在一个网络上的主机,需要找到至少一个邻接的网关 。同样,也有两个解
决办法:硬编码和广播 。邻接网关的问题在不使用子网时也存在,用不用子网对次问题
没有影响 。
但还存在另一个问题:源主机必须知道数据包是直接发送给目标主机还是要通过网
关发送?也就是要知道目标主机和源主机是否在同一个物理网络上 。这是路由过程中唯

推荐阅读