Netmask (子网掩码 )的用途与子网络的切分

来源:互联网 发布:java 密码加密解密 编辑:程序博客网 时间:2024/05/22 15:30

Netmask(子网掩码达成子网络的切分的最重要参数。


以 192.168.0.0~192.168.0.255 这个网域为范例演示Netmask

IP 网段可以分为 Net_ID 与 Host_ID,既然 Net_ID 是不可变的,那就假设他所占据的 bits 已经被用光了 ( 全部
为 1 ),而 Host_ID 是可变的,就将他想成是保留着 ( 全部为 0 ),所以, Netmask 的表示就成为:

11000000.10101000.00000000.00000000  192.168.0.0
11000000.10101000.00000000.11111111  192.168.0.255
|----------Net_ID---------|-host--|


11111111.11111111.11111111.00000000 <== Netmask 二进制
255 . 255 . 255 . 0 <== Netmask 十进制


Class A, B, C 三个等级的 Netmask 表示方式:
A Class : 11111111.00000000.00000000.00000000 ==> 255. 0. 0. 0
B Class : 11111111.11111111.00000000.00000000 ==> 255.255. 0. 0
C Class : 11111111.11111111.11111111.00000000 ==> 255.255.255. 0


在 192.168.0.0 ~ 192.168.0.255 这个 IP 网段里面的相关网络参数:

Netmask: 255.255.255.0 <==网域定义中,最重要的参数
Network: 192.168.0.0 <==第一个 IP
Broadcast: 192.168.0.255 <==最后一个 IP
可用以设定成为主机的 IP 数:
192.168.0.1 ~ 192.168.0.254


我们常常会以 Network 以及 Netmask 来表示一个网域:

Network/Netmask
192.168.0.0/255.255.255.0
192.168.0.0/24 <==因为 Net_ID 共有 24 个 bits


除了C Class之外,网域是可以切的更细。

例如C Class 的Net_ID占24bits,将第一个Host_ID拿来做Net_ID,则整个Net_ID占25bits,而Host_ID减少为占7bits。在这样的情况下,原来的一个 C Class 的网域就可以被切分为两个子网域,而每个子网域就有256/2 - 2 = 126个可用的 IP 了。如此,该网域当中的主机在进行逻辑广播时,响应的主机数量就少了一半, 优化网络效能。

原本的 C Class 的 Net_ID 与 Host_ID 的分别
11000000.10101000.00000000.00000000 Network: 192.168.0.0     (第一个IP)
11000000.10101000.00000000.11111111 Broadcast: 192.168.0.255  (最后一个 IP
|----------Net_ID---------|-host--|


切成两个子网络之后的 Net_ID 与 Host_ID 为何?
11000000.10101000.00000000.0 0000000 多了一个 Net_ID 了, 为 0
11000000.10101000.00000000.1 0000000 多了一个 Net_ID 了, 为 1
|----------Net_ID-----------|-host--|


第一个子网络
Network:  11000000.10101000.00000000.0 0000000  192.168.0.0
Broadcast: 11000000.10101000.00000000.0 1111111  192.168.0.127
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000   255.255.255.128
所有 IP 与网域表示式:

192.168.0.0/25 或 192.168.0.0/255.255.255.128


第二个子网络
Network:  11000000.10101000.00000000.1 0000000  192.168.0.128
Broadcast: 11000000.10101000.00000000.1 1111111  192.168.0.255
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000   255.255.255.128
所有 IP 与网域表示式:
192.168.0.128/25 或 192.168.0.128/255.255.255.128


所以说,当再细分下去时,就会得到两个子网域,而两个子网域还可以再细分下去


经典例题:请试着计算出 172.16.0.0/23 这个网域的 Netmask, Network, Broadcast 等参数

由于 172.16.xxx.xxx 是在 Class B 的等级当中,亦即 172.16.0.0/16 才对。不过题目中询问的是 172.16.0.0/23,等于是向 Host_ID 借了 7 个 bits 用在 Net_ID
当中。所以整个 IP 的地址会变成这样:
预设: 
172 . 16 . 0000000 0.00000000   (蓝色阴影为向Host_ID借的7个bits)
|-----Net_ID--------|--Host---|
Network: 172 . 16 .0000000 0.00000000 172.16.0.0
Broadcast: 172 . 16 .0000000 1.11111111 172.16.1.255
Netmask: 11111111.11111111.1111111 0.00000000 255.255.254.0


0 0