我们在浏览器中直接输入
IP
地址就可以访问某一个神秘的网站,那么这个IP
地址是如何划分的呢?
IP,英文全写为Internet Protocol,指TCP/IP网络体系中的网际互联协议,工作在OSI模型的网络层(简单了解即可)。
一、标准的IPv4地址划分规则
IP
分为IPv4
和IPv6
,这篇文章主要讲述IPv4
地址的划分。
在IPv4
中规定使用4个字节表示,也就是一共32位二进制数表示,但是使用二进制的方式不方便人记忆,所以我们转换为十进制,也就是点分十进制法表示,每8位用一个英文句话分隔开来,一共分为四组。
IPv4
一共划分为A,B,C,D,E这五类地址,如图所示。
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
注意:
- 网络位和主机位全0,那么在本网络中表示本机,而在路由器中表示整个网络(它的作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去)。
- 网络位和主机位全1,表示本网的广播地址。
- 网络位特定值,主机位全0表示一个网络。
- 网络位特定值,主机位全1表示对特定网络上的所有主机进行广播。
- 127.X.X.X是保留地址,用于循环测试。
所以实际上的能用的主机地址计算公式是
其中n表示主机位数,这里比如C类地址主机位是8位,那么实际能被分配的最多IP
数是
B类地址最多能使用的IP
数是
A类地址最多能使用的IP
数是
这里解释一下为啥要减去2,因为全0和全1的情况是不能被使用的,是特殊的,所以要减去2。
二、IPv4子网划分
什么是子网划分呢?为啥要有子网呢?
我们最常见的就是C类地址了,在C类地址中一共能标识254台主机,如果我们现在不需要那么多主机位呢?因为太多的主机位被浪费掉了,所以我们可以不可以让网络位向主机位中移动一定的位数呢?当是可以的,也就是出现了子网。
子网:向主机位借一定的位数。
IP = 网络段 + 子网段 + 主机段
三、子网掩码
由于子网划分的出现,我们无法快速知道网络位和主机位,所以提出了子网掩码的概念。通过IP与子网掩码进行按位与运算,最终的结果就是网络段地址。
我们知道只有相同的网络段才能相互通信,否则需要借助网关(路由器)进行数据转发。
比如:你先要和异地的女朋友进行微信,那么你要经过腾讯的服务器网关进行转发,把数据转发到你女朋友的微信中。
对于IP地址中的网络号都分在子网掩码中用“1”表示,对于IP地址中的主机号部分在子网掩码中用“0”表示。子网掩码的作用是用来区分网络上的主机是否在同一网络区段内,或者说,子网掩码用来区分IP地址的网络号和主机号。
没有进行子网划分的情况下,默认的子网掩码是:
- 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地址与子网划分
[3] 几类特殊的ip地址
[4] 一文看懂IP地址
Q.E.D.