2010年1月18日星期一

子网掩码

子网掩码 (subnet mask)又叫网络掩码, 地址掩码, 子网络遮罩, 它是一种用来指明一个 IP 地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码. 子网掩码不能单独存在, 它必须结合 IP 地址一起使用. 子网掩码只有一个作用, 就是将某个 IP 地址划分成网络地址和主机地址两部分.

IP 地址的结构


想理解什么是子网掩码, 就不能不了解 IP 地址的构成. 互联网是由许多小型网络构成的, 每个网络上都有许多主机, 这样便构成了一个有层次的结构. IP 地址在设计时就考虑到地址分配的层次特点, 将每个 IP 地址都分割成网络号和主机号两部分, 以便于 IP 地址的寻址操作.
IP 地址的网络号和主机号各是多少位呢?如果不指定, 就不知道哪些位是网络号, 哪些是主机号, 这就需要通过子网掩码来实现.
子网掩码的设定必须遵循一定的规则. 与 IP 地址相同, 子网掩码的长度也是 32 位, 左边是网络位, 用二进制数字 1表示; 右边是主机位, 用二进制数字 0 表示. 只有通过子网掩码, 才能表明一台主机所在的子网与其他子网的关系, 使网络正常工作.
子网掩码的术语是扩展的网络前缀码不是一个地址, 但是可以确定一个网络层地址哪一部分是网络号, 哪一部分是主机号, 1 的部分代表网络号, 掩码为 0 的部分代表主机号. 子网掩码的作用就是获取主机 IP 的网络地址信息, 用于区别主机通信不同情况, 由此选择不同路由. 其中:

  • A 类地址的默认子网掩码为 255.0.0.0

  • B 类地址的默认子网掩码为 255.255.0.0

  • C 类地址的默认子网掩码为: 255.255.255.0


子网和子网掩码的作用


子网的作用

使用子网是要解决只有一组 (A, B, C类) 地址但需要数个网络编码 (网络号) 的问题, 并不是解决 IP 地址不够用的问题, 因为使用子网反而能使用的 IP 地址会变少, 子网通常是使用在跨地域的网络互联之中,两者之间使用路由器连线,同时也上 Internet, 但只申请到一组C类 IP 地址, 过路由又需不同的网络,所以此时就必须使用到子网,当然二网络间也可以远程桥接 RemoteBridge 连接, 那便没有使用子网的问题.

子网掩码的作用

通过 IP 地址的二进制与子网掩码的二进制进行与运算, 确定某个设备的网络地址和主机号. 也就是说通过子网掩码分辨一个网络的网络部分和主机部分子网掩码一旦设置, 网络地址和主机地址就固定了.
子网一个最显著的特征就是具有子网掩码. 与 IP 地址相同, 子网掩码的长度也是 32 位, 也可以使用十进制的形式. 例如, 为二进制形式的子网掩码: 11111111111111111111111100000000, 采用十进制的形式为: 255.255.255.0.

子网掩码的概念


子网掩码是一个 32 位地址, 是与 IP 地址结合使用的一种技术. 它的主要作用有两个, 一是用于屏蔽 IP 地址的一部分以区别网络标识和主机标识, 并说明该 IP 地址是在局域网上, 还是在远程网上. 二是用于将一个大的 IP 网络划分为若干小的子网络.

确定子网掩码数


用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目. 在定义子网掩码前, 必须弄清楚本来使用的子网数和主机数目.
定义子网掩码的步骤为:

  • 1 确定哪些组地址归我们使用. 比如我们申请到的网络号为 210.73.a.b, 该网络地址为 C 类 IP 地址, 网络标识为 210.73.a, 主机标识为b.

  • 2 根据我们现在所需的子网数以及将来可能扩充到的子网数, 用宿主机的一些位来定义子网掩码. 比如我们现在需要 12 个子网, 将来可能需要 16 个. 用第四个字节的前四位确定子网掩码. 前四位都置为1 (即把第四字节的最后四位作为主e机位, 其实在这里有个简单的规律, 非网络位的前几位置1原网络就被分为2的几次方个网络, 这样原来网络就被分成了2的4次方16个子网) , 即第四个字节为 11110000, 这个数我们暂且称作新的二进制子网掩码.

  • 3 把对应初始网络的各个位都置为1, 即前三个字节都置为1, 第四个字节低四位置为0, 则子网掩码的间断二进制形式为: 11111111.11111111.11111111.11110000

  • 4 把这个数转化为间断十进制形式为: 255.255.255.240这个数为该网络的子网掩码.



A 利用子网数来计算

在求子网掩码之前必须先搞清楚要划分的子网数目, 以及每个子网内的所需主机数目.

  • a 将子网数目转化为二进制来表示.

  • b 取得该二进制的位数, 为 N.

  • c 取得该 IP 地址的类子网掩码, 将其主机地址部分的的前N位置 1 即得出该 IP 地址划分子网的子网掩码.


如欲将 B 类 IP 地址 168.195.0.0 划分成 27 个子网:

  • a 27=11011

  • b 该二进制为五位数, N = 5

  • c 将 B 类地址的子网掩码 255.255.0.0 的主机地址前 5 位置 1, 得到 255.255.248.0


即为划分成 27 个子网的B类 IP 地址 168.195.0.0的子网掩码.

B 利用主机数来计算


  • a 将主机数目转化为二进制来表示.

  • b 如果主机数小于或等于 254 (注意去掉保留的两个 IP 地址), 则取得该主机的二进制位数, 为 N, 这里肯定 N<8; 如果大于 254, 则 N>8, 这就是说主机地址将占据不止8位.

  • c 使用 255.255.255.255 来将该类 IP 地址的主机地址位数全部置 1, 然后从后向前的将 N 位全部置为 0, 即为子网掩码值.


如欲将 B 类 IP 地址 168.195.0.0 划分成若干子网, 每个子网内有主机 700 台:

  • a 700=1010111100

  • b 该二进制为十位数, N = 10

  • c 将该 B 类地址的子网掩码 255.255.0.0 的主机地址全部置 1, 得到 255.255.255.255, 然后再从后向前将后 10 位置 0, 即为: 11111111.11111111.11111100.00000000, 即 255.255.252.0 , 这就是该欲划分成主机为700台的B类 IP 地址 168.195.0.0的子网掩码.



IP 掩码的标注


A 无子网的标注法

对无子网的 IP 地址, 可写成主机号为 0 的掩码. 如 IP 地址 210.73.140.5, 掩码为 255.255.255.0, 也可以缺省掩码, 只写 IP 地址.
B 有子网的标注法

有子网时, 一定要二者配对出现. 以 C 类地址为例.
(以下一段没有指定掩码为 27 位, 在掩码为 27 位的情况下才成立~~)
  • I IP 地址中的前 3 个字节表示网络号, 后一个字节既表明子网号, 又说明主机号, 还说明两个 IP 地址是否属于同一个网段. 如果属于同一网络区间, 这两个地址间的信息交换就不通过路由器. 如果不属同一网络区间, 也就是子网号不同, 两个地址的信息交换就要通过路由器进行. 例如: 对于 IP 地址为 210.73.140.5 的主机来说, 其主机标识为 00000101, 对于 IP 地址为 210.73.140.16 的主机来说它的主机标识为 00010000, 以上两个主机标识的前面三位全是 000, 说明这两个 IP 地址在同一个网络区域中, 这两台主机在交换信息时不需要通过路由器进行. 210.73.60.1 的主机标识为 00000001, 210.73.60.252 的主机标识为 11111100, 这两个主机标识的前面三位 000 与 111 不同, 说明二者在不同的网络区域, 要交换信息需要通过路由器. 其子网上主机号各为 1 和 252.

  • II 掩码的功用是说明有子网和有几个子网, 但子网数只能表示为一个范围, 不能确切讲具体几个子网, 掩码不说明具体子网号, 有子网的掩码格式(对 C 类地址).



  • 子网掩码的表示方法

    子网掩码通常有以下 2 种格式的表示方法:

    • a 通过与 IP 地址格式相同的点分十进制表示, 如: 255.0.0.0 或 255.255.255.128.

    • b 在 IP 地址后加上/符号以及 1-32 的数字, 其中 1-32 的数字表示子网掩码中网络标识位的长度, 如: 192.168.1.1/24 的子网掩码也可以表示为 255.255.255.0.



    子网掩码和 IP 地址的关系


    注: 这讲的都是有内网
    子网掩码是用来判断任意两台计算机的 IP 地址是否属于同一子网络的根据. 最为简单的理解就是两台计算机各自的 IP 地址与子网掩码进行AND运算后, 如果得出的结果是相同的, 则说明这两台计算机是处于同一个子网络上的, 可以进行直接的通讯. 就这么简单.
    请看以下示例:
    运算演示之一










    IP 地址192.168.0.1
    子网掩码255.255.255.0
    AND运算(AND运算法则: 1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0, 0 & 0 = 0)


    转化为二进制进行运算:













    IP 地址11000000.10101000.00000000.00000001
    子网掩码11111111.11111111.11111111.00000000
    AND运算11000000.10101000.00000000.00000000
    转化为十进制192.168.0.0


    运算演示之二






















    IP 地址192.168.0.254
    子网掩码255.255.255.0
    转化为二进制进行运算
    IP 地址11000000.10101000.00000000.11111110
    子网掩码11111111.11111111.11111111.00000000
    AND运算11000000.10101000.00000000.00000000
    转化为十进制192.168.0.0



    运算演示之三






















    IP 地址192.168.0.4
    子网掩码255.255.255.0
    转化为二进制进行运算
    IP 地址11000000.10101000.00000000.00000100
    子网掩码11111111.11111111.11111111.00000000
    AND运算11000000.10101000.00000000.00000000
    转化为十进制192.168.0.0

    通过以上对三组计算机 IP 地址与子网掩码的 AND 运算后, 我们可以看到它运算结果是一样的. 均为 192.168.0.0, 所以计算机就会把这三台计算机视为是同一子网络, 然后进行通讯的. 我现在单位使用的代理服务器, 内部网络就是这样规划的.

    也许又要问, 这样的子网掩码究竟有多少了 IP 地址可以用呢? 你可以这样算.
    根据上面我们可以看出, 局域网内部的 IP 地址是我们自己规定的 (当然和其他的 IP 地址是一样的), 这个是由子网掩码决定的通过对 255.255.255.0 的分析. 可得出: 前三位 IP 码由分配下来的数字就只能固定为 192.168.0, 所以就只剩下了最后的一位了, 那么显而易见了, IP 地址只能有 (2的8次方-2), 即256-2=254, 一般主机地址全为0或者1 (二进制) 有其特殊的作用.
      
    那么你可能要问了:如果我的子网掩码不是 255.255.255.0 呢? 你也可以这样做, 假设你的子网掩码是 255.255.128.0, 那么局域网内的 IP 地址的前两位已固定, 这样, 就可以按照下边的计算来看看同一个子网内到底能有多少台机器

    • A 十进制 128 = 二进制 1000 0000

    • B IP 要和子网掩码进行 AND 运算

    • C













      IP 地址11000000.10101000.1*******.********
      子网掩码11111111.11111111.10000000.00000000
      AND运算11000000.10101000.10000000.00000000
      转化为十进制192.168.128.0


    • D 可知我们内部网可用的 IP 地址为: 11000000.10101000.10000000.00000000 到 11000000.10101000.11111111.11111111 (也可以是: 11000000.10101000.00000000.00000000 到 11000000.10101000.01111111.11111111)

    • E 转化为十进制: 192 .168.128.0 到 192.168.255.255 (或者192.168.0.0到192.168.127.255)

    • F 0 和 255 通常作为网络的内部特殊用途. 通常不使用.

    • G 于是最后的结果如下, 所有可用的 IP 地址为:

      192.168.128.1-192.168.128.254
      192.168.129.1-192.168.129.254
      192.168.130.1-192.168.130.254
      192.168.131.1-192.168.131.254
      . . . . . . . . . . . . .
      192.168.139.1-192.168.139.254
      192.168.140.1-192.168.140.254
      192.168.141.1-192.168.141.254
      192.168.142.1-192.168.142.254
      192.168.143.1-192.168.143.254
      . . . . . . . . . . . . .
      192.168.254.1-192.168.254.254
      192.168.255.1-192.168.255.254


    • H 总数为(255-128+1)*(254-1+1) =128 * 254 = 32512
      子网内包含的机器数目应该是 2^n-2, 比如说上面的子网掩码是 255.255.128.0, 那么他的网络号是 17 位, 主机号是 15 位, 只要主机号不全是 0 或者 1 就是可以的, 所以 IP 地址是 192.168.192.0(11000000.10101000.11000000.00000000)也允许, 除掉全 0 全 1, 结果为 2^15-2=32766, 上面的落了好多地址

    • I 看看的结果是否正确
      a 设定 IP 地址为 192.168.128.1, Ping 192.168.129.233通过测试, 访问 http://192.168.129.233 可以显示出主页.
      b 设定 IP 地址为 192.168.255.254, Ping 192.168.255.254 通过测试, 访问 http://192.168.255.254 可以显示出主页.

    • J 结论: 以上证明我们的结论是对的


    现在就可以看子网中能有多少台机器了, 255.255.255.128, 分解, 11111111.11111111.11111111.10000000, 所以内部网络的 IP 地址只能是 xxxxxxxx.xxxxxxxx.xxxxxxxx.0??????? 到 xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111.

    没有评论:

    发表评论