一、子网划分
子网的划分,实际上就是设计子网掩码的过程。
子网掩码主要是用来区分 IP 地址中的网络 ID 和主机 ID,它用来屏蔽 IP 地址的一部分,从 IP 地址中分离出网络 ID 和主机 ID.子网掩码是由 4 个十进制数组成的数值中间用"."分隔,如 255.255.255.0。若将它写成二进制的形式为:11111111.11111111.11111111.00000000,其中为"1"的位分离出网络 ID,为"0"的位分离出主机 ID,也就是通过将 IP 地址与子网掩码进行"与"逻辑操作,得出网络号。
例如,假设 IP地址为 192.160.4.1,子网掩码为 255.255.255.0,则网络 ID 为 192.160.4.0,主机 ID为0.0.0.1。
计算机网络ID的不同,则说明他们不在同一个物理子网内,需通过路由器转发才能进行数据交换。
每类地址具有默认的子网掩码:对于 A 类为 255.0.0.0,对于B类为 255.255.0.0,对于 C 类为 255.255.255.0。
除了使用上述的表示方法之外,还有使用子网掩码中"1"的位数来表示的。
在默认情况下,A 类地址为 8 位,B 类地址为 16 位,C 类地址为24位。
例如,A类的某个地址为 12.10.10.3/8,这里的最后一个"8"说明该地址的子网掩码为 8 位,而 199.42.26.0/28 表示网络 199.42.26.0 的子网掩码位数有 28 位。
如果希望在一个网络中建立子网,就要在这个默认的子网掩码中加入一些位,它减少了用于主机地址的位数。
加入到掩码中的位数决定了可以配置的子网。
因而,在一个划分了子网的网络中,每个地址包含一个网络地址、一个子网位数和一个主机地址。
二、地址分类
1. 有类地址划分
- A 类 IP 段1.0.0.0 到 126.255.255.255 (0 段和 127 段不使用)
- B 类 IP 段128.0.0.0 到 191.255.255.255
- C 类 IP 段192.0.0.0 到 223.255.255.255
2. 私网地址划分
现网中主要使用的私网地址:
- A 类:10.0.0.1--10.255.255.254
- B 类:172.16.0.0.1--172.31.255.254
- C 类:192.168.0.1--192.168.255.254
3. 同一网段
在这里,向大家说一下到底怎么样才算同一网段。
要想在同一网段,必需做到网络标识相同,那网络标识怎么算呢?
各类 IP 的网络标识算法都是不一样的。
- A 类的,只算第一段。
- B 类, 只算第一、二段。
- C 类,算第一、二、三段。
算法只要把 IP 和子网掩码的每位数 AND 就可以了。
AND 方法:0 和 1=0 和 0=0 和 1=1
如:And192.168.0.1,255.255.255.0,先转换为二进制,然后AND 每一位 IP11000000.10101000.00000000.00000001
子网掩码11111111.11111111.11111111.00000000
得出 AND 结果11000000.10101000.00000000.00000000
转换为十进制 192.168.0.0,这就是网络标识, 再将子网掩码反取,也就是00000000.00000000.00000000.11111111,与 IPAND得出结果 00000000.00000000.00000000.00000001,转换为 10 进 制,即 0.0.0.1,这 0.0.0.1 就是主机标识。要想在同一网段,必需做到网络标识一样。
我们再来看看这个改为默认子网掩码的 B 类 IP
如 IP:188.188.0.111,188.188.5.222,子网掩码都设为255.255.254.0,在同一网段吗?先将这些转换成二进制
- 188.188.0.11110111100.10111100.00000000.01101111
- 188.188.5.22210111100.10111100.00000101.11011110
- 255.255.254.011111111.11111111.11111110.00000000
分别 AND,得
- 10111100.10111100.00000000.00000000
- 10111100.10111100.00000100.00000000
网络标识不一样(看 255.255.254.0 转换成二进制后 1 的数位, 所以可以看到不一样),即不在同一网段。
判断是不是在同一网段,你会了吧,下面,我们来点实际的。
一个公司有 530 台电脑,组成一个对等局域网,子网掩码和 IP 设 多少最合适?
子网掩码不说了,前面算出结果来了11111111.11111111.11111100.00000000,也就是 255.255.252.0
4. B 类地址
选一个 B 类 IP 段,这里就选 188.188.x.x 吧。
这样,IP 的前两段确定的,关键是要确定第三段,只要网络标识 相同就可以了。我们先来确定网络号。(我们把子网掩码中的 1 和 IP 中的?对就起来,0 和*对应起来,如下:)
- 255.255.252.011111111.11111111.11111100.00000000
- 188.188.x.x10111100.10111100.??????**.********
网络标识10111100.10111100.??????00.00000000
由此可知,?处随便填(只能用 0 和 1 填,不一定是 0 和 1), 我们就用全填 0 吧,*处随便,这样呢,我们的 IP 就是10111100.10111100.000000**.********,一共有 530 台电脑,IP 的最后一段 1~254 可以分给 254 台计算机, 530/254=2.086,采用 进 1 法,得整数 3,这样,我们确定了 IP 的第三段要分成三个不同 的数字,也就是说,把 000000**中的**填三次数字,只能填 1 和 0, 而且每次的数字都不一样,至于填什么,就随我们便了,如 00000001,00000010,00000011,转换成十进制,分别是 1,2,3,这样,第三段也确定了,这样,就可以把 IP 分成 188.188.1.y,188.188.2.y,188.188.3.y,y 处随便填,只要在 1~254 范围之内,并且这 530 台 电脑每台和每台的 IP 不一样,就可以了。
有人也许会说,既然算法这么麻烦,干脆用 A 类 IP 和 A 类默认子 网掩码得了。
但我要告诉你的是,由于 A 类 IP 和 A 类默认子网掩码的主机数目过大,这样做无疑是大海捞针,如果同时局域网访问量过频 繁、过大,会影响效率的。
所以,最好设置符合自己的 IP 和子网掩码^_^
三、子网汇总
子网划分可以把 IP 地址进一步划分为更小的网络 。
想要把一个 IP 地址划分成更小的网络,就需要将主机位划到网络位也可以叫做借位或租位。
借用主机位的位数决定着将这个 IP 划分成多少个子网, 剩余的主机位位数决定着划分完后每个子网中的主机数(主机位全 "0"或全"1"都是不可用的,全"0"代表子网地址,全"1"代表广播地址)
例如把 192.168.1.0/24 这个网段分成四个子网
计算方法是:
- 2 的 x 次方=子网数 (x 代表从主机位借到的位数)
- 2 的 y 次方-2 =可用主机数(y 代表剩余的主机位位数)
通过上面的公式可以得出:
- 子网数=2²=4
- 主机数=2ⁿ-2=62
计算出子网数与主机数后,想要确定每个子网的起始地址与结束地址,也就是子网地址和广播地址.就非常简单了,可以这样做
前面已经算出每个子网的 IP 数为 64(注意是 IP 数,不是可用主机数)那么就可以确定相邻的两个子网的间隔是 64,初始的子网地址都是以"0"开始,那么下一个子网就是 0+64.依此类推, 就可以得到每个子网的起始地址了:
- 192.168.1.0/26
- 192.168.1.64/26
- 192.168.1.128/26
- 192.168.1.192/26
广播地址是用:
- 子网地址+间隔-1=广播地址
- 192.168.1.0~192.168.1.63(0+64-1)
- 192.168.1.64~192.168.1.127(64+64-1)
- 192.168.1.128~192.168.1.191(128+64-1)
- 192.168.1.192~192.168.1.255(192+64-1)
如何通过一个给定的地址算出其子网地址与广播地址,可以这样做, 假如给定的地址是 192.168.1.137/26,先把 IP 地址转换为 2 进制形 式,掩码为 26 位,就从左至右数 26 位,在第 26 位的后面划条线区 分开,线之后的全为 0,即是子网地址,全为1就是广播地址
子网汇总是将多个网段汇总成一个网段
例 如 要 把 172.16.1.0/24 、 172.16.4.0/24 、 172.16.5.0/24 、172.16.7.0/24、172.16.9.0/24、这五个网段汇总成一个,可以这样 做:
从这些 IP 中挑出一个最大的和一个最小的,然后将两个 IP 地址中不相同的两组数转化成 2 进制形式逐个进行比较,把相同的与不相同的 用竖线区分开
从不相同的比特位也就是竖线之后的所有比特位全部填充为 0,得到 的地址为汇总后的网段的网络地址,即为 172.16.0.0。
在没有汇总前,各 IP 的掩码都是 24 位的,汇总之后的掩码为20位,就是竖线之前的比特位就是掩码的位数。