以下内容是我对别人观点的总结,如有不当之处,欢迎大家指正!
如何将IP地址分类是个问题!
IP地址过去的分类:
如果路由器中路由表存放的是全球所有的IP地址,那么查询的时候效率很低
把IP地址做一个分类,更容易管理
IP地址被分成了网络号和主机号,然后根据网络号的占位数来区分ABC类(一共有ABCDE类)
(首先要明确的一点是,IP地址的位数都是32位)(因为这是二进制的)
一个A类的地址,前8位是网络号,后26位是主机号,而且还有规定第一位一定是0
B类的前两位被强制为10,C类被强制为110,这样看来更容易区分是哪一类的IP地址
由过去的分类可知,A类的网络号很少,但是主机号很多。比较适合大型公司,因为数量少,但是内部的设备很多。
但就算如此,一个A类地址也有很多个IP地址,用不完很浪费
当时我们之所以是这样划分是因为我们觉得未来的终端数量是不会超过IP总数量的,但是这种的想法是错误的。
既然这种划分方式又浪费又不够用,那么我们就用了新的划分方式:子网掩码
子网掩码以及可变长子网掩码
子网掩码出现,但是A-E的划分方式也保留了
子网掩码就是再用另外一串数字来记录之前IP地址该记录的信息
这串数字也是32位的二进制数,但表示的时候也是可以通过十进制展示
比如说:
11111111 11111111 11111111 00000000 // 连续的1代表网络位,连续的0代表主机位
// 转换
255.255.255.0
对于IP就多了一个信息:
IP:192.168.33.112
子网掩码:255.255.255.0
根据上面的我们可以知道前面的8 * 3 位是网络位,后面的8位是主机位
即192.168.33是网络位,112是主机位
属于C类
子网就是在同一个局域网下:
如何判断两台设备是否在同一个局域网下?
通过IP地址和子网掩码的二进制,每一位与每一位相乘,然后最后得到的结果转换成十进制,如果数字相同的话就意味着在同一个子网下
这种划分方式比之前的那种方式好就好在子网掩码可以继续划分子网
也就是“可变长子网掩码”
本来像11111111 11111111 11111111 00000000才算是正常的。
现在网络位扩展占用了主机位,可以继续划分子网。
像11111111 11111111 11111111 11000000 // 连续的1代表网络位,连续的0代表主机位
后面的两个1,有00,01,10,11四种形式,每一种形式都对应着一种子网。
每种情况下对应十进制的范围:
00情况下的00000000-00111111 转为 0-63
01情况下的01000000-01111111 转为 64-127
10情况下的10000000-10111111 转为128-191
11情况下的11000000-11111111 转为192-255
这是因为00000000对应的是0;
而11111111对应的是255,
四种情况刚好将总共256种情况分成了四类子网
如果还是对上述内容不理解的话,建议参考
https://blog.csdn.net/pagnzong/article/details/112737814