前言
在因特网中,计算机与计算机之间的通信都是通过网络来完成的,那么他们直接是如何完成通信的呢?大多数人都知道,计算机通信使用的是当前最流行的Internet分组交换传输协议,即TCP/IP的协议簇或者它的的变种。
在使用TCP/IP进行通信的时候,我们经常会使用到网段和子网掩码,子网掩码用来区分IP地址的网络地址和主机地址,相同网络号地址的IP发包情况是不同的。同一个网络发包可以通过相关的协议把数据包直接发送到目标主机,而不同网络的则会通过路由器发包。划分一个合适的子网是重要的,过少的主机数目可能无法满足你的要求,而过多的主机数目无疑会导致局域网访问量过大,频繁,会影响通信效率。
IP网段
通常IP网段分为四种:
- A类IP段
0.0.0.0
到127.255.255.255
即首位为‘0
’的IP地址。 - B类IP段
128.0.0.0
到191.255.255.255
即首位为‘10
’的IP地址。 - C类IP段
192.0.0.0
到223.255.255.255
即首位为‘110
’的IP地址。 - D类IP段
224.0.0.0
到239.255.255.255
即首位为‘1110
’的IP地址。
一个A类的默认子网掩码是 255.0.0.0 ,即一个子网最多可以容纳1677万多台电脑,B类是 255.255.0.0,默认最多可以容纳6万台电脑,C类是255.255.255.0,默认最多可以容纳254台电脑。
如何分辨IP的网络和主机号,我们先来看一个IP
的例子,192.168.0.1/24
,这个IP的网络号和主机号是多少,可以容纳的主机数目怎么计算,接下来我们一起来看一下。
子网掩码计算
通过IP地址(192.168.0.1
)换算成二进制为11000000.10101000.00000000.00000001
,24表示子网掩码为24位,即二进制为11111111.11111111.11111100.00000000
的数字。
网络号通过IP地址与子网掩码的按位与可以得到11000000.10101000.00000000.00000000
,即192.168.0.0
,显然,IP地址的主机号为00000001
,那它可以容纳的主机数目是多少呢?这里有个简便的方法计算,即看子网掩码0
的个数,这里是10
,即可以容纳的主机数目是2的10次方,也就是最多可以容纳1024
台主机。
实际运用
假设现在公司有 530 台电脑,需要组成一个对等局域网,该如何设置子网掩码和 IP 地址?
首先我们用的是一个 B 段的 IP 地址,A 段 IP 地址大多肯定不合适,而 C 段太少(差不多只有只有 254
台),不过有 B 段默认的子网掩码是 255.255.0.0
,可以容纳的电脑大约有 6 万台,我们用肯定不合适,根据前面的技巧知道,能容纳最大主机数和子网掩码的 0 的个数有关,所以我们很自然想到子网掩码应该有10个0,因为正好 512 小于 520, 1024大于530,所以我们应该选择子网掩码为 11111111.11111111.11111100.00000000
,也就是 255.255.252.0
。
假设我们拿到的一个 B 类 137.137.x.x
的网段,这样,IP 的已经是确定的,关键是要确定第三段,只要网络标识相同就可以了。我们先来确定网络号。
255.255.252.0 11111111.11111111.11111100.00000000
137.137.x.x 10001001.10001001.??????.**
网络标识 10111100.10111100.??????00.00000000
这里的?
是我们可以直接确定的,就把?
全置为0
吧,所以我们的IP就是 10001001.10001001.000000**.********
,也就是说这样的IP选址可以满足我们的需求,再看我们的IP地址的第四段,可以容纳的最大主机数是 254,因为全为 0 和全为 1 的编码有特殊的作用,由530/254=2.086知第三段可以取三个数字,即 00,01,10,这样我们选择的IP地址的范围就是137.137.0.x到137.137.2.y。第三段表示的是主机号,这一段随便你取什么都行,只要在 1~254 的范围内就OK了。
总结
子网掩码主要是用来计算IP地址所属的网络地址和主机地址,一个分配优良的IP地址可以提高我们的局域网工作效率,同时子网掩码还可以用来减少IP地址的衰竭,因为它可以用来构建所属自组织的子网,这样可以大大减少IP地址的分配量,在 21 世纪的今天,明白子网掩码以及 TCP/IP 等底层工作是及其重要的,是每个开发者都应该知道的东西。