以太网-路由器 [3]

超网是与子网类似的概念--IP地址根据子网掩码被分为独立的网络地址和主机地址。但是,与子网把大网络分成若干小网络相反,它是把一些小网络组合成一个大网络--超网。

假设现在有16个C类网络,从201.66.32.0到201.66.47.0,它们可以用子网掩码255.255.240.0统一表示为网络201.66.32.0。但是,并不是任意的地址组都可以这样做,例如16个C类网络201.66.71.0到201.66.86.0就不能形成一个统一的网络。不过这其实没关系,只要策略得当,总能找到合适的一组地址的。

5、可变长子网掩码(VLSM)

如果你想把你的网络分成多个不同大小的子网,可以使用可变长子网掩码,每个子网可以使用不同长度的子网掩码。例如:如果你按部门划分网络,一些网络的掩码可以为255.255.255.0(多数部门),其它的可为255.255.252.0(较大的部门)。

6、无类别地址(CIDR)

因特网上的主机数量增长超出了原先的设想,虽然还远没达到232,但地址已经出现匮乏。1993年发表的RFC1519--无类别域间路由CIDR(Classless Inter-Domain Routing)--是一个尝试解决此问题的方法。CIDR试图延长IPv4的寿命,与128位地址的IPv6不同,它并不能最终解决地址空间的耗尽,但IPv6的实现是个庞大的任务,因特网目前还没有做好准备。CIDR给了我们缓冲的准备时间。

基于类的地址系统工作的不错,它在有效的地址使用和少量的网络数目间做出了较好的折衷。但是随着因特网意想不到的成长出现了两个主要的问题:

  • 已分配的网络数目的增长使路由表大得难以管理,相当程度上降低了路由器的处理速度。
  • 僵化的地址分配方案使很多地址被浪费,尤其是B类地址十分匮乏。

为了解决第二个问题,可以分配多个较小的网络,例如,用多个C类网络而不是一个B类网络。虽然这样能够很有效地分配地址,但是更加剧了路由表的膨胀(第一个问题)。

在CIDR中,地址根据网络拓扑来分配。连续的一组网络地址可以被分配给一个服务提供商,使整组地址作为一个网络地址(很可能使用超网技术)。例如:一个服务提供商被分配以256个C类地址,从213.79.0.0到213.79.255.0,服务提供商给每个用户分配一个C类地址,但服务提供商外部的路由表只通过一个表项--掩码为255.255.0.0的网络213.79.0.0--来分辨这些路由。

这种方法明显减少了路由表的增长,CIDR RFC的作者估计,如果90%的服务提供商使用了CIDR,路由表将以每3年54%的速度增长,而如果没有使用CIDR,则增长速度为776%。如果可以重新组织现有的地址,则因特网骨干上的路由器广播的路由数量将大大减少。但这实际是不可行的,因为将带来巨大的管理负担。

四、路由

1、路由表

如果一个主机有多个网络接口,当向一个特定的IP地址发送分组时,它怎样决定使用哪个接口呢?答案就在路由表中。来看下面的例子:

目的 子网掩码 网关 标志 接口
201.66.37.0 255.255.255.0 201.66.37.74 U eth0
201.66.39.0 255.255.255.0 201.66.39.21 U eth1

主机将所有目的地为网络201.66.37.0内主机(201.66.37.1-201.66.37.254)的数据通过接口eth0(IP地址为201.66.37.74)发送,所有目的地为网络201.66.39.0内主机的数据通过接口eth1(IP地址为201.66.39.21)发送。标志U表示该路由状态为“up”(即激活状态)。对于直接连接的网络,一些软件并不象上例中一样给出接口的IP地址,而只列出接口。

此例只涉及了直接连接的主机,那么目的主机在远程网络中如何呢?如果你通过IP地址为201.66.37.254的网关连接到网络73.0.0.0,那么你可以在路由表中增加这样一项:

目的 掩码 网关 标志 接口
73.0.0.0 255.0.0.0 201.66.37.254 UG eth0

此项告诉主机所有目的地为网络73.0.0.0内主机的分组通过201.66.37.254路由过去。标志G(gateway)表示此项把分组导向外部网关。类似的,也可以定义通过网关到达特定主机的路由,增加标志H(host):

目的 掩码 网关 标志 接口
91.32.74.21 255.255.255.255 201.66.37.254 UGH eth0

下面是路由表的基础,除了特殊表项之外:

目的 掩码 网关 标志 接口
127.0.0.1 255.255.255.255 127.0.0.1 UH lo0
default 0.0.0.0 201.66.37.254 UG eth1

第一项是loopback接口,用于主机给自己发送数据,通常用于测试和运行于IP之上但需要本地通信的应用。这是到特定地址127.0.0.1的主机路由(接口lo0是IP协议栈内部的“假”网卡)。第二项十分有意思,为了防止在主机上定义到因特网上每一个可能到达网络的路由,可以定义一个缺省路由,如果在路由表中没有与目的地址相匹配的项,该分组就被送到缺省网关。多数主机简单地通过一个网卡连接到网络,因此只有通过一个路由器到其它网络,这样在路由表中只有三项:loopback项、本地子网项和缺省项(指向路由器)。

2、重叠路由

假设在路由表中有下列重叠项:

目的 掩码 网关 标志 接口
1.2.3.4 255.255.255.255 201.66.37.253 UGH eth0
1.2.3.0 255.255.255.0 201.66.37.254 UG eth0
1.2.0.0 255.255.0.0 201.66.37.253 UG eth1
default 0.0.0.0 201.66.39.254 UG eth1

之所以说这些路由重叠是因为这四个路由都含有地址1.2.3.4,如果向1.2.3.4发送数据,会选择哪条路由呢?在这种情况下,会选择第一条路由,通过网关201.66.37.253。原则是选择具有最长(最精确)的子网掩码。类似的,发往1.2.3.5的数据选择第二条路由。

注意:这条原则只适用于间接路由(通过网关)。把两个接口定义在同一子网在很多软件实现上是非法的。例如下面的设置通常是非法的(不过有些软件将尝试在两个接口进行负载平衡):

接口 IP地址 子网掩码
eth0 201.66.37.1 255.255.255.0
eth1 201.66.37.2 255.255.255.0
首 页 | 关于我们 | 系列产品 | 方案文档 | 合作伙伴 | 客服中心