计算机网络—[1]P,子网掩码
# 网关
标签(空格分隔): 交换机 路由器 IP 子网掩码
---
## 网关定义
> * 一个网络连接到另一个网络的“关口”,实质上是一个网络通向其他网络的IP地址,
> * 这里只讲TCP/IP协议下的网关
## IP地址
> IP地址由两部分组成,即网络号(Netgwork ID)和主机号(Host ID),网络号标识的是Internet上的一个子网,而主机号标识的是子网中的某台主机。网际地址分解成两个域后,带来了一个重要的优点:IP数据包从网际上的一个网络到达另一个网络时,选择路径可以基于网络而不是主机。在大型的网际中,这一点优势特别明显,因为路由表中只存储网络信息而不是主机信息,这样可以大大简化路由表。
* IP地址根据网络号和主机号的数量而分为A、B、C三类:
* * A类IP地址:用7位(bit)来标识网络号,24位标识主机号,最前面一位为"0",即A类地址的第一段取值介于1~126之间。A类地址通常为大型网络而提供,全世界总共只有126个只可能的A类网络,每个A类网络最多可以连接16777214台主机。
* * B类IP地址:用14位来标识网络号,16位标识主机号,前面两位是"10"。B类地址的第一段取值介于128~191之间,第一段和第二段合在一起表示网络号。B类地址适用于中等规模的网络,全世界大约有16000个B类网络,每个B类网络最多可以连接65534台主机。
* * C类IP地址:用21位来标识网络号,8位标识主机号,前面三位是"110"。C类地址的第一段取值介于192~223之间,第一段、第二段、第三段合在一起表示网络号。最后一段标识网络上的主机号。C类地址适用于校园网等小型网络,每个C类网络最多可以有254台主机。
> IP地址是以网络号和主机号来标示网络上的主机的,只有在一个网络号下的计算机之间才能"直接"互通,不同网络号的计算机要通过网关(Gateway)才能互通。但这样的划分在某些情况下显得并十分不灵活。为此IP网络还允许划分成更小的网络,称为子网(Subnet),这样就产生了子网掩码。子网掩码的作用就是用来判断任意两个IP地址是否属于同一子网络,这时只有在同一子网的计算机才能"直接"互通。
## 先来看看什么叫子网掩码
### 子网掩码
> 子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩.子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
> 子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
* 对于A类地址来说,默认的子网掩码是255.0.0.0;
* 对于B类地址来说,默认的子网掩码是255.255.0.0;
* 对于C类地址来说,默认的子网掩码是255.255.255.0。
利用子网掩码可以把大的网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。
> 要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。
> >前面讲到IP地址分网络号和主机号,要将一个网络划分为多个子网,因此网络号将要占用原来的主机位,如对于一个C类地址,它用21位来标识网络号,要将其划分为2个子网则需要占用1位原来的主机标识位。此时网络号位变为22位为主机标示变为7位。同理借用2个主机位则可以将一个C类网络划分为4个子网……那计算机是怎样才知道这一网络是否划分了子网呢?这就可以从子网掩码中看出。子网掩码和IP地址一样有32bit,确定子网掩码的方法是其与IP地址中标识网络号的所有对应位都用"1",而与主机号对应的位都是"0"。如分为2个子网的C类IP地址用22位来标识网络号,则其子网掩码为:11111111 11111111 11111111 10000000即255.255.255.128。于是我们可以知道,A类地址的缺省子网掩码为255.0.0.0,B类为255.255.0.0,C类为255.255.255.0。下表是C类地址子网划分及相关子网掩码:
子网位数 子网掩码 主机数 可用主机数
> > 1 255.255.255.128 128 126
2 255.255.255.192 64 62
3 255.255.255.224 32 30
4 255.255.255.240 16 14
5 255.255.255.248 8 6
6 255.255.255.252 4 2
>你可能注意到上表分了主机数和可用主机数两项,这是为什么呢?因为但当地址的所有主机位都为"0"时,这一地址为线路(或子网)地址,而当所有主机位都为"1"时为广播地址。
> >同时我们还可以使用可变长掩码(VLSM)就是指一个网络可以用不同的掩码进行配置。这样做的目的是为了使把一个网络划分成多个子网更加方便。在没有VLSM的情况下,一个网络只能使用一种子网掩码,这就限制了在给定的子网数目条件下主机的数目。例如你被分配了一个C类地址,网络号为192.168.10.0,而你现在需要将其划分为三个子网,其中一个子网有100台主机,其余的两个子网有50台主机。我们知道一个C类地址有254个可用地址,那么你如何选择子网掩码呢?从上表中我们发现,当我们在所有子网中都使用一个子网掩码时这一问题是无法解决的。此时VLSM就派上了用场,我们可以在100个主机的子网使用255.255.255.128这一掩码,它可以使用192.168.10.0到192.168.10.127这128个IP地址,其中可用主机号为126个。我们再把剩下的192.168.10.128到192.168.10.255这128个IP地址分成两个子网,子网掩码为255.255.255.192。其中一个子网的地址从192.168.10.128到192.168.10.191,另一子网的地址从192.168.10.192到192.168.10.255。子网掩码为255.255.255.192每个子网的可用主机地址都为62个,这样就达到了要求。可以看出合理使用子网掩码,可以使IP地址更加便于管理和控制
---
>假如某台主机的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地址,所以这种方法具有较 强的网络安全控制性能