学习日期:2024.7.24
内容摘要:IPv4地址,分类编址,子网,无分类编址
IPv4地址概述
在TCP/IP体系中,IP地址是一个最基本的概念,IPv4地址就是给因特网上的每一台主机的每一个接口分配一个在全世界范围内唯一的32比特的标识符。
IPv4地址是32比特位的,因为一连串0和1不方便阅读,所以常用点分十进制法表示,其实就是8个二进制数为一组,用十进制数表示,再用点分开,也就是我们常见的形如192.168.0.1的形式。
为了方便后面的学习,可以先熟悉几个常用的二进制转十进制:
1111 1111转十进制是255,1000 0000转十进制是128,自然0111 1111转十进制是127
10开头的八位二进制数肯定是128+一个小于64的数,所以在128到192之间
110开头的八位二进制数肯定是128+64+一个小于32的数,所以在192到223之间
IPv4地址的编址方法经历了三个历史阶段:分类编址,划分子网,无分类编址,下面依次介绍。
分类编址的IPv4
IPv4地址最初是分类编址的,分A,B,C,D,E五类,区别在于网络号和主机号所占的位数。
A类地址前8为是网络号,且一定是0开头。B类地址前16位是网络号,且一定是10开头。C类地址前24位是网络号,且一定是110开头。通过这样的方式,只看前三位就能区分开ABC类地址。
而D类地址是1110开头,为多播地址,E类地址是1111开头,保留为今后使用,这里不多介绍。
注意:
①只有ABC类地址可以分配给网络中的主机和路由器接口
②主机号全0的地址是网络地址,主机号全1的地址是广播地址,不能分配给主机和路由器的各接口
下面为了各位和我自己能看清楚,八位二进制数我会用空格隔开一次,自行看做8位一组即可。
A类地址
A类地址前8位是网络号,而且第一位固定是0。
最小网络号是0000 0000,保留不指派。(和BC不同,A类的最小最大网络号不指派)
最大网络号是0111 1111(十进制为127),作为本地环回测试地址,不指派。
所以,第一个可以指派的网络号是1,网络地址为1.0.0.0(主机号全0),最后一个可指派的网络号是126(0111 1110),网络地址是126.0.0.0
所以A类地址可以指派的网络数量为126个(1到126),计算公式为
(8-1)是因为有8位,但是第一位固定是0,减2是因为减去最小网络号0和最大网络号127。
所以A类地址每个网络中可以分配的IP地址数量为 个
24位主机号,减去全0的网络地址和全1的广播地址
B类地址
B类地址前16位是网络号,而且前两位固定是10
最小网络号是1000 0000 0000 0000,点分十进制表示是128.0,是第一个可以指派的网络号
最大网络号是1011 1111 1111 1111,点分十进制表示是191.255,是最后一个可以指派的网络号
所以B类地址可指派的网络数量为个网络数(前两位固定为10,不用像A类一样再减2)
每个网络中可以分配的IP地址数量为(16位二进制数,减全0和全1两种情况)
C类地址
C类地址前24位是网络号,而且前三位固定是110
最小网络号点分十进制表示是192.0.0,是第一个可以指派的网络号
最大网络号点分十进制表示是223.255.255,是最后一个可以指派的网络号
所以C类地址可指派的网络数量为
每个网络中可分配的IP地址数量为
小结:
我们通过左起第一个十进制数的值,就可以判断出网络类别,因为A类是0开头,所以A类地址的网络号一定小于127,同理,10开头的128~191是B类,110开头的192~223是C类,现在我们再回看192.168.0.1这个地址
我们发现它是一个C类地址,网络号为192.168.0,主机号为1
而1.2.3.4,我们就知道它是一个A类地址,网络号为1,主机号为2.3.4
有三种情况的地址不能指派给主机或路由器接口:
①A类网络号0和127 ②主机号全0的网络地址 ③主机号全1的广播地址
划分子网的IPv4
假如某单位有一个大型局域网,想连接到因特网,该单位如果申请C类网络地址,只有254个IP地址,不够用,所以该单位申请了一个B类地址,有65534个IP地址,又有点太多了,给每台计算机和路由接口分配IP地址后,还有大量剩余,这些剩余的IP地址只能由该单位的同一个网络使用,其它单位的网络不能使用,造成了浪费。
随着该单位的发展,该单位新增了一些计算机,并且需要将原来的网络按照部门划分成三个独立的网络,分为子网1,子网2和子网3,假如原来申请的B类地址是子网1在用,子网2和子网3是不能用的,如果要申请新的网络号,就要花费更多的费用,而且也会浪费原有网络地址中的大量IP地址。
我们发现,核心问题是主机号的长度。对于一个大型局域网来说,C类地址254个主机号不够用,B类65534个又太多了,因此,我们选择从主机号中“借走”一部分充当子网号来解决这个问题。
但是,本来IPv4八位一组分的好好的,我们这样一借,就不是八位一组了,所以我们需要引入一个东西来记录我们“借”了多少位充当子网号,这就是子网掩码。
子网掩码也是32比特,可以和IPv4地址对齐,子网掩码连续是1的部分就是网络号和子网号,是0的部分就是主机号。这样我们只需要看子网掩码的1到哪,就可以知道有几位主机号了,避免了主机号原本只能8,16,32位三选一的弊端。
如图所示,网络地址218.75.230.0,218告诉我们这是个C类地址,所以网络号是218.75.230,而子网掩码是255.255.255.128,前三个255是24个连续的比特1,对应网络号,最后一个128表示最后8位是1000 0000,所以主机号的第一位被“借用”了,充当了子网号。
因为只借用了一位,所以子网数量是两个,即子网号是0和1两种,每个子网可分配的地址数量是
, (8-1)是因为8位主机号被借走一位,事实上只有7位,减2还是减去全0的网络地址和全1的广播地址。
可以结合下图对照仔细理解
划分子网的方式要兼容之前没有划分的形式,所以,默认的子网掩码是指在未划分子网的情况下使用的子网掩码。其实就是A类用255.0.0.0,B类用255.255.0.0,C类用255.255.255.0
无分类编址的IPv4地址
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量众多的C类网因为其地址空间太小没有得到充分利用,IPv4地址消耗速度很快
1993年,因特网工程任务组IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)
CIDR消除了传统的ABC类地址和子网的概念,可以更加有效的分配IPv4地址的空间。
CIDR使用斜线记法,就是在IPv4地址后面加上斜线"/",在斜线后面写上网络前缀所占的比特数。
比如说128.14.35.7/20,网络前缀占用20比特,主机号占用32-20=12比特
CIDR实际上是将网络前缀全部相同的连续的IP地址组成一个"CIDR地址块",我们只要知道其中任意一个地址,就可以知道该地址块的全部细节,包括:
1.地址块的最小地址 2.地址块的最大地址 3.地址块中的地址数量 4.地址块聚合某类网络的数量
5.地址掩码(可继续称为子网掩码)
如128.14.35.7/20,因为20在16和32之间,我们可以把后面16个二进制位写出来,前面的依旧按点分十进制写,如图所示
事实上,就是通过/20这样的形式,自由划分网络号和主机号,该方法还可以用来进行路由聚合。
如图,如果R1将自己直连的五个网络都通告给R2,则R2的路由表会增加五个路由记录。为了减少占用,R1可以将五个路由记录聚合起来,因为其最大共同前缀都是172.1.0000 01共22位,把剩下的位都取0,则聚合地址块是172.1.4.0/22(这个/22不能省,很关键),也可以称之为超网。
感谢您看到这里,如果满意的话麻烦您点个赞支持一下,主页还有更多内容分享。
内容总结自bilibili用户 湖科大教书匠的《计算机网络微课堂》和中国工信出版集团《图解TCP/IP》