现在所有的主机都要求支持子网编址(RFC950[MogulandPostel1985])。不是把I
P地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。
这样做的原因是因为A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为224-2和21
6-2。事实上,在一个网络中人们并不安排这么多的主机。由于全0或全1的主机号都是无效的,因此我们把总数减去2。
在InterNIC获得某类I
P网络号后,就由当地的系统管理员来进行分配,由他(或她)来决定是否建立子网,以及分配多少比特给子网号和主机号。例如,这里有一个B类网络地址(140.252),在剩下的16bit中,8bit用于子网号,8bit用于主机号,格式如图3-5所示。这样就允许有254个子网,每个子网可以有254台主机。
许多管理员采用自然的划分方法,即把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 52。但是其中有超过3 0个子网,多于4 0 0 台主机分布在这些子网中。由一台路由器提供了I n t e r n e t的接入,如图3 - 6所示。
在这个图中,我们把大多数的路由器编号为Rn,n是子网号。我们给出了连接这些子网的路由器,同时还包括了扉页前图中的九个系统。在图中,以太网用粗线表示,点对点链路用虚线表示。我们没有画出不同子网中的所有主机。例如,在子网14 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。