一直以来都对子网掩码的认识不深,也没有过多的研究过,无奈并且可悲。今天看到了一片文章故转载到自己的Blog上,有时间研究一下。
在TCP/IP协议中,SUBNET MASKS(子网掩码)的作用是用来区分网络上的主机是否在同一网络取段内。在大型网络中,CLASS A的SUBNET MASKS为255.0.0.0, CLASS B的SUBNET MASKS为255.255.0.0,CLASS C的SUBNET MASKS为255.255.255.0。
假如某台主机的SUBNET MASKS为IP地址为202.119.115.78,它的SUBNET MASKS为255.255.255.0。将这两个数据作AND运算后,所得出的值中的非0的BYTE部分即为NETWORK ID 。运算步骤如下:
202.119.115.78的二进制值为:
11001010.01110111.01110011.01001110
255.255.255.0的二进制值为:
11111111.11111111.11111111.00000000
AND后的结果为:
11001010.01110111.01110011.00000000
转为二进制后即为:
202.119.115.0
它就是NETWORK ID,在IP地址中剩下的即为HOST ID,即为78,这样当有另一台主机 的IP 地址为202.119.115.83,它的SUBNET MASKS也是255.255.255.0,则其NETWORK ID 为202.119.115,HOST ID为83,因为这两台主机的NETWORK ID都是202.119.115,因此,这两台主机在同一网段内。
但是,在实际应用中,可能会有多个分布与各地的网络,而且,每个网络的主机数量并不很多,如果申请多个NETWORK ID,会造成IP资源的浪费,而且很不经济,如果我们在SUBNET MASKS上动一下手脚,可以在只申请一个NETWORK ID的基础上解决这个问题。
比如,我们有三个不同的子网,每个网络的HOST数量各为20、25和50,下面依次称为甲、乙和丙网,但只申请了一个NETWORK ID 就是202.119.115。首先我们把甲和乙网的SUBNET MASKS改为255.255.255.224,224的二进制为11100000,即它的SUBNET MASKS为:
11111111.11111111.11111111.11100000
这样,我们把HOST ID的高三位用来分割子网,这三位共有000、001、010、011、100、 101、110、111八种组合,除去000(代表本身)和111(代表广播),还有六个组合,也就是可提供六个子网,它们的IP地址分别为:(前三个字节还是202.119.115)
00100001~00111110 即33~62为第一个子网
01000001~01011110 即65~94为第二个子网
01100001~01111110 即97~126为第三个子网
10000001~10011110 即129~158为第四个子网
10100001~10111110 即161~190为第五个子网
11000001~11011110 即193~222为第六个子网
选用161~190段给甲网,193~222段给乙网,因为各个子网都支持30台主机,足以应付甲网和乙网20台和25台的需求。
再来看丙网,由于丙网有50台主机,按上述分割方法无法满足它的IP需求,我们 可以将它的SUBNET MASKS设为255.255.255.192, 由于192的二进制值为11000000,按上述方法,它可以划分为两个子网,IP地址为:
01000001~01111110 即65~126为第一个子网
10000001~10111110 即129~190为第二个子网
这样每个子网有62个IP可用,将65~126分配丙网,多个子网用一个NETWORK ID 即告实现。
如果将子网掩码设置过大,也就是说子网范围扩大。那么根据子网寻径规则,很可能发往和本地机不在同一子网内的目的机的数据,会因为错误的相与结果而认为是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃。数据不能正确到达目的机,导致网络传输错误。如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。因此,任意设置子网掩码是不对的,应该根据网络管理部门的规定进行设置。
随着IP地址资源的日趋枯竭,可供分配的IP地址越来越少,往往一个拥 有几百台计算机规模的网络只能得到区区几个IP地址,于是,许多人开始采用其他技术来扩展IP空间。
1.子网掩码设置
如果你所分配的IP地址仅能满足对主机的需求,但远不能满足你欲在局 域网中再建若干子网的需要,设置子网掩码就是你不得不采取的措施了。
子网掩码同样也以四个字节来表示,用来区分IP地址的网络号和主机号, 默认子网掩码如下表所示:
子网掩码(以十进制表示)
A类 255.0.0.0
B类 255.255.0.0
C类 255.255.255.0
当IP地址与子网掩码相与时,非零部分即被确认为网络号。
假如我们将子网掩码中第四字节最高位起的某些位由0修改成1,使本来应当属于主机号的 部分改变成为网络号,这样就实现了我们划分子网的目的。例如你得到了一个C类网络地址198.189.98,按常规,你所有的设备从198.189.98.0到198.189.98.254都将处于同一网络之中,但如果你需要将自己 的网络划分成5个子网以便管理,那就必须修改子网掩码255.255.255.0,将此 掩码的第四个字节中的前三位再拿出来充当子网掩码,即将第四字节的00000000 修改成11100000(十进制数为224),故应当将子网掩码设置为255.255.255.224。这样我们有001、010、011、100、101、110六种方式与之相与得到不同的网络号(除去000和111作为保留地址不能使用),各子网的前三个字节仍然是198.189.98。可以知道:如子网掩码的位数越多,能划分的子网数也就越多,但 是每个子网的主机数就会越少。子网掩码的划分设置也有一个缺点:划分的子网越多,损失的IP地址也会越多。因为每个子网都会保留全0或全1的两个地址而不能使用。
2.动态IP地址设置
DHCP(DynamicHostConfigurationProtocol)动态主机配置协议是一种 多个工作站共享IP地址的方法。当我们分配到的IP地址数目远小于一个网络工作站的数目时,如果为每个设备都分配一个固定的IP地址,则显然有一部分计 算机将不能连入网络。DHCP为我们提供了一个较好的解决方法,其前提条件是其中每一个设备都不是随时都需要连接入网,并且同一时刻上网的设备不会很多。动态IP地址,顾名思义就是每一个设备所取得的IP地址是非固定的,即计算机连入网络时自动申请取得一个合法的IP地址,断开网络时自动归还,以便其他计算机使用。这样,我们可以用较少的IP地址构建较大的网络,也可以 增加网络工作站的可移性,如果一台主机从一个子网移动到另一个子网时,由于网络号的不同将修改该计算机的IP地址,否则无法与其他主机通信,而如果我 们采用动态IP地址,就会减少网络管理的复杂性。现在DHCP已非常流行,所支持的软件很多,且可以运行于不同机器和平台。目前拨号上Internet的用户就基本上采用这种方法。
3.非路由地址
在IP地址范围内,IANA(InternetAssignedNumbersAuthority)将一部 分地址保留作为私人IP地址空间,专门用于内部局域网使用,这些地址如下表:
类 IP地址范围 网络数
A 10.0.0.0---10.255.255.255 1
B 172.16.0.0---172.31.255.255 16
C 192.168.0.0---192.168.255.255 255
这些地址是不会被Internet分配的,因此它们在Internet上也从来不会被路由,虽然它们不能直接和Internet网连接,但仍旧可以被用来和Internet通讯,我们可以根据需要来选用适当的地址类,在内部局域网中大胆地将这些地址当作公用IP地址一样地使用。在Internet上,那些不需要与Internet通讯的设备,如打印机、可管理集线器等也可以使用这些地址,以节省IP地址资源。
4.代理服务器
代理服务器其实是Internet上的一台主机设备,它有一个固定的IP地址,当你需要上Internet时,就向该服务器提出请求,代理服务器接受请求并为你 建立连接,然后将你所需要的服务返回信息通知你,所有的数据信息和通讯处理 都是通过代理服务器的IP地址来完成。这种情况下,我们局域网内部的主机就应使用非路由地址,这样,即能保证内部主机之间的通讯,又能拒绝外来网络的 直接访问请求。
代理服务器具有以下两个优点:一是如果你请求的数据已被同一网段上的其他人请求过了,那么大多数代理服务器都能从Cache中调用这些数据直接传给你,避免重新连接的时间和带宽;二是代理服务器可以保护你的内部网络不受入侵,也可以设置对某些主机的访问能力进行必要限制,这实际上起着代理防火墙 的作用。
支持代理服务器的软件也非常多,WinGate、MsProxy等都是非常流行的代理服务器软件。在中国,代理服务器的使用也越来越广泛,中国公众多媒体通讯网(169)其实就是一个巨大的使用代理服务器的例子。
5.地址翻译
所谓地址翻译实际上是路由器中的一个数据包处理过程。当数据包通过路由器时,地址翻译过程将其中的内部私有IP地址解析出来,将其翻译为一个合法的IP地址。地址翻译过程可以按预先定义好的地址表一一映射翻译,也可以将多个内部私有地址翻译为一个外部合法IP地址。由于网络内每个设备都有一个内部稳定的IP地址,所以这种方法具有较 强的网络安全控制性能。