4.3 子网划分和构成超网

划分子网的基本思路

  • 一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网(subnet)。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络
  • 划分子网的方法是从网络的主机号借用若干位作为子网号(subnet-id),当然主机号也就相应减少了同样的位数。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机号
  • 从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机
  • 划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数

子网掩码(subnetmask)

  • 虽然RFC文档中没有规定子网掩码中的一串1必须是连续的,但却极力推荐在子网掩码中选用连续的1,以免出现可能发生的差错
  • 下图是IP地址的各字段和子网掩码(以145.13.3.10为例) :
  • 把三级IP地址的子网掩码和收到的数据报的目的IP地址145.13.3.10逐位相“”(AND)(计算机进行这种逻辑AND运算是很容易的),得出了所要找的子网的网络地址145.13.3.0

在这里插入图片描述

  • 还要弄清一个问题,这就是:在不划分子网时,既然没有子网,为什么还要使用子网掩码?这就是为了更便于查找路由表
  • 现在互联网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码。默认子网掩码中1的位置和IP地址中的网络号字段net-id正好相对应
  • 因此,若用默认子网掩码和某个不划分子网的IP地址逐位相“与”(AND),就应当能够得出该IP地址的网络地址来。这样做可以不用查找该地址的类别位就能知道这是哪一类的IP地址
    • A类地址的默认子网掩码是255.0.0.0,或0xFF000000。
    • B类地址的默认子网掩码是255.255.0.0,或0xFFFF0000。
    • C类地址的默认子网掩码是255.255.255.0,或0xFFFFFF00。
  • 在RFC 950成为互联网的正式标准后,路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。在路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
  • 注意,虽然根据已成为互联网标准协议的RFC 950文档,子网号不能为全1或全0,但随着无分类域间路由选择CIDR的广泛使用(在4.3.3节讨论),现在全1和全0的子网号也可以使用了,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持全0或全1的子网号这种较新的用法
  • 同样的IP地址和不同的子网掩码可以得出相同的网络地址。但是,不同的掩码的效果是不同的

使用子网时分组的转发

在划分子网的情况下,路由器转发分组的算法如下:

(1)从收到的数据报的首部提取目的IP地址D

(2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码D逐位相“”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。

(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。

(4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与”(AND操作),其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。

(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。

(6)报告转发分组出错。

练习

下图有三个子网,两个路由器,以及路由器R1中的部分路由表。现在源主机H1向目的主机H2发送分组。试讨论R1收到H1向H2发送的分组后查找路由表的过程。

在这里插入图片描述

【解】源主机H1向目的主机H2发送的分组的目的地址是H2的IP地址128.30.33.138。

  1. 源主机H1首先要进行的操作是要判断:发送的这个分组,是在本子网上进行直接交付还是要通过本子网上的路由器进行间接交付?
  2. 源主机H1把本子网的“子网掩码255.255.255.128”与目的主机H2的“IP地址128.30.33.138”逐位相“与”(即逐位进行AND操作),得出128.30.33.128,它不等于H1的网络地址(128.30.33.0)。这说明H2与H1不在同一个子网上。因此H1不能把分组直接交付H2,而必须交给子网上的默认路由器R1,由R1来转发。
  3. 路由器R1在收到一个分组后,就在其路由表中逐行寻找有无匹配的网络地址。
  4. 先看R1路由表中的第一行。用这一行的“子网掩码255.255.255.128”和收到的分组的“目的地址128.30.33.138”逐位相“与”(即逐位进行AND操作),得出128.30.33.128。然后和这一行给出的目的网络地址128.30.33.0进行比较。但比较的结果不一致(即不匹配)。
  5. 用同样方法继续往下找第二行。用第二行的“子网掩码255.255.255.128”和该分组的“目的地址128.30.33.138”逐位相“与”(即逐位进行AND操作),结果也是128.30.33.128。这个结果和第二行的目的网络地址128.30.33.128相匹配,说明这个网络(子网2)就是收到的分组所要寻找的目的网络。于是不需要再继续查找下去。R1把分组从接口1直接交付主机H2(它们都在一个子网上)。

超网

未完待续

猜你喜欢

转载自blog.csdn.net/rakish_wind/article/details/120445098
4.3