2024-10-06 19:34:16
,某些文章具有时效性,若有错误或已失效,请联系星雨站长!首先我们先来看一下十进制和二进制之间的转换!
进制转换
十进制转二进制
方法:除 2 取余,直到商为 0,然后将余数倒序排列,如果不足 8 位时前面补 0
下面以十进制数201
为例,将其转换为二进制
201 / 2 = 100 余 1
100 / 2 = 50 余 0
50 / 2 = 25 余 0
25 / 2 = 12 余 1
12 / 2 = 6 余 0
6 / 2 = 3 余 0
3 / 2 = 1 余 1
1 / 2 = 0 余 1
最后将余数倒序排列,得到二进制数 => 11001001
再来一个十进制数50
为例,将其转换为二进制
50 / 2 = 25 余 0
25 / 2 = 12 余 1
12 / 2 = 6 余 0
6 / 2 = 3 余 0
3 / 2 = 1 余 1
1 / 2 = 0 余 1
1 / 2 = 0 余 1
最后将余数倒序排列,得到二进制数 => 110010
但此时得到的二进制数不足8位,所以需要在前面补0 => 00110010
2⁰ | 2¹ | 2² | 2³ | 2⁴ | 2⁵ | 2⁶ | 2⁷ | |
---|---|---|---|---|---|---|---|---|
结果 | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 |
方法:从右往左依次用二进制位上的数字 m 乘以 2 的 n 次幂进行求和,n 从 0 开始,每向左一位,n 加 1。即 ∑m∗2n
下面以二进制数01110010为例,将其转换为十进制
0 ∗ 2⁰ = 0
1 ∗ 2¹ = 2
0 ∗ 2² = 0
0 ∗ 2³ = 0
1 ∗ 2⁴ = 16
1 ∗ 2⁵ = 32
1 ∗ 2⁶ = 64
最左边的二进制位数字m
因为是0
所以没有计算的意义,可以省略
最后对每一位大于0
的计算结果进行求和 2+16+32+64=114
所得结果就是十进制数114
IP 地址
IP 地址可以分为IPv4
和IPv6
两种,目前被使用最多的仍然是IPv4
地址
IPv4地址实际上是一个4个字节的二进制串,每个字节8位,总共32位。但为了提高可读性,通常用点进十分制(W.X.Y.Z)的表现形式来表达IPv4地址。即每个字节之间使用.符号分隔开,并且每个字节都用取值范围在0~255之间的十进制整数来表示。例如我们日常生活所见到的192.168.1.1,它的二进制表示为11000000.10101000.00000001.00000001
二级 IP 地址
我在网上搜了很多资料和视频,全都是一上来就给你套用子网掩码概念来讲 IP 地址的计算,完全不提早期的 IP 地址划分,导致我看了半天还是云里雾里,所以这里我先简单介绍一下早期 IP 地址的划分,然后再来讲解套用子网掩码概念的 ip 地址计算方式
⚡ IP地址=网络号+主机号在早期没有子网划分技术的时候,A、B、C类IP地址是由网络号和主机号两部分组成。这个时期可以根据IP地址中的第一个字节大小来判断它属于哪一类IP地址,从而确定它的网络号和主机号分别是多少位。在IP地址的32位中,前面一些连续位称为网络号,用于表示该设备属于哪个网络(类似身份证的前6位地区号),后面的其余位称为主机号(类似身份证的后12位),用于在该网络中唯一标识一台主机
第一字节范围 | 网络号 | 最大网络地址数 | 主机号 | 最大主机地址数 | 私有地址范围 | 网络规模 | |
---|---|---|---|---|---|---|---|
A 类 | 1~126 | 7 位 | 27−2=126 | 24 位 | 224−2=16777214 | 10.0.0.0~10.255.255.255 | 大型网络 |
B 类 | 128~191 | 14 位 | 214−2=16382 | 16 位 | 216−2=65534 | 172.16.0.0~172.31.255.255 | 中型网络 |
C 类 | 192~223 | 21 位 | 221−2=2097150 | 8 位 | 28−2=254 | 192.168.0.0~192.168.255.255 | 小型网络 |
主机地址
除开网络地址和广播地址后,能够分配给网络设备使用的 IP 地址,称为主机地址
网络地址
主机号全部为0
的 IP 地址,称为网络地址
看下面三个例子
-
10.1.1.2
,首先看第一个字节10
得知它是一个 A 类地址,那么便可知道它的主机号是后三个字节,则它的网络地址是10.0.0.0
=>00001010.00000000.00000000.00000000
-
172.16.10.2
,首先看第一个字节172
得知它是一个 B 类地址,那么便可知道它的主机号是后两个字节,则它的网络地址是172.16.0.0
=>10101100.00010000.00000000.00000000
-
192.168.100.10
,首先看第一个字节192
得知它是一个 C 类地址,那么便可知道它的主机号是最后一个字节,则它的网络地址是192.168.100.0
=>11000000.10101000.01100100.00000000
广播地址
主机号全部为1
的 IP 地址,称为广播地址
看下面三个例子
-
10.1.1.2
,首先看第一个字节10
得知它是一个 A 类地址,那么便可知道它的主机号是后三个字节,则它的广播地址是10.255.255.255
=>00001010.11111111.11111111.11111111
-
172.16.10.2
,首先看第一个字节172
得知它是一个 B 类地址,那么便可知道它的主机号是后两个字节,则它的广播地址是172.16.255.255
=>10101100.00010000.11111111.11111111
-
192.168.100.10
,首先看第一个字节192
得知它是一个 C 类地址,那么便可知道它的主机号是最后一个字节,则它的广播地址是192.168.100.255
=>11000000.10101000.01100100.11111111
子网掩码是用来进一步划分网络号和主机号的,子网掩码不能单独存在,他必须结合 IP 地址一起使用。子网掩码属于三级 IP 地址
⚡ IP地址=网络号+子网号+主机号
在子网划分技术出现后,IP地址变成了由 网络号、子网号和主机号 三部分组成。其中子网号和主机号是由二级IP地址中的主机号划分得来
子网划分可以在原有主机号中借出一些位数作为子网号,并将这些子网号加入到原有的网络号中以扩展网络号,从而将每类的IP网络进一步分成更小的网络
n
位全是1
代表网络号,右边n~32
位全是0
代表主机号
在进行子网划分之后,子网掩码不再是默认的,此时可以根据 IP 地址和子网掩码进行以下计算
以195.169.20.50/27
为例,这里的/27
表示该 IP 地址的前27
位为网络号,那么剩余的后5
位便是主机号。这种表示法基于 CIDR(无类别域间路由选择),用于标识网络地址和主机地址的划分
计算子网掩码
⚡ 子网掩码
①根据CIDR表示法,将子网掩码转换为二进制数
11111111.11111111.11111111.11100000
②将得到的二进制数转为十进制即为子网掩码
255.255.255.224
计算子网号
⚡ 子网号
①通过观察此IP地址的第一字节可知,此IP是一个C类地址,那么它的主机号便在第四个字节
②将此IP地址转换为二进制数 11000011.10101001.00010100.00110010
③根据CIDR表示法可知,此IP地址有 5 位主机号,也就是说它从原先的 8 位主机号中借走了前 3 位作为子网号,即第四字节中的前三位 001
④那么在这段子网中, 00100000 便是子网地址,即子网号为 0.0.0.32
计算主机号
⚡ 主机号
①通过观察此IP地址的第一字节可知,此IP是一个C类地址,那么它的主机号便在第四个字节
②将此IP地址转换为二进制数 11000011.10101001.00010100.00110010
③根据CIDR表示法可知,此IP地址有 5 位主机号,即第四字节中的后五位 10010
④那么在这段子网中, 00010010 便是主机地址,即主机号为 0.0.0.18
计算网络地址
⚡ 网络地址=IP地址 & 子网掩码
①将IP地址和子网掩码转换为二进制数
- 255.255.255.224 => 11111111.11111111.11111111.11100000
- 195.169.20.50 => 11000011.10101001.00010100.00110010
②将二者的二进制数进行按位与运算,即两边同位为 1 才是 1 ,否则为 0
- 11111111.11111111.11111111.11100000 & 11000011.10101001.00010100.00110010
- 得到 11000011.10101001.00010100.00100000
③将第二步计算所得的二进制结果转为十进制即为网络地址
- 11000011.10101001.00010100.00100000 => 195.169.20.32
计算广播地址
⚡ 广播地址
方法一:广播地址=IP地址 | (~子网掩码)
①将IP地址和子网掩码转换为二进制数
- 255.255.255.224 => 11111111.11111111.11111111.11100000
- 195.169.20.50 => 11000011.10101001.00010100.00110010
②将子网掩码的二进制数按位取反,即 1 变 0 , 0 变 1
- 得到 0000000.00000000.00000000.00011111
③将取反后的子网掩码和IP地址进行按位或运算,即两边同位遇 1 变 1 ,否则为 0
- 0000000.00000000.00000000.00011111 | 11000011.10101001.00010100.00110010
- 得到 11000011.10101001.00010100.00111111
④将第三步计算所得的二进制结果转为十进制即为广播地址
- 11000011.10101001.00010100.00111111 => 195.169.20.63
方法二:广播地址=将网络地址的主机号部分全部变为 1
①通过上面的计算网络地址可以知道,我们所需的网络地址的二进制为
- 11000011.10101001.00010100.00100000
②将二进制网络地址的主机号部分全部变为 1
- 11000011.10101001.00010100.00100000 => 11000011.10101001.00010100.00111111
③将第二步计算所得的二进制结果转为十进制即为广播地址
- 11000011.10101001.00010100.00111111 => 195.169.20.63
计算可用 IP 地址范围
⚡ 可用IP地址范围=网络地址+1 ~ 广播地址-1
①通过上面的计算网络地址可以知道,我们所需的网络地址为 195.169.20.32
②通过上面的计算广播地址可以知道,我们所需的广播地址为 195.169.20.63
③掐头去尾即可得到可用的IP地址范围为 195.169.20.33 ~ 195.169.20.62
- 195.169.20.32 + 1 => 195.169.20.33
- 195.169.20.63 - 1 => 195.169.20.62
计算主机数量
⚡ 主机数量
方法一:主机数量= 2主机号位数 − 2
①根据CIDR表示法可知,当前IP地址有5位主机号
②套用公式可得:25−2=30 即共有30个主机地址(减2是因为主机不包括网络地址和广播地址)
方法二:主机数量=256 - 掩码值 - 2
①通过上面的计算子网掩码可以知道,此IP地址的子网掩码为255.255.255.224
②套用公式可得:256−224−2=30 即共有30个主机地址(减2是因为主机不包括网络地址和广播地址)