计算机网络-网络层(二)

| 分类 计算机网络  | 标签 网络层 

###7. 划分子网和构建超网

前面说过,分类的IP地址已经过时。有这么几个原因:

  1. 利用率太低:比如A类主机数目可达到千万级别,但是往往利用率不到5%。长此以往,IP地址迟早要分配完,但是却没有利用好
  2. 网路越多,路由表越大,路由选择过程会越来越复杂
  3. 两级IP地址不够灵活:当突发情况需要申请一个新IP时候,申请到之前是无法连接到互联网上的。我们希望可以自由添加网络,而不必每次都去有关部门申请

为了解决这几个问题,从1985年起,在IP地址中又增加了一个“子网号字段”,称为划分子网。使两级IP地址变为三级IP地址:

(网络号,主机号) => (网络号,子网号,主机号)

划分子网就是从主机号借N位当做子网号。所以,网络地址不变,只是主机地址做了一点改变而已。而路由器对外仍然是一个网络,当一个数据报到达该网络时,需要用到子网掩码对子网络进行选择。

但有时候,一个网络并没有划分子网。但是因特网标准规定:所有的网络都必须使用子网掩码,同时路由器的路由表中必须有子网掩码这一栏。所以,如果一个网络不划分子网,就要使用默认子网掩码。而默认子网掩码和网络号相同,显然:

  • A类地址的默认子网掩码是255.0.0.0
  • B类地址的默认子网掩码是255.255.0.0
  • C类地址的默认子网掩码是255.255.255.0

上面介绍了划分子网,那么,有了子网之后,路由器是怎么转发分组的呢?

  1. 从收到的数据报首部取出目的IP地址D
  2. 判断是否是直接交付,用路由表中各表项的子网掩码和D相与,若匹配就进行直接转发(包括ARP转地址,数据链路层封装成MAC帧),否则进行步骤(3)
  3. 特定路由选择
  4. 适合的路由
  5. 默认路由
  6. 出错

和上一篇文章中的方法相同,只是加入了子网掩码。我们可以发现,从一个IP地址用子网掩码得出所在的子网所在网络,如果和路由表中的某一项相符,就发送;不相符就检查下一项,如果还没有就进入默认路由,还没有就报错。

解下来就是超网了,也就是CIDR。这个现在是广泛应用的东东。主要特点为:

  1. CIDR消除了传统的A类、B类和C类地址及划分子类的概念,因此可以更加有效的使用IP4的地址空间。CIDR把32位的IP地址划分为两个部分。前面是网络前缀,后面是主机。分隔符是一个斜线
  2. CIDR把网络前缀相同的连续的IP地址组成一个”CIDR地址块”。

所以,CIDR的形式大概是:

xx.xx.xx.xx/20:意思是前20位位网络号

这样在路由转发的时候,可能会遇到多个匹配,这时候应该选择最长前缀,因为前缀越长,其地址块就越小,因而路由也会更具体。

这里有一个问题,既然有多个重复,我们要怎样最快的找出最长前缀呢?答案很好玩:使用的二叉树,但是有一点优化是对于单链条进行了压缩。比如4个节点的路径只有一种选择,就压缩成1个节点。


上一篇     下一篇