3.4 子网寻址
现在所有的主机都要求支持子网编址( RFC 950 [Mogul and Postel 1985])。不是把I P地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。这样做的原因是因为 A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为2 2 4-2和2
1 6-2。事实上,在一个网络中人们并不安排这么多的主机(各类 I P地址的格式如图1 - 5所示)。由于全0或全1的主机号都是无效的,因此我们把总数减去 2。 在I n t e r N I C获得某类I P网络号后,就由当地的系统管理员来进行分配,由他(或她)来决定是否建立子网,以及分配多少比特给子网号和主机号。例如,这里有一个 B类网络地址(1 4 0 . 2 5 2),在剩下的16 bit中,8 bit用于子网号,8 bit用于主机号,格式如图 3 - 5所示。这样就允许有2 5 4个子网,每个子网可以有2 5 4台主机。
许多管理员采用自然的划分方法,即把 B类地址中留给主机的 16 bit中的前8 bit作为子网地址,后8 b i t作为主机号。这样用点分十进制方法表示的 I P地址就可以比较容易确定子网号。但是,并不要求A类或B类地址的子网划分都要以字节为划分界限。
大多数的子网例子都是 B类地址。其实,子网还可用于 C类地址,只是它可用的比特数较少而已。很少出现 A类地址的子网例子是因为 A类地址本身就很少(但是,大多数 A类地址都是进行子网划分的)。
子网对外部路由器来说隐藏了内部网络组织(一个校园或公司内部)的细节。在我们的网络例子中,所有的I P地址都有一个B类网络号1 4 0 . 2 5 2。但是其中有超过3 0个子网,多于4 0 0台主机分布在这些子网中。由一台路由器提供了 I n t e r n e t的接入,如图3 - 6所示。
在这个图中,我们把大多数的路由器编号为 Rn,n是子网号。我们给出了连接这些子网的路由器,同时还包括了扉页前图中的九个系统。在图中,以太网用粗线表示,点对点链路用虚线表示。我们没有画出不同子网中的所有主机。例如,在子网 1 4 0 . 2 5 2 . 3上,就超过5 0台主机,而在子网1 4 0 . 2 5 2 . 1上则超过1 0 0台主机。与3 0个C类地址相比,用一个包含 3 0个子网的B类地址的好处是,它可以缩小 I n t e r n e t路由表的规模。B类地址1 4 0 . 2 5 2被划分为若干子网的事实对于所有子网以外的 I n t e r n e t路由器都是透明的。为了到达 I P地址开始部分为 1 4 0 . 2 5 2的主机,外部路由器只需要知道通往 I P地址1 4 0 . 2 5 2 . 1 0 4 . 1的路径。这就是说,对于网络 1 4 0 . 2 5 2只需一个路由表目,而如果采用 3 0个C类地址,则需要 3 0个路由表目。因此,子网划分缩减了路由表的规模(在 1 0 . 8小节中,我们将介绍一种新技术,即使用C类地址也可以缩减路由表的规模)。子网对于子网内部的路由器是不透明的。如图 3 - 6所示,一份来自 I n t e r n e t的数据报到达g a t e w a y,它的目的地址是 1 4 0 . 2 5 2 . 5 7 . 1。路由器g a t e w a y需要知道子网号是 5 7,然后把它送到k p n o。同样,k p n o必须把数据报送到R 5 5,最后由R 5 5把它送到R 5 7。