计算机网络 — IPv4、子网掩码、CIDR
文章目录IPv4子网掩码CIDRCIDR计算CIDR子网划分IPv4IP地址由四段组成,每个字段是一个字节,8位,最大值是255。每个IP地址都有一个网络部分,用于识别接口使用的IP地址在哪个网络中可被发现;以及一个主机地址,用于识别由网络部分给出的网络中的特定主机。IPv4的地址长度为32位,共4个字节,但实际中我们用点分十进制记法。IP地址根据网络号和主机号来分,分为A、B、C三类及特殊地址D
IPv4
IP地址由四段组成,每个字段是一个字节,8位,最大值是255。
每个IP地址都有一个网络部分,用于识别接口使用的IP地址在哪个网络中可被发现;以及一个主机地址,用于识别由网络部分给出的网络中的特定主机。
IPv4的地址长度为32位,共4个字节,但实际中我们用点分十进制记法。
IP地址根据网络号和主机号来分,分为A、B、C三类及特殊地址D、E。 全0和全1的都保留不用。
A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。
B类:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。
C类:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。
D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户[1] 。
E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。
在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0~172.31.255.255
C类地址:192.168.0.0~192.168.255.255
子网掩码
子网掩码是由一台主机或路由器使用的分配位,以确定如何从一台主机对应 IP 地址中获得网络和子网的信息。
它的主要作用有两个,一是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。二是用于将一个大的IP网络划分为若干小的子网络。
子网掩码与IP地址相同,也是32位,也分为网络段和主机段,而且它的网络段都是1,主机段都是0。
一个IP地址可以与一个子网掩码使用按位与操作,以形成用于路由的地址的网络/子网标识符(前缀)。在下面列子中,IPv4地址 128.32.1.14 使用长度位24的掩码得到前缀 128.32.1.0/24
地址 10000000 00100000 00000001 00001110 128.32.1.14
掩码 11111111 11111111 11111111 00000000 255.255.255.0(/24)
结果 10000000 00100000 00000001 00000000 128.32.1.0
对于简单的IP地址来说,所有同一个网络下的主机IP都有相同的网络段;而对于子网掩码,所有同一物理网络下的主机都属于相同的子网,这些子网又可能属于同一个主网络,这就使得不同物理网络下的主机可能拥有相同的网络号。
以一个B类地址128.96.34.15为例。现在假设它的子网掩码是11111111 11111111 11111111 100000000,即255.255.255.128,将它与128.96.34.15按位与,得到128.96.34.0,这就可以获知自己所在的子网号。
考虑如下两个主机:
H1:所在子网128.96.34.0,子网掩码255.255.255.128,IP是128.96.34.15
H2:所在子网128.96.34.128,子网掩码255.255.255.128,IP是128.96.34.139
如果H1要发东西给H2,那么H1要将H2的地址与自己的子网掩码按位与,发现结果是128.96.32.128,而自己所在子网是129.96.32.0,这说明H1与H2不在同一子网中,因此H1将数据包发送给路由器,由路由器转发给H2.
CIDR
CIDR的全称是Classless Interdomain Routing,即无类别域间路由。
CIDR在一定程度上解决了路由表项目过多过大的问题。CIDR之所以称为无分类编址,就是因为CIDR完全放弃了之前的分类IP地址表示法,它真正消除了传统的A类、B类、C类地址以及划分子网的概念,它使用如下的IP地址表示法:
{<网络前缀>, <主机号>} / 网络前缀所占位数
CIDR仅将IP地址划分为网络前缀和主机号两个部分,可以说又回到了二级IP地址的表示,不过大家要注意,最后面用“/”斜线分隔,在其后写上了网络前缀所占的位数,这样就不需要告知路由器地址掩码,仅需要通过网络前缀所占的位数就可以得到地址掩码,为了统一,CIDR中的地址掩码依然称为子网掩码。
CIDR计算
CIDR表示法给出任何一个IP地址,就相当于给出了一个CIDR地址块,这是由连续的IP地址组成的,所以CIDR表示法构成了超网,实现了路由聚合,即从一个IP地址就可以得知一个CIDR地址块。
例如:已知一个IP地址是:128.14.35.7/20
转换成二进制 128.14.35.7/20 = 10000000 00001110 00100011 00000111
即前20位是网络前缀,后12位是主机号,那么我们通过令主机号分别为全0和全1就可以得到一个CIDR地址块的最小地址和最大地址,即
最小地址是:128.14.32.0 = 10000000 00001110 00100000 00000000
最大地址是:128.14.47.255 = 10000000 00001110 00101111 11111111
子网掩码是:255.255.240.0 = 11111111 11111111 11110000 00000000
因此就可以看出来,这个CIDR地址块可以指派(47-32+1)*256=4096个地址,这里没有把全0和全1除外。
CIDR子网划分
在CIDR表示法中也可以进行进一步的子网划分。
例如:将128.14.35.0/20划分四个子网
转换成二进制 128.14.35.0/20 = 10000000 00001110 00100011 00000000
从主机位借走两位:
10000000 00001110 00100011 00000000 = 128.14.35.0/22
10000000 00001110 00100111 00000000 = 128.14.39.0/22
10000000 00001110 00101011 00000000 = 128.14.43.0/22
10000000 00001110 00101111 00000000 = 128.14.47.0/22
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)