使用过云服务器的同学,应该比较常见到类似 172.16.0.0/24 这样一个像ip地址又不是ip的东西,要我们判断,其下多少个ip是在同一个局域网的。
要讲清楚这个,首先要讲到我们现在正在使用的IPV4。IPV4,说的直白点,就是把ip地址,划分为网络地址与主机地址,用4段,每一段为8位,段与段之间用点号连接,如果网络地址为第1段,那么主机地址就是后面3段。即:
二进制: 000000.00000000.00000000.00000000 ~ 11111111.11111111.11111111.11111111
十进制:0.0.0.0 ~ 255.255.255.255
这样,IPV4总共有2的32次方个IP地址。
为了能很好管理和分配这些IP地址,国际互联网组织又讲IPV4地址划分为5类
A类:00000000.00000000.00000000.00000000 ~ 01111111.11111111.11111111.11111111 即1.0.0.0 ~ 127.255.255.255
B类:10000000.00000000.00000000.00000000 ~ 10111111.11111111.11111111.11111111 即 128.0.0.0 ~ 191.255.255.255
C类:11000000.00000000.00000000.00000000 ~ 11011111.11111111.11111111.11111111 即192.0.0.0 ~ 223.255.255.255
D类:11100000.00000000.00000000.00000000 ~ 11101111.11111111.11111111.11111111 即224.0.0.0 ~ 239.255.255.255
E类:11110000.00000000.00000000.00000000 ~ 11110111.11111111.11111111.11111111即240.0.0.0 ~ 247.255.255.255
期中每类IP地址的第1个和最后1个是有特殊用途的。
A类地址,第1段,是网络号,后面3段是主机号
B类地址,前2段,是网络号,后面2段是主机号
C类地址,前3段,是网络号,后1段是主机号
D类地址,前4位固定,后28位为广播地址
E类地址,前5位固定,后27位为实验和未来保留地址
只要我们稍微算一下,我们就能算出A类地址有16777214(16777216-2)个主机地址,B类地址有65534(655536-2)个主机地址,C类地址有254(256-2)个主机地址。
这么大的一个主机地址,如果不进行合理的分配和管理,就会造成浪费,所以,人们就想到划分子网,就是把A、B、C类地址的主机号位数的前几位作为子网号,IP地址就演变成了 网络号 + 子网号 + 主机号。这样,不同的子网号,有不同数量的主机,可以分开分配与管理。但是,这样也带来了一个问题,哪就是,在网络中,别人如何知道你属于哪个子网呢?为了解决这样一个问题,就出现了子网掩码,子网掩码,就是把网络号 + 子网号的位置全部设置为1,主机号位置设置为0。比方有一个ip地址: 172.31.112.3, 看到开头是172,我们找一下,发现在128 ~191 之间,所以,这是个B类IP地址,B类IP地址,前2端是网络号,后2端是主机号,即172.31是网络号,112.3是主机号,现在,假设主机号中用了4位当做子网号,那么此时的子网掩码就是 255.255.240.0
这个,我觉得我讲明白了,但是,你觉得你真的明白了吗? 估计很多人,看了几遍,也云里雾里不明白,因为,这个东西,确实理解费劲。
哪,有没有简单的办法呢?CIDR
CIDR全称是无分类-域间-路由选择,它没有了IP地址分类,也就是没有了A、B、C、D、E类ip地址了,IP地址统一为 网络前缀 + 主机号/网络前缀所占位数 因为在这个里面,直接告诉了网络前缀的位数了,所以,子网掩码根据位数,就可以直接得出来;主机号的范围,也就可以通过“32减去网络前缀所占位数”得到主机号的位数,然后把主机号全部设置为0和1,就得到了理论上的主机范围。如:
172.31.112.3/20 = 10101100.00011111.01110000.00000011
最小ip地址:10101100.00011111.01110000.00000000 = 172.31.112.0
最大ip地址:10101100.00011111.01111111.11111111=172.31.127.255
我们用32减去20,得到主机号的位数为12位,我们就可以得出总共有2的12次方(4096)个主机。现在知道CIDR是个什么了吧!
下面,我们来做个题目检查一下吧!
有这么一个需求,要你设计一个局域网,要求能容纳100台机器,问你CIDR表示应该是多少,子网掩码是多少?
我们可以算下,2的多少次方是大于100的最小数?2的7次方是128,是大于100的最小数,因此,主机号位数为8位,那么网络前缀所占位数就是24(32-8),所以,CIDR表示就应该是 192.168.0.0/24, 子网掩码就是把所有网络号位设置为1,即 255.255.255.0(11111111.11111111.11111111.00000000)
你做出来了吗?
欢迎来到testingpai.com!
注册 关于