IPv4 地址

IPv4 地址基本格式

IPv4 使用 32 位(4 字节)地址,因此整个地址空间有 4 294 967 296($2^{32},2^8.2^8.2^8.2^8$)。不过,有一些保留地址是特殊用途而保留的,如局域网专用地址(约1800万个地址)和组播地址(约2700万个地址)。


公网 IP 地址是指可以子啊广域网上直接使用的,直接被路由(也就是可以被指路径查到),并需向 IP 地址管理机构申请、注册、购买,且全球唯一(不存在多个用户拥有、使用相同的公网 IP 地址的情况)的 IPv4 地址。与公网 IP 地址相对应的自然是私网 IP 地址,又称为专用网络 IP 地址或者局域网 IP 地址。私网 IP 地址是指仅可以在各用户自己的局域网内部使用,且不同用户可以重复使用,无须向 IP 地址管理机构申请、注册,也无须购买的 IPv4 地址。私网 IP 地址就相当于我们企业内部的员工编号,仅在内部使用,不能通过这个员工编号来在全国范围内找到我们。

IPv4 地址在计算机内部是以二进制形式表示的,每个地址都有 32 位,由数字 0 和 1 构成。在这 32 位的二进制数中,其实每个 8 位之间并没有我们所看到的那个用来分隔各段的一个小圆点,只是为了方便我们自己阅读,在每个字节之间用一个小圆点分隔。因为整个 IP 地址有 32 位,无论是书写还是记忆都很不方便,于是我们在日常的 IP 地址管理中把这个 32 位长的二进制 IP 地址分段转换成对应的十进制,在每个字节间用小圆点分隔。引用某个 IPv4地址时,可使用 W.X.Y.Z 的点分十进制表示形式,如 192.168.1.10 等。

由前面介绍的数据转换内容可以知道,每个 8 位二进制所能表示的最大数就是 $2^8 - 1 = 255$(最小数为0)。所以 IPv4地址转换成十进制数后,每段8位二进制组的取值范围是 0~255。因为 IP 地址在计算机是以二进制表示的,32位就相当于 4 字节,所以在 IPv4 协议数据报格式,无论是源 IP 字段,还是目的 IP 地址字段都占 4 字节。

子网掩码

我们为设备配置 IP 地址时,通常是不能仅配置 IPv4 地址,而必须同时配置所谓的子网掩码,如下图所示。那么子网掩码是什么?它有什么用呢?

子网掩码

互联网是由很多小型网络构成的,每个网络上有很多主机,这样便构成了一个有层次的结构。IPv4 地址在设计时就考虑到地址分配的层次特点,将每个 IP 地址都分割成网络 ID 和主机 ID 两部分,以便于 IPv4 地址的寻址操作。那么 IPv4 地址的网络 ID 和主机 ID 各是多少位呢?如果不指定,在寻址时就不知道对应 IPv4 地址中哪些位代表网络 ID、哪些位代表主机 ID,这就需要通过这里所说的子网掩码来实现了。

与二进制 IPv4 相同,子网掩码也有 1 和 0 组成,且长度也是 32 位,我们也可以把它分成网络 ID 和主机 ID 两部分,且各自长度与 IPv4 地址的网络 ID 和主机 ID 部分对应相等。但子网掩码的网络 ID 部分全是 1,1 的数目等于网络 ID 的长度;主机 ID 部分全是 0 表示,0 的数目等于主机 ID 的长度。下图所示是一个网络长度为 20 的子网掩码。这样做的目的是为了在寻址过程中使子网掩码与对应的 IPv4 地址做逻辑与运算时用 0 遮住 IPv4 地址中原主机 ID 部分(因为 0 与任何数相与的结果都是 0 ),而不改变原网络 ID 部分(因为 1 与任何数相与都不改变原来的值),这样就一来就可以很容易确定对应目的 IPv4 地址所在的网络了,确定了网络,也就确定了主机,因为在 IPv4 地址中除了网络 ID 部分就是主机 ID 部分。

子网掩码不是一个地址,但是可以确定一个 IPv4地址中的哪一部分是网络 ID,哪一部分是主机 ID,连续 1 的部分就代表网络 ID,连续 0 的部分就代表主机 ID。子网掩码的作用就是获取主机通信不同情况,选择不同路由,子网掩码一旦设置,对应 IPv4地址中的网络 ID 和主机 ID 部分就固定了。

与 IPv4地址一样,子网掩码也可以转换成点分十进制形式。根据子网掩码格式可以发现,子网掩码有 0.0.0.0;255.0.0.0;255.255.0.0;255.255.255.0;255.255.255.255 五种,其中 0.0.0.0 代表任意网路的掩码,如我们在设置默认路由时,不仅 IP 地址为 0.0.0.0,子网掩码也为 0.0.0.0;A 类地址的默认子网掩码为 255.0.0.0;B 类地址的默认子网掩码为 255.255.0.0;C 类地址的默认子网掩码为 255.255.255.0;而 255.255.255.255 可以看作是单一主机网络,代表这个网络就这一个 IPv4 地址,在配置 ACL(访问控制列表)时,如果控制的是一台主机,则对应的子网掩码也为 255.255.255.255。有关 A、B、C 类地址的分类将在下面介绍。

子网掩码

IPv4 地址的基本分类

IPv4 地址共有 $2^{32}$ 个,最初把一个地址分成两部分:“网络识别码”在地址的最高的字节当中,”主机识别码“在剩下的部分中。这样划分的话,就使得最多只能分配给 256 个网络,显然这样是远远不够的。

为了克服这个限制,在随后出现的分类网络中,地址的最高位字节被重新定义为网路的类别(即网络 ID),共 5 个:A、B、C、D 和 E。A、B 和 C 类用于单播通信中设备 IP 地址分配;D 类属于组播地址,用于组播通信;E类是保留地址。他们均有不同的网络类别(也就是网络 ID) 长度,剩余部分用来识别网络内的主机(称为主机 ID)。网络 ID 用来确定每类网络中有的网络数,而主机 ID 用来确定每个网络中的 IP 地址数。下面分别介绍这五类地址的结构。

A 类 IPv4 地址

A 类 IPv4 地址结构如下图所示,其中网络 ID 占用最高一个字节,也就是第一个二进制 8 位组,而主机 ID 则占用剩余三个字节,也就是后面的三个二进制 8 位组(一共 24 位)。

A 类地址的结构

在分类中规定,A 类 IPv4 地址中网络 ID 的最高位固定为 0,后面 7 位可变。这样一来,A 类网络的总数从 256(28)个减少到 128(27)个。但实际可以使用的只有 126 个,即整个 IPv4 地址中可构建 126 个 A 类网络,因为网络 ID 为 0 和 127 的 A 类网络不可用的。网络 ID 全为 0 的地址为保留地址,不能被分配;而网络 ID 为 01111111(相当于十进制的 127)的地址专用本地环路测试(也就是通常所说的环路地址),也是不能分配的。也就是以 0 或者 127 开头的地址是不能分配给节点使用的。

又因为 A 类 IPv4 地址中主机 ID 又24 位,所有可以使用的主机 ID 数,也就是可以每个 A 类网络中拥有的 IPv4 地址数为 166 777 216($2^{24}$)。但主机 ID 全为 0 的地址为网路地址,而主机全为 1 的地址为广播地址,不能分配给主机使用,所以实际上可用的地址数为 166 777 214($2^{24}-2$)。A 类网络中可以构建的网络数最少,但每个网络中拥有的地址数是最多的,也就是可以构建的网络规模最大,适用于大型企业和运营商。A 类 IPv4 地址的子网掩码固定为 255.0.0.0,因为子掩码就是网络 ID 部分全为 1,主机 ID 部分全为 0,而 A 类地址中网络 ID 部分就是最高的那个字节。

B 类 IPv4 地址

B 类 IPv4 地址结构如下图所示,其网络 ID 占用最高的前两个字节,也就是第一个和第二个二进制 8 位组,而主机 ID 则占用剩余的两个字节,也就是后面两个二进制 8 位组。

B 类地址结构

B 类 IPv4 地址的网络 ID 的最高两位固定分别为 1、0,后面 14 位可变。由此可知由此可知 B 类网络的总数为 $2^{14}$。B 类 IPv4 地址中主机 ID 为 16 位,所以可用的主机数,也就是每个 B 类网络拥有的 IPv4 地址为 65536($2^{16}$)个。同样因为主机 ID 全为 0 的地址是网络地址,而主机 ID 全为 1 的地址为广播地址,不能分配给主机使用,所以实际上可以使用的地址数为 65534 个。

B 类 IPv4 地址的子网掩码为固定的255.255.0.0,因为 B 类地址中网络 ID 部分是最高的两字节,每个字节均为 8 个连续的 1,转换成十进制后每个字节就是 255 了。

C、D之下以此类推

IPv6 地址

IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128位的,用":"分成8段,用16进制表示;可见,IPv6地址空间相对于IPv4地址有了极大的扩充。RFC2373 中详细定义了IPv6地址,按照定义,一个完整的IPv6地址的表示法:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,例如: 2001:0000: 1F 1F :0000:0000:0100: 11A 0:ADDF

Last modification:December 7th, 2019 at 10:02 am
如果觉得我的文章对你有用,请随意赞赏