子网划分和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
posted @ 2025-04-22 18:38  夏凉浮生  阅读(159)  评论(0)    收藏  举报