写点什么

[网络] 跨区域网络的通信学习 IPv4 地址的分类和计算

作者:flow
  • 2022 年 7 月 28 日
  • 本文字数:6936 字

    阅读完需:约 23 分钟

一. IPv4 地址格式

网络互连的一个重要前提条件是要有一个有效的地址结构,并且所有的互连网络用户都应遵守这个地址结构。因为只有这样所有的互连网络用户才能在统一的规定下相互之间通讯。这个地址结构可以有许多不同的形式,可以用二进制表示、十进制表示,甚至用十六进制表示,如:204.71.200.68 转为八进制形式可表示为 0314.0107.0310.0104,IP 地址 204.71.200.68 转为十六进制形式可表示为 0xCC.71.0310.0x44。目前使用的 IPv4 地址使用 32 位二进制的地址,即在 IPv4 的地址空间中有 2 的 32 次幂(4,294,967,296,约为 43 亿)个地址可用。IPv4 地址在 1981 年 9 月实现标准化,在计算机中用四个八位二进制位组表示,分为 网络位和 主机位,


为了人们的使用方便,使用十进制地址表示,IP 地址中的每个 8 位位组用 0~255 之间的一个十进制数表示,数与数之间用点(.)分割,即所谓的 点分十进制格式。最小的 IPv4 地址是 0.0.0.0,最大的 IPv4 地址是 255.255.255.255,但这两个值是保留的,没有分配给私人的端系统。因为 TCP/IP 协议规定全 0 的地址(无论有多少 0)表示本地网络,保留为识别子网自身;32 比特全为 1 的地址用于本网广播,该地址叫做 有限广播地址(limited broadcast address)。而主机位全为 1 的网络地址,叫做 直接广播(directed boradcasting)地址,在网间网上的任何一点均可向其他任何网络进行直接广播。所谓广播,指同时向网上所有主机发送报文。对于 直接广播(directed boradcasting)地址,路由器等网络寻址设备允许其通过,并帮助其寻址, 所以直接广播(directed boradcasting)地址有穿透子网的能力。对于有限广播地址(limited broadcast address)只能用于本网的广播,对子网没有穿透能力。


二. IPv4 地址的结构

点分十进制数表示的 IPv4 分为五类,以适应大中小不同的网络类型,这些类的不同之处用于表示网络的位数与用于表示主机的位数之间的差别。这五类是:

• A 类地址

• B 类地址

• C 类地址

• D 类地址

• E 类地址

其中:

• A 类地址:A 类地址的第一个八位位组表示网络位,且 网络位的第一个 bit 总是 0,1-7bit 表示网络标识,即格式总为:0××××××××。后三个八位位组表示主机位,由 A 类地址的格式可以知道 A 类地址的网络标识有效范围是 00000001~011111111,用十进制表示即 1.0.0.0 到 126.0.0.0 共有 64+32+16+8+4+2+1=127 个可能的 A 类网络,主机标识为 2 的 24 次幂减 2 个(去掉全 0 和全 1 的地址)。即每个网络主机数为 16777214 个,这一类地址支持巨型网络,一般分配给具有大量主机的网络使用。

从技术上讲 127.0.0.0 也是一个 A 类地址,但他已被保留作闭环(look back)测试用而不能分配给一个网络。TCP/IP 协议规定,一、含网络号 127 的分组不能出现在任何网络上;二、主机和网关不能为该地址广播任何寻径信息。


• B 类地址:B 类地址的前两个八位位组表示网络位,且 网络位的前两个个 bit 总是 10,3-15bit 表示网络标识,即格式总为:10×××××× ××××××××。后两个八位位组表示主机位,由 B 类地址的格式可以知道 B 类地址的网络标识有效范围是 10000000 00000001~10111111 11111110,用十进制表示即 128.1.0.0~191.254.0.0,主机标识个数为 2 的 16 次幂减 2 个(去掉全 0 和全 1 的地址)。即每个网络主机数为 65534 个,这类地址一般分配给中等规模的网络使用。


• C 类地址:C 类地址的前三个八位位组表示网络位,且 网络位的前三个 bit 总是 110,4-23bit 表示网络标识,即格式总为:110××××× ×××××××× ××××××××。后一个八位位组表示主机位,由 C 类地址的格式可以知道 C 类地址的网络标识有效范围是 11000000 00000000 00000001~11011111 11111111 11111110,用十进制表示即 192.0.1.0~223.255.254.0,故其有效网络数为 2097152。主机标识个数为 2 的 8 次幂减 2 个(去掉全 0 和全 1 的地址)。即每个网络主机数为 254 个,这类地址一般分配给小型网络使用。


• D 类地址:用于在 IP 网络中的组播(multicasting,又叫多目广播),前 4 位 bit 设置恒为 1110。一个组播地址是一个唯一的网络地址。它能指导报文到达预定义的 IP 地址组,这样一台机器可以把数据同时发送到多个接受端,从而比为每个接受端创建一个不同的流有效的减少了网络流量。因为 D 类地址用于在一个私有网中传输组播报文至 IP 地址定义的端系统组中,而不用于互连单独的端系统或网络,所以没有必要把地址中的 8 位位组或地址位分开来表示网络和主机,相反,整个地址空间用于标识一个 IP 地址组(可以是 A、B 或 C 类地址)。因此 D 类地址空间的范围从 224.0.0.0 到 239.255.255.254。


• E 类地址:被 IETF 保留作研究之用,Internet 上没有可用的 E 类地址。 前 4 位 bit 设置恒为 1111。 有效地址范围 240.0.0.0 到 255.255.255.255


在 IP 地址范围内,还有一些非路由地址。IANA(Internet Assigned Numbers Authority)将一部分地址保留作为私人 IP 地址空间,专门用于内部局域网使用,这些地址如下:

A 类地址中的:10.0.0.0~10.255.255.255

B 类地址中的:172.16.0.0~172.31.255.255

C 类地址中的:192.168.0.0~192.168.255.255

这些地址不会被 Internet 分配,因此它们在 Internet 上也从来不会被路由,虽然它们不能直接和 Internet 网连接,但仍旧可以被用来和 Internet 通讯,我们可以根据需要来选用适当的地址类,在内部局域网中将这些地址当作公用 IP 地址一样地使用。在 Internet 上,那些不需要与 Internet 通讯的设备,如打印机、可管理集线器等也可以使用这些地址,以节省 IP 地址资源。


三.IP 地址进阶

1.分子网

为了解决相对比较简单的两层结构 IP 地址带来的问题,RFC917 和 RFC950 提出了一个叫做分子网的(subnetting)的解决方案。

RFC950 中规范的分子网方法能使 A、B、C 类 IP 地址再细分为更小的网络号。一个被子网化的 IP 地址包括三部分:

Ÿ 网络号

Ÿ 子网号

Ÿ 主机号

具体做法是把主机部分一分为二,用一部分用于识别子网,一部分用于标识主机,所以分子网的能力依赖于被子网化的 IP 地址类型。即 A 类的大于 B 类,B 类的大于 C 类。如:一个 C 类地址


2.子网掩码和 ip 地址

由于分子网的需要,导致了我们常说的子网掩码在这里出现。使用子网掩码目的是,告诉网络中的端系统(可能使路由器和其他主机)IP 地址的多少位用于识别网络和子网。子网掩码中用于标识网络号的位置为 1,主机位置为 0。

子网掩码不能单独存在,它必须结合 IP 地址一起使用。子网掩码只有一个作用,就是将某个 IP 地址划分成网络地址和主机地址两部分,如图 1。

各个不同的地址类有其各自的默认子网掩码,A 类为 255.0.0.0。B 类为 255.255.0.0.。C 类为 255.255.255.0。

子网掩码的二进制形式与 IP 地址的二进制形式相与后的结果即是其 IP 地址的网络的地址。由二进制与运算的性质我们很容易得到象 11111111 11111111 11111111 11000000(255.255.255.192)这样的掩码在子网里能产生多少个可能的主机。因为有 6 位为 0 的主机位所以子网可能的主机共有 2 的 6 次方减 2 个,减 2 是因为,当主机位全 0 时保留为识别子网自身(即 11111111 11111111 11111111 11000000 时),当主机位位全 1 时用于在子网内的广播(即 11111111 11111111 11111111 11111111 时),


3.可变长子网掩码(VLSM)

可变长子网掩码(VLSM)的提出是为了能够使用多个子网掩码分子网,这样当更改子网的大小时就不必改变整个网络的子网掩码了,原先单纯的分子网,当用户选择了一个子网掩码后,就意味着整个网络中每个子网内的的主机数已经确定。

可变长子网掩码(VLSM)即提供一个允许使用不同大小的子网的掩码的方法。对于扩展网络前缀的大小能用斜杠(/)后跟一个网络或子网位数的值表示。如 192.125.61.8/24 即表示有 24 为网络位,即二进制的前 24 位 11000000.0111101.00111101 表示网络,后 8 位 00001000 表示主机。


4.无类域间路由(CIDR)

CIDR 用于解决原先分类地址策略的低效性,以便使路由器更有效的汇聚不同网络地址成单一的路由表项。

主要通过以下几个特性来完成:

Ÿ 消除地址分类

Ÿ强化的路由汇聚 即使路由表中的一个表项能够表示许多网络地址空间。

Ÿ超网化 即把一块连续的 C 类地址空间模拟成一个单一的更大的地址空间。

其中:

Ÿ 消除地址分类 使用网络前缀代替 IP 地址中类的划分,且前缀可以是长度,从而可以根据网络大小分配网络地址空间,而不是在预定义的网络地址空间中作裁减。每一个 CIDR 网络地址和一个相关的掩码一起广播,这个掩码用于识别网络前缀的长度。如以前的一个 C 类地址 192.168.125.61.8,其网络号是 192.168.61,主机号是 8。但使用了 CIDR 后,8 位边界的结构限制不在存在,可以变网络位为任意的位数,例如当网络号为 20 位时网络号为:11000000.01111101.0011,其主机号为:1101.00001000.所以从数学上说这个 IP 地址可标识的网络数有 2 的 20 次幂个。


四.IP 地址的相关计算

在计算此之前我们应该熟悉 2 从 0 到的 8 的各次幂时多少。如下表:

结果 128 64 32 16 8 4 2 1

2 的幂次 7 6 5 4 3 2 1 0


如对划分子网数的划分,如要划分四个子网,每个子网中有 58 台主机,这是可以选择一个 主机位有六位的 C 类地址,因为 2 的 6 次幂为 64,最接近 58,所以你可以用剩下的 28 位作网络位,


对于一个带子网掩码的 IP 地址的网络地址的计算,应是用 IP 地址的二进制形式和子网掩码的二进制形式做相与运算,其结果即是改地址所在的子网网络地址。如:

I P 地址  192.168.0.1

子网掩码  255.255.255.0

AND 运算

转化为二进制进行运算:

I P 地址 11010000.10101000.00000000.00000001

子网掩码 11111111.11111111.11111111.00000000

AND 运算

     11000000.10101000.00000000.00000000

转化为十进制后为:

      192.168.0.0

即 192.168.0.1 255.255.255.0 所在的子网地址是 192.168.0.0


子网掩码和子网中主机数的计算:

当知道一个网络地址和要求划分的子网个数时,可以先确定其网络位的位数,再从其网络位的位数得知其主机位的位数,从而我们可以进一步得出每个网络中的主机个数,由于所有位都是 2 的倍数,所以各个子网中的主机号可以累加计算,举例说明:

例子一:

已知网络地址为 211.134.12.0,要有 4 个子网,求子网掩码及各个主机块。

由 4 个子网可知,网络位的大小最小应为 8,因为若为 4 时去掉全 0 和全 1 的网络位,只有 2 个子网可用,并不满足要求。网络位大小位 8 即意味着网络位有 3 位,对于地址 211.134.12.0 来说,它是一个 C 类地址,那剩下的主机位应为 8-3=5 位。从数学上讲即有 2 的 5 次幂,共有 32 个主机,这是每个子网中的主机数,但去掉全 0 的本地网络和全 1 的广播地址,每个子网实际可以分配的主机个数时 30 个。对于子网的个数来说,共有 2 的 3 次幂减 2 个,共 6 个子网,若我们把这八个子网分别用 0~7 标识,主机用 0~255 标识一下可知:


子网代码 网络位 主机位范围 子网中的主机块范围

子网 0 000 000 00000~000 11111 0~31 (本地网络,应去除)

子网 1 001 001 00000~001 11111 32~63

子网 2 010 010 00000~010 11111 64~95

子网 3 011 011 00000~011 11111 96~127

子网 4 100 100 00000~100 11111 128~159

子网 5 101 101 00000~101 11111 160~191

子网 6 110 110 00000~110 11111 192~223

子网 7 111 111 00000~111 11111 224~255 (子网广播,应去除)


除去网络位中和主机位中全 0 和全 1 的地址,实际可以应用的地址是:


子网代码 网络位 主机位范围 子网中的主机块范围

子网 1 001 001 00001~001 11110 33~62

子网 2 010 010 00001~010 11110 65~94

子网 3 011 011 00001~011 11110 97~126

子网 4 100 100 00001~100 11110 129~158

子网 5 101 101 00001~101 11110 161~190

子网 6 110 110 00001~110 11110 193~222


而我们根据子网掩码的定义可知,其作用是用来划分子网的,所以其子网掩码可表示为 211.134.12.X,其中 X 是网络位的大小,即二进制的 111,十进制的 224,所以子网掩码是 211.134.12.224。其实我们由每个二进制位组的大小都是 256 可知,用 256 减去每个子网中的主机数(主机块)即得掩码的数值。在此例中是用 256 减去 32 即得 224。


通过对以上的关系的总结可以得到如下关系的表示:

(1) 子网掩码=256-每个子网可分配的 IP 地址块大小

(2) 每个子网可分配的 IP 地址块大小=256/可分配子网块大小

(3) 可分配子网块大小=256/I 每个子网可分配的 IP 地址块大小

(4) 每个子网实际可分配的 IP 地址数=每个子网可分配的 IP 地址块大小-2

(5) 可分配子网数=可分配子网块大小-2

其实从上例中可以知道每个子网的网络地址就是其子网中的主机块范围中第一个主机的地址,而每个子网的广播地址就是其子网中的主机块范围中最后一个主机的地址,如子网 3 中,其网络地址就是主机位 96 主机的地址,而其子网的广播地址就是其子网中的主机位是 127 的主机地址。当然我们在实际计算时可以利用其 2 的倍数的性质用加法进行计算。如我们算出每个子网的主机数是 32 时,即可知第一个子网范围是 0~31;第二个子网的第一个主机是 32,而最后一个是在第一个子网的最后一个主机 31 的基础上再加 32,即 31+32=63,第二个子网的范围即是 32~63;第三个子网的第一个主机是 64,而最后一个是在第一个子网的最后一个主机 63 的基础上再加 32,即 63+32=95,第三个子网的范围即是 64~95。依次类推,第四个、第五个··· ···而如此计算出的子网中的主机范围还不能用,因为还要除去每个子网中的主机块的第一个和最后一个地址,即第一个子网是 0 和 31,第二个子网是 32 和 63,第三个子网是 64 和 95,其中前面小的那个是本地的网络地址,后面大的是本地的广播地址。

其实每个子网中的本地的网络地址必然是一偶数(因为要全 0,最后一位为 0 确定了这个值是偶数),每个子网中的本地的广播地址必然是一奇数(因为要全 1,最后一位为 1 确定了这个值是奇数);同时每个子网中的第一个可用的地址是其网络地址加 1(因其网络地址为偶,所以其第一个可用的地址必为奇数),每个子网中的最后一个可用的地址是其广播地址减 1(因其广播地址为奇,所以其最后一个可用的地址必为偶数),且它们必定两两相邻,即    第 n-1 个子网的网络地址 - 第 n-1 个子网中第一个可用的地址………第 n-1 个子网中最后一个可用的地址 - 第 n-1 个子网的广播地址 —— 第 n 个子网的网络地址-第 n 个子网中第一个可用的地址…….…第 n 个子网中最后一个可用的地址 - 第 n 个子网的广播地址 —— 第 n+1 个子网的网络地址 - 第 n+1 个子网中第一个可用的地址………第 n+1 个子网中最后一个可用的地址 - 第 n+1 个子网的广播地址……


例子二:

一个公司有 530 台电脑,组成一个对等局域网,子网掩码设多少最合适?

  首先,无疑,530 台电脑用B类IP最合适(A类不用说了,太多,C类又不够,肯定是B类),但是 B 类默认的子网掩码是 255.255.0.0,可以容纳 6 万台电脑,显然不太合适,那子网掩码设多少合适呢?我们先来列个公式。

  2 的 m 次方=560

  首先,我们确定 2 一定是大于 8 次方的,因为我们知道 2 的 8 次方是 256,也就是C类IP的最大容纳电脑的数目,我们从 9 次方一个一个试 2 的 9 次方是 512,不到 560,2 的 10 次方是 1024,看来 2 的 10 次方最合适了。子网掩码一共由 32 位组成,已确定后面 10 位是 0 了,那前面的 22 位就是 1,最合适的子网掩码就是:11111111.11111111.11111100.00000000,转换成 10 进制,那就是 255.255.252.0。


五.附录:


在此列出 A、B、C 三类网络子网数目与子网掩码的转换表,以供参考。

A 类:

子网数目 占用位数    子网掩码    子网中主机数

 2     1    255.128.0.0    8,388,606

 4     2    255.192.0.0    4,194,302

 8     3    255.224.0.0    2,097,150

 16     4    255.240.0.0    1,048,574

 32     5    255.248.0.0    524,286

 64     6    255.252.0.0    262,142

 128    7    255.254.0.0    131,070

 128    8    255.255.0.0    65,534


B 类:

子网数目 占用位数    子网掩码    子网中主机数

 2     1    255.255.128.0   32,766

 4     2    255.255.192.0   16,382

 8     3    255.255.224.0   8,190

 16     4    255.255.240.0   4,094

 32     5    255.255.248.0   2,046

 64     6    255.255.252.0   1,022

 128    7    255.255.254.0   510

 256    8    255.255.255.0   254


C 类:

子网数目 占用位数    子网掩码    子网中主机数

 2     1    255.255.255.128   126

 4     2    255.255.255.192   62

 8     3    255.255.255.224   30

 16     4    255.255.255.240   14

 32     5    255.255.255.248   6

 64     6    255.255.255.252   2


表 ABC 类地址网络/地址的范围/结构

A 类:

|―――8 位网络位―――|―――――――――32 位主机位―――――――――|

B 类:

|――――――16 位网络位――――――|――――――16 位主机位――――――|

C 类:

|―――――――――32 位网络位―――――――――|――― 8 位主机位―――|


A 类:

|―――0××××××××―――|――――――――32 位主机位――――――――|

B 类:

|―――10×××××× ××××××××―――|―――――― 16 位主机位―――――|

C 类:

|――― 110××××× ×××××××× ×××××××× ―――|――― 8 位主机位―――|

用户头像

flow

关注

还未添加个人签名 2022.07.13 加入

还未添加个人简介

评论

发布
暂无评论
[网络]跨区域网络的通信学习IPv4地址的分类和计算_签约计划第三季_flow_InfoQ写作社区