我们在浏览器中直接输入IP地址就可以访问某一个神秘的网站,那么这个IP地址是如何划分的呢?

IP,英文全写为Internet Protocol,指TCP/IP网络体系中的网际互联协议,工作在OSI模型的网络层(简单了解即可)。

一、标准的IPv4地址划分规则

IP分为IPv4IPv6,这篇文章主要讲述IPv4地址的划分。

IPv4中规定使用4个字节表示,也就是一共32位二进制数表示,但是使用二进制的方式不方便人记忆,所以我们转换为十进制,也就是点分十进制法表示,每8位用一个英文句话分隔开来,一共分为四组。

IPv4一共划分为A,B,C,D,E这五类地址,如图所示。

image-20230411110314994

A类地址中的标识位是0,网络地址位占用7位,主机位24位。

B类地址中的标识位是10,网络地址占用14位,主机位16位。

C类地址中的标识位是110,网络地址占用21位,主机位8位。

但是D类地址和E类地址是不区分网络地址和主机地址的。

A类地址
00000000 00000000 00000000 00000000 = 0.0.0.0
01111111 11111111 11111111 11111111 = 127.255.255.255
A类地址范围:0.0.0.0 ~ 127.255.255.255
实际能分配的范围:1.0.0.1 ~ 127.255.255.254

B类地址
10000000 00000000 00000000 00000000 = 128.0.0.0
10111111 11111111 11111111 11111111 = 191.255.255.255
B类地址范围:128.0.0.0 ~ 191.255.255.255
实际能分配的范围:128.0.0.1 ~ 191.255.255.254

C类地址
11000000 00000000 00000000 00000000 = 192.0.0.0
11011111 11111111 11111111 11111111 = 223.255.255.255
C类地址范围:192.0.0.0 ~ 223.255.255.255
实际能分配的范围:192.0.0.1 ~ 223.255.255.254

D类地址
11100000 00000000 00000000 00000000 = 224.0.0.0
11101111 11111111 11111111 11111111 = 239.255.255.255
D类地址范围:224.0.0.0 ~ 239.255.255.255
实际能分配的范围:224.0.0.1 ~ 239.255.255.254

E类地址
11110000 00000000 00000000 00000000 = 240.0.0.0
11110111 11111111 11111111 11111111 = 247.255.255.255
E类地址范围:240.0.0.0 ~ 247.255.255.255
实际能分配的范围:240.0.0.1 ~ 247.255.255.254

注意:

  1. 网络位和主机位全0,那么在本网络中表示本机,而在路由器中表示整个网络(它的作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去)。
  2. 网络位和主机位全1,表示本网的广播地址。
  3. 网络位特定值,主机位全0表示一个网络。
  4. 网络位特定值,主机位全1表示对特定网络上的所有主机进行广播。
  5. 127.X.X.X是保留地址,用于循环测试。

所以实际上的能用的主机地址计算公式是

2n22^n-2

其中n表示主机位数,这里比如C类地址主机位是8位,那么实际能被分配的最多IP数是

282=2542^8-2=254

B类地址最多能使用的IP数是

2162=65,5342^{16}-2=65,534

A类地址最多能使用的IP数是

2242=16,777,2142^{24}-2=16,777,214

这里解释一下为啥要减去2,因为全0和全1的情况是不能被使用的,是特殊的,所以要减去2。

二、IPv4子网划分

什么是子网划分呢?为啥要有子网呢?

我们最常见的就是C类地址了,在C类地址中一共能标识254台主机,如果我们现在不需要那么多主机位呢?因为太多的主机位被浪费掉了,所以我们可以不可以让网络位向主机位中移动一定的位数呢?当是可以的,也就是出现了子网。

子网:向主机位借一定的位数。

IP = 网络段 + 子网段 + 主机段

三、子网掩码

由于子网划分的出现,我们无法快速知道网络位和主机位,所以提出了子网掩码的概念。通过IP与子网掩码进行按位与运算,最终的结果就是网络段地址。

我们知道只有相同的网络段才能相互通信,否则需要借助网关(路由器)进行数据转发。

比如:你先要和异地的女朋友进行微信,那么你要经过腾讯的服务器网关进行转发,把数据转发到你女朋友的微信中。

对于IP地址中的网络号都分在子网掩码中用“1”表示,对于IP地址中的主机号部分在子网掩码中用“0”表示。子网掩码的作用是用来区分网络上的主机是否在同一网络区段内,或者说,子网掩码用来区分IP地址的网络号和主机号。

image-20230411215849909

没有进行子网划分的情况下,默认的子网掩码是:

  • A类地址子网掩码:255.0.0.0
  • B类地址子网掩码:255.255.0.0
  • C类地址子网掩码:255.255.255.0

通过IP地址和子网掩码进行按位与运算可以计算出网络地址,知道网络地址后,我进而能计算出最多可以分配多少台主机。如下:

IP地址:192.168.0.1 

子网掩码:255.255.255.0

192.168.0.1 = 11000000 10101000 00000000 00000001

255.255.255.255 = 11111111 11111111 11111111 00000000

进行按位与运算的结果是:11000000 10101000 00000000 00000000 = 192.168.0.0

所以网络段IP地址是192.168.0.0

为了方便表示,我们还可以使用另外一种方式表示,例如:192.168.0.1/24,这个是和上面的表示是等价的。

这里的"/24"表示从左到右有24位1。

能分配的主机数量是:2的8次方减2。

四、私有IP地址

在A,B,C级地址中都划分出一部分地址作为私有地址使用,并且私有地址只能用在局域网中。

A级私有地址:10.0.0.1 ~ 10.255.255.255
B级私有地址:172.16.0.1 ~ 172.32.255.255
C级私有地址:192.168.0.1 ~ 192.168.255.254

五、特殊地址

127.X.X.X,是特殊地址,用于回环测试。

168.254.X.X,是保留地址,如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP地址。

参考文献

[1] IP地址与子网划分

[2] 深入理解IP地址、子网掩码、网关的概念

[3] 几类特殊的ip地址

[4] 一文看懂IP地址

Q.E.D.


热爱生活,热爱程序