Alex_McAvoy

想要成为渔夫的猎手

IPv4 地址与子网划分

【概述】

连接在 Internet 中的每一台主机或路由器,都会被分配一个 $32bit$ 的全球唯一标识符,即 IPv4 地址,常被称为 IP 地址

IP 地址的发展阶段经历分类 IP子网划分无分类编址三个阶段

本文主要介绍子网划分

【子网划分】

概述

对于分类 IP 来说,其是由网络号与主机号构成的两级 IP,则导致 IP 地址空间的利用率有时会很低,同时给每一个物理网络分配一个网络号会导致路由表太大使得网络性能变差

因此,在分类 IP 的基础上又增加了一个子网号字段,使两级 IP 变为三级 IP,这种做法被称为子网划分,目前已成为正式标准协议

基本思想

划分子网被规定为一个单位内部网络的过程,单位对外仍表现为没有划分子网的网络

其基本思想是从原有的分类 IP 的主机号 Host Id 中借用若干位比特,来作为子网号 SubNet Id,因此,三级 IP 地址结构如下

具体来说,凡是从其他网络发送给本单位某个主机的 IP 数据报,仍是根据 IP 数据报的目的网络号,先找到连接在本单位网络上的路由器,然后该路由器在收到 IP 数据报后,再按目的网络号与子网号找到目的网络,最后根据主机号将 IP 数据报直接交付给目的主机

特殊用途 IP

由于子网划分是在分类 IP 的基础上进行的改进,因此其在分类 IP 中的特殊用途 IP 的基础上也进行具体规定

具体来说,在对分类 IP 地址进行子网划分时,子网号 SubNet Id 不能全 $0$ 或全 $1$

同时,子网中的主机号全 $0$ 的地址被视为子网本身的网络地址,主机号全 $1$ 的地址被视为子网的广播地址

【子网掩码】

概述

由于划分子网只是将 IP 地址的主机号这部分进行再划分,没有改变分类 IP 地址中原来的网络号,因此,对一个 IP 数据报来说,无法判断源主机或目的主机所连接的网络是否进行了子网划分

为告诉主机或路由器对一个 A、B、C 类网络进行了子网划分,引入了子网掩码(Subnet Mask)的概念,其用来表达对原 IP 地址中对主机号的借位

并规定在以下三种情况使用子网掩码:

  1. 一个主机在设置 IP 地址信息时,必须设置子网掩码
  2. 同属一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码
  3. 路由器的路由表中,所包含的信息主要内容有:目的网络地址子网掩码下一跳地址

格式

子网掩码,是一个与 IP 地址等长的 $32bit$ 的二进制字符串,其由一串连续的 $1$ 和跟随的连续的 $0$ 构成,其中,$1$ 对应于 IP 地址中的网络号与子网号,$0$ 对应与 IP 地址中的主机号

这样一来,计算机或路由器仅需将 IP 地址与其对应的子网掩码,进行逐位与运算,即可得到相应子网的网络地址


举例来说,假设某主机的 IP 地址是 136.34.5.56,子网掩码为 255.255.255.0

在将其分别转换为二进制后,再进行逐位与运算,即可得到该主机所在子网的网络号为:136.34.5.0

默认子网掩码

Internet 标准规定,所有的网络都必须使用子网掩码,如果一个网络没有进行划分子网,那么将采用默认子网掩码

A、B、C 类地址的默认子网掩码分别如下:

  • A 类:255.0.0.0
  • B 类:255.255.0.0
  • C 类:255.255.255.0

分组转发算法

IPv4 地址与分类 IP 中,介绍了采用分类 IP 时,路由器执行分组转发算法的算法流程,那么,当使用子网掩码后,路由器的分组转发算法如下:

1)从 IP 数据报的首部提取目的主机的 IP 地址 D

2)对路由器直接相连的网络逐个检查,用各网络的子网掩码与 D 逐位相与,若结果与相应的网络地址匹配,若匹配,则为直接交付,否则,为间接交付,执行步骤 3)

3)若当前路由器的路由表中,含有目的地址为 D 的特定主机路由,则将 IP 数据报传送给路由表中指明的下一跳路由器,否则,执行步骤 4)

4)对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码与 D 进行逐位相与,若结果与该行的目的网络地址匹配,则将 IP 数据报传送给该行指明的下一跳路由器,否则,执行步骤 5)

5)若当前路由器的路由表中,含有一个默认路由,则将 IP 数据报传送给路由表中所指明的默认路由器,否则,执行步骤 6)

6)报告转发分组出错

感谢您对我的支持,让我继续努力分享有用的技术与知识点!