子网划分和IP计算
ip协议可进行定制和优化,通过子网划分,可以满足不同网络对ip的需求,实现网络的层次化,更简化网络,节省ip地址。默认子网掩码可以进一步划分,称之为可变长子网掩码“VLSM”
使用A、B、C类网络,默认的子网掩码会有地址范围过大或过小的问题,比如8台机器配置a类地址,但a类地址的主机位可以是千万个,给8个主机使用是在有点大材小用,所以可以通过子网划分方式,让A类地址的主机位只有8个
子网掩码介绍
子网掩码是一个32位的二进制数,用于ip的网络段和主机段。不进行子网划分,按照a、b、c类型网络划分的话,一组的子网掩码是255,是八个二进制1转成十进制的值
| 网络类型 | 子网掩码的二进制显示 |
|---|---|
| A类网络,8位掩码掩码 | 11111111 00000000 00000000 00000000 |
| B类网络,16位子网掩码 | 11111111 11111111 00000000 00000000 |
| C类网络,24位子网掩码 | 11111111 11111111 11111111 00000000 |
子网掩码会和ip进行二进制的与运算,计算出网络段和主机端,并且可以得到主机端最多的主机数。这里1代表网络段,0代表主机端
与运算的规则是1&1=1 1&0=0,除了1&1其它都是0,比如192.168.1.1/24,这个ip是24位掩码,计算如下
ip: 11000000 10101000 00000001 00000001
子网掩码: 11111111 11111111 11111111 00000000
----------------------------------------------------
与运算得出 11000000 10101000 00000001 00000000 ->转成十进制 192.168.1.0 网络段
主机段是八个二进制位八个1表示十进制255 得出该网络段可以有255台主机,但十进制255也就是八个1有特殊作用要-1,真正可以配置到主机的ip是254个
主机段也和网络段差不多,同样使用二进制与运算,但是使用反码,将子网掩码的1变成0 0变成1
ip: 11000000 10101000 00000001 00000001
子网掩码: 00000000 00000000 00000000 11111111
----------------------------------------------------
与运算得出 00000000 00000000 00000000 00000001 转成十进制 0.0.0.1 该ip在主机段中的第1个位置
好了让我们实践下
201.222.200.111/18计算主机数和子网掩码
先得到ip和掩码的二进制值
11001001 11011110 11001000 01101111 IP的二进制
11111111 11111111 11000000 00000000 掩码的二进制 转成十进制=255.255.192.0
掩码总共32位,网络段18位,主机位可以计算出是14位,也就是11111111111111,转换成十进制是16384,有人可以计算得出是16383,其实不是的,
- 最小值:
00000000000000(二进制) = 0(十进制) - 最大值:
11111111111111(二进制) = 16383(十进制)
在这里0也算一个值,所以14 位二进制数可以表示 0 ~ 16383,共16384个值。
其中有两个值是不可用的,就是上面的最小值和最大值,最小值表示的是网络段,最大值是广播地址,所以有16382个主机位可以使用
可用的主机位是00000000000001到11111111111110,这里加上网络段组成完整ip
11001001 11011110 11000000 00000001 -> 第一可用ip: 201.222.192.1
11001001 11011110 11111111 11111110 -> 最后可用ip: 201.222.255.254
总结
- 可用ip:16382
- 掩码:255.255.192.0
- 网络:201.222.192.0
- ip可用范围:201.222.192.1-201.222.254.254
- 广播地址:201.222.255.255
A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?两者能否通信?
是否在同一个网段可以比较网络地址和子网掩码进行判断,将两者的ip和掩码转换成二进制
A----------------------------------
00001010 00000000 00000001 00000001 IP
11111111 11111111 00000000 00000000 掩码 转成十进制-> 255.255.0.0
B----------------------------------
00001010 00000000 00000010 00000010 IP
11111111 11111111 11111111 00000000 掩码 转成十进制-> 255.255.255.0
先获得两个ip的网络段
A----------------------------------
00001010 00000000 00000001 00000001
11111111 11111111 00000000 00000000
-----------------------------------
00001010 00000000 00000000 00000000 网络段转十进制-> 10.0.0.0 A的网络段
B----------------------------------
00001010 00000000 00000010 00000010
11111111 11111111 11111111 00000000
-----------------------------------
00001010 00000000 00000010 00000000 网络段转十进制-> 10.0.2.0 B的网络段
A进行通信时将自己的子网掩码与B的IP地址进行与运算
00001010 00000000 00000010 00000010 B的IP
11111111 11111111 00000000 00000000 A的掩码
-----------------------------------
00001010 00000000 00000000 00000000 转换成十进制-> 10.0.0.0
A计算出B网络段和A的网络段相等,认为可以通信,A ping B的话,将包发送到B上,这时候B要返回包,B会将自己的掩码与A的IP地址进行与运算
00001010 00000000 00000001 00000001 A的IP
11111111 11111111 11111111 00000000 B的掩码
-----------------------------------
00001010 00000000 00000001 00000000 网络段转换成十进制-> 10.0.1.0
B计算出A的网络段和B的网络段不相等,认为不可通信,不会相应A的ping包
总结
- A和B不再同一个网段
- A和B不能进行通信
抓包演示 A ping B的ip 在B的机器上抓icmp包
root@rocky:/home/rocky# tcpdump -i eth1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
16:36:19.724465 IP 10.0.1.1 > 10.0.2.2: ICMP echo request, id 3258, seq 1, length 64
16:36:20.731351 IP 10.0.1.1 > 10.0.2.2: ICMP echo request, id 3258, seq 2, length 64
16:36:21.755307 IP 10.0.1.1 > 10.0.2.2: ICMP echo request, id 3258, seq 3, length 64
16:36:22.782480 IP 10.0.1.1 > 10.0.2.2: ICMP echo request, id 3258, seq 4, length 64
16:36:23.803302 IP 10.0.1.1 > 10.0.2.2: ICMP echo request, id 3258, seq 5, length 64
16:36:24.832157 IP 10.0.1.1 > 10.0.2.2: ICMP echo request, id 3258, seq 6, length 64
可以看到A确实将ping包发送到了B机器上,但是B认为网络段不同没回应,所以上面都是request请求包
如何将10.0.0.0/8划分32个子网?求每个子网的掩码和主机数
将10.0.0.0/8转换位二进制,这里的10.0.0.0是网络段,不是ip
00001010 00000000 00000000 00000000 网络段
11111111 00000000 00000000 00000000 掩码转成十进制 255.0.0.0
划分32个子网,所以要在原先掩码的情况下,计算多少个二进制等于32,原先的掩码二进制位加上等于十进制32的二进制位
1=2
11=4
111=8
1111=16
11111=32 或者直接2^5=32
原先8位加上5位二进制的掩码等于13位子网掩码即可划分出32个子网
11111111 11111000 00000000 00000000 转成十进制 255.248.0.0 即 10.0.0.0/13
主机位还剩19位,也就是111111111111111111转换成十进制是524787,然后加上0这个表示网络段的值总共是524288,减去网络段和广播地址,每个子网可用主机位是524286
子网掩码是255.248.0.0,248的二进制是11111000,最低有效子网位是第13位(即第二组的第五位),该位的十进制位2(8-5)=23=8,所以ip 的第二组以8位步长递增,计算得出所有子网信息如下:
| 子网序号 | 网络段 | 可用IP | 广播地址 |
|---|---|---|---|
| 0 | 10.0.0.0/13 | 10.0.0.1 - 10.7.255.254 | 10.7.255.255 |
| 1 | 10.8.0.0/13 | 10.8.0.1 - 10.15.255.254 | 10.15.255.255 |
| 2 | 10.16.0.0/13 | 10.16.0.1 - 10.23.255.254 | 10.23.255.255 |
| 3 | 10.24.0.0/13 | 10.24.0.1 - 10.31.255.254 | 10.31.255.255 |
| 4 | 10.32.0.0/13 | 10.32.0.1 - 10.39.255.254 | 10.39.255.255 |
| 5 | 10.40.0.0/13 | 10.40.0.1 - 10.47.255.254 | 10.47.255.255 |
| 6 | 10.48.0.0/13 | 10.48.0.1 - 10.55.255.254 | 10.55.255.255 |
| 7 | 10.56.0.0/13 | 10.56.0.1 - 10.63.255.254 | 10.63.255.255 |
| 8 | 10.64.0.0/13 | 10.64.0.1 - 10.71.255.254 | 10.71.255.255 |
| 9 | 10.72.0.0/13 | 10.72.0.1 - 10.79.255.254 | 10.79.255.255 |
| 10 | 10.80.0.0/13 | 10.80.0.1 - 10.87.255.254 | 10.87.255.255 |
| 11 | 10.88.0.0/13 | 10.88.0.1 - 10.95.255.254 | 10.95.255.255 |
| 12 | 10.96.0.0/13 | 10.96.0.1 - 10.103.255.254 | 10.103.255.255 |
| 13 | 10.104.0.0/13 | 10.104.0.1 - 10.111.255.254 | 10.111.255.255 |
| 14 | 10.112.0.0/13 | 10.112.0.1 - 10.119.255.254 | 10.119.255.255 |
| 15 | 10.120.0.0/13 | 10.120.0.1 - 10.127.255.254 | 10.127.255.255 |
| 16 | 10.128.0.0/13 | 10.128.0.1 - 10.135.255.254 | 10.135.255.255 |
| 17 | 10.136.0.0/13 | 10.136.0.1 - 10.143.255.254 | 10.143.255.255 |
| 18 | 10.144.0.0/13 | 10.144.0.1 - 10.151.255.254 | 10.151.255.255 |
| 19 | 10.152.0.0/13 | 10.152.0.1 - 10.159.255.254 | 10.159.255.255 |
| 20 | 10.160.0.0/13 | 10.160.0.1 - 10.167.255.254 | 10.167.255.255 |
| 21 | 10.168.0.0/13 | 10.168.0.1 - 10.175.255.254 | 10.175.255.255 |
| 22 | 10.176.0.0/13 | 10.176.0.1 - 10.183.255.254 | 10.183.255.255 |
| 23 | 10.184.0.0/13 | 10.184.0.1 - 10.191.255.254 | 10.191.255.255 |
| 24 | 10.192.0.0/13 | 10.192.0.1 - 10.199.255.254 | 10.199.255.255 |
| 25 | 10.200.0.0/13 | 10.200.0.1 - 10.207.255.254 | 10.207.255.255 |
| 26 | 10.208.0.0/13 | 10.208.0.1 - 10.215.255.254 | 10.215.255.255 |
| 27 | 10.216.0.0/13 | 10.216.0.1 - 10.223.255.254 | 10.223.255.255 |
| 28 | 10.224.0.0/13 | 10.224.0.1 - 10.231.255.254 | 10.231.255.255 |
| 29 | 10.232.0.0/13 | 10.232.0.1 - 10.239.255.254 | 10.239.255.255 |
| 30 | 10.240.0.0/13 | 10.240.0.1 - 10.247.255.254 | 10.247.255.255 |
| 31 | 10.248.0.0/13 | 10.248.0.1 - 10.255.255.254 | 10.255.255.255 |

浙公网安备 33010602011771号