您的位置:首页 > 其它

子网掩码、子网号和主机地址

2016-04-12 15:39 141 查看
空间文章地址:http://hlyin.space/Computer-Networks/subnetmask.html

先回顾IP地址,IP地址是分层的,包括网络主机两个部分,按网络部分和主机部分的不同长度主要分为A、B、C三类(还有多播组的D类和不再使用的E类),但每一类的网络部分和主机部分的总长度相等,均为32位,如下图:



A类:最前面1位为0,7位标识网络号,24位标识主机号,则第一段取值为1~126,对于A类IP,最多有2^7 - 2 = 126个(可用)A类网络 (减2是因为要去掉全0的主机地址和全1的广播地址),每个A类网路中,最多可有2^24 - 2 = 16777214 台(可用)主机

地址:1.0.0.0 ~ 126.0.0.0

0.0.0.0 和 127.0.0.0保留

B类:最前面2位为10,14位标识网络号,16位标识主机号,则第一段取值为128~191,对于B类IP,有2^14 - 2 = 16382个B类网络,每个B类网路中,最多可有2^16 - 2 =65534 台主机

地址:128.1.0.0 ~ 191.254.0.0

128.0.0.0 和 191.255.0.0保留

C类:最前面3位为110,21位标识网络号,8位标识主机号,则第一段取值为192~223,对于C类IP,有2^21 - 2 = 2097150个C类网络,每个B类网路中,最多可有2^8 - 2 =254 台主机

地址:192.0.1.0 ~ 223.255.254.0

192.0.0.0 和 223.255.255.0保留

为了提高地址分配的效率和减少分配网络号总数,采取划分子网的策略,在多个网络中共享一个网络号的机制涉及使用子网掩码,子网掩码的作用就是用来判断任意两个或多个IP地址是否属于同一个子网。

子网划分的实现是基于网络位占用主机位的,以21位网络位和8位主机位的C类地址为例,若将一个C类网络划分成2个子网,则网络位需要占用1位主机位,即现在是22位网络位和7位主机位,通过占用的这1位的值来区分划分成的2个子网,同理,若划分成3个或4个子网则占用2个主机位…

但是现在,一个外部的网络,并不知道连接的这个C类网络是否划分了子网,所以需要子网掩码,当未划分时,A类地址的缺省子网掩码为255.0.0.0,B类为255.255.0.0,C类为255.255.255.0,仍以C类网络为例,划分成2个子网(占1位主机位)后子网掩码为255.255.255.128(128个主机,126个可用主机),划分成4个子网(占位主机位)后子网掩码为255.255.255.192,如下表:

占用主机位位数划分子网数子网掩码主机数可用主机数
0不划分255.255.255.0256254
12255.255.255.128128126
24255.255.255.1926462
38255.255.255.2243230
416255.255.255.2401614
532255.255.255.24886
664255.255.255.25242
ifconfig(win为ipconfig) 查看当前计算机的ip地址及子网掩码,当前ip为192.168.1.105,即C类网络,子网掩码0xffffff00,即255.255.255.0,未划分。



子网掩码是一个IPv4地址,在一个给定的子网中,所有主机都配置相同的掩码,即每个子网只有一个掩码,但需要注意,并不是子网掩码相同就是同一子网,看一个《计算机网络系统方法》中的例子,如下图:



假设H1向H2发数据,首先H1需要判断H2是不是和自己在同一子网中,这一过程为:将H2的IP地址与H1的子网掩码进行按位与运算,将结果与H1的子网号相比,若相同,则属于同一子网,否则不是。那么将H2的IP地址128.96.34.139与上H1的子网掩码255.255.255.128后,结果为128.96.34.128,不等于H1的子网号128.96.34.0,因而H1与H2并不在同一子网中,即使这两个子网的子网掩码相同,都为255.255.255.128。而之所以相同的子网掩码却可以有不同的子网号,从计算上看是由于与之相&的IP地址不同,但实质原因是被占用的主机位可以有不同的取值而决定的,比如一个C类IP,划分成2个子网,则主机位被占用1位,而这被占用的1位取0或取1,便形成了2个不同的子网号。

通过前面的计算,H1可以知道H2与其不在同一子网,因此将分组给它的默认路由器R1由R1负责转发,根据转发表确定转发路径,发送到子网号为128.96.34.128的网络中,这之后需要确定在此网络中的接收主机,因为此网络中可能不止有一台主机H2,比如还有IP地址为128.96.34.140的H4,这时将子网掩码取反后再与H2的IP地址,即用0.0.0.127 & 128.96.34.139,结果0.0.0.11即为主机号,根据主机号在网络中确定具体的接收主机。

结论和归纳:

每个子网只有一个掩码,但需要注意,并不是子网掩码相同就是同一子网

子网号 = IP & 子网掩码

主机号 = IP & 掩码取反

补充(来自知乎):

比较下面的两个IP地址,

A:219.218.44.123

B:219.218.45.34

在子网掩码M1:255.255.254.0下为同一子网,而在M2:255.255.255.0下为不同子网。

分析:

主机地址
A:11011011-11011010-00101100-01111011
B:11011011-11011010-00101101-00100010
子网掩码地址
M1:11111111-11111111-11111110-00000000(254)
M2:11111111-11111111-11111111-00000000(255)
通过做and运算,可以看出来

A&M1:11011011-11011010-00101100-00000000

B&M1:11011011-11011010-00101100-00000000

A&M2:11011011-11011010-00101100-00000000

B&M2:11011011-11011010-00101101-00000000

假设还有如下IP

C:219.218.45.200

可以得出在子网M2:255.255.255.0下跟B同子网,而在子网M3:255.255.255.128下为不同子网。

参考:

[1] Larry L.peterson, Bruce S.Davie. 计算机网络系统方法[M].四川: 机械工业出版社, 2015: 113-119

[1] 恒思凝. 子网掩码判断两个ip是否在同一子网如何保证准确. http://www.zhihu.com/question/36296884/answer/68366061

[2] 计算机网络地址,主机地址,子网掩码,网段,子网划分的理解. /article/7693751.html

[3] 计算机网络子网掩码. /article/1998312.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: