学习笔记——IP地址网络协议——网络掩码(Netmask)

三、网络掩码(Netmask)

1、网络掩码概述

网络掩码( Netmask) 又称子网掩码(Subnet Mask) 网络掩码为32 bit,与IP地址的位数一样,通常也以点分十进制数来表示。

子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

说的通俗的话,就是用来分割子网和区分哪些IP是同一个网段的,哪些不是同一网段的。

++通常将网络掩码中1的个数称为这个网络掩码的长度。++如∶掩码0.0.0.0的长度是0,掩码252.0.0.0的长度是6。

网络掩码一般与IP地址结合使用,其中值为1的比特对应IP地址中的网络位;值为0的比特对应IP地址中的主机位,来识别一个IP地址中的网络位与主机位。

**即:**网络掩码中1的个数就是IP地址的网络号的位数,0的个数就是IP地址的主机号的位数。

(1)子网掩码的组成

同IP地址一样,子网掩码是由长度为32位二进制数组成的一个地址。

子网掩码32位与IP地址32位相对应,IP地址如果某位是网络地址,则子网掩码为1,否则为0

IP地址: 192.168.1.111 **子网掩码:**255.255.255.0

①转换为二进制

1100 0000. 1010 1000. 0000 0001. 0110 1111 地址

1111 1111. 1111 1111. 1111 1111. 0000 0000 掩码

②子网掩码为1所对应的IP地址那一位,则为网络位,子网掩码为0 所对应的位主机位。 24位网络位 8个主机位

**注:**左边连续的1的个数代表网络号的长度,(使用时必须是连续的,理论上也可以不连续),右边连续的0的个数代表主机号的长度。

(2)子网掩码的表示方法

①点分十进制表示法二进制转换十进制,每8位用点号隔开

**例如:**子网掩码二进制11111111.11111111.11111111.00000000,表示为255.255.255.0

②CIDR斜线记法 IP地址/n

**例1:**192.168.1.100/24,其子网掩码表示为255.255.255.0,二进制表示为11111111.11111111.11111111.00000000

例2:172.16.198.12/20,其子网掩码表示为255.255.240.0,二进制表示为11111111.11111111.11110000.00000000

不难发现,例1中共有24个1,例2中共有20个1,所以n是这么来的。运营商ISP常用这样的方法给客户分配IP地址。

**注:**n为1到32的数字,表示子网掩码中网络号的长度,通过n的个数确定子网的主机数=2^(32-n)-2(-2的原因:主机位全为0时表示本网络的网络地址,主机位全为1时表示本网络的广播地址,这是两个特殊地址)。

在实际项目中,我们通常会遇到这样的IP地址。

ip地址:192.168.1.1 子网掩码:255.255.255.0

ip地址:192.168.1.2 子网掩码:255.255.255.0

案例1: 我们可以直接的判断,他们是同属于一个网段的IP地址。那么对于下面这样的呢?

ip地址:192.168.1.1 子网掩码:255.255.255.0

ip地址:192.168.1.2 子网掩码:255.255.0.0

这两个ip地址虽然在不看掩码的情况下,比较像,但他们并不是同一个网段内的。这个可以从子网掩码来判断,

192.168.1.1 255.255.255.0 是属于192.168.1.0网段。

192.168.1.2 255.255.0.0 是属于192.168.0.0网段。

2、子网掩码作用

①子网掩码(Subnet Mask)又叫网络掩码、地址掩码,必须结合IP地址一起对应使用。

②只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

③子网掩码和IP地址做"与"运算,分离出IP地址中的网络地址和主机地址,用于判断该IP地址是在本地网络上,还是在远程网络网上。

④子网掩码还用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而IP浪费。

3、子网掩码的分类

(1)缺省(默认)子网掩码

缺省子网掩码(默认子网掩码) ,即未划分子网,对应的网络号的位都置 1 ,主机号都置 0 。

"有类编址"的地址划分过于死板,划分的颗粒度太大,会有大量的主机号不能被充分利用,从而造成了大量的IP地址资源浪费。

未做子网划分的IP地址:网络号+主机号

A类网络缺省子网掩码: 255.0.0.0,用CIDR表示为/8

B类网络缺省子网掩码: 255.255.0.0,用CIDR表示为/16

C类网络缺省子网掩码: 255.255.255.0,用CIDR表示为/24

(2)自定义子网掩码

将一个网络划分子网后,把原本的主机号位置的一部分给了子网号,余下的才是给了子网的主机号。即VLSM(Variable Length Subnet Mask),可变长子网掩码。将一个大的有类网络,划分成若干个小的子网,使得IP地址的使用更为科学,减少地址浪费。

做子网划分后的IP地址:网络号+子网号+子网主机号

**举个栗子:**192.168.1.100/25,其子网掩码表示:255.255.255.128

意思就是将192.168.1.0这个网段的主机位的最高1位划分为了子网。

4、网段

**网段(network segment):**在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,

即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。

子网掩码和IP地址的关系

子网掩码是用来判断任意两台主机的IP地址是否属于同一网络的依据,就是拿双方主机的IP地址和自己主机的子网掩码做与运算,如结果为同一网络,就可以直接通信。

And按位与运算:

与运算是计算机中一种基本的逻辑运算方式,符号表示为&,也可以表示为 and。

参加运算的两个数据,按二进制位进行"与"运算。

运算规则: 0&0=0;0&1=0;1&0=0;1&1=1;**即:**两位同时为"1",结果才为"1",否则为0

举例: 192.168.1.1-192.168.1.2就是一个网段,类似于一个ip到另一个ip。是否同一网段判断:

要在同一网段,必须是网络标识(网络号)相同。

要想在同一网段,必需做到网络标识相同,那网络标识怎么算呢?

各类IP的网络标识算法都是不一样的。

A类的,只算第一段。

B类,只算第一、二段。

C类,算第一、二、三段。算法只要把IP和子网掩码的每位数AND(相与)就可以了。

**AND方法:**0 and 1=0; 0 and 0=0; 1 and 1=1;

**如:**192.168.0.1,255.255.255.0,先转换为二进制,然后AND每一位

IP : 192.168.0.1 -> 11000000.10101000.00000000.00000001

子网掩码: 255.255.255.0 -> 11111111.11111111.11111111.00000000

AND结果: 11000000.10101000.00000000.00000000 转换为十进制192.168.0.0,这就是网络标识。

在实际项目中,我们通常会遇到这样的ip地址。

ip地址: 192.168.1.1 **子网掩码:**255.255.255.0

ip地址: 192.168.1.2 **子网掩码:**255.255.255.0

我们可以直接的判断,他们是同属于一个网段的ip地址。那么对于下面这样的呢?

ip地址: 192.168.1.1 **子网掩码:**255.255.255.0

ip地址: 192.168.1.2 **子网掩码:**255.255.0.0

这两个ip地址虽然在不看掩码的情况下,比较像,但并不是同一个网段的。可以从子网掩码来判断,

192.168.1.1 255.255.255.0是属于192.168.1.0网段。

192.168.1.2 255.255.0.0是属于192.168.0.0网段。

如何根据掩码来确定ip地址网段

如何根据IP地址和子网掩码,计算网络地址:

将IP地址与子网掩码转换成二进制数。

②、将二进制形式的 IP 地址与子网掩码做"与"运算。

③、将得出的结果转化为十进制,便得到网络地址。

**网络地址计算小技巧:**IP地址和子网掩码做与运算,把IP地址的主机位直接归0,就快速得到网络地址。所以只要一看到IP地址和子网掩码,就能马上确认网络地址。

ip地址: 192.168.1.1 **子网掩码:**255.255.255.0

ip地址: 192.168.2.1 **子网掩码:**255.255.255.0

以上地址可以直观的判断,他们并不属于同一个网段,那么如何计算呢?

要想判断两个ip地址是不是在同一个网段,只需将ip地址与子网掩码做与运算,如果得出的结果一样,则这两个ip地址是同一个子网当中。

详细计算

将ip地址192.168.1.1转换为二进制 11000000 10101000 00000001 00000001

将子网掩码255.255.255.0转换成二进制 11111111.11111111.11111111.00000000

将两者相"与(and)"运算得到结果: 11000000 10101000 00000001 00000000

++转换成网络号就是:++ 192 . 168 . 1. 0

将ip地址192.168.2.1转换为二进制 11000000 10101000 00000010 00000001

将子网掩码255.255.255.0转换成二进制 11111111.11111111.11111111.00000000

将两者相"与(and)"运算得到结果: 11000000 10101000 00000010 00000000

++转换成网络号就是:++ 192 .168 . 2 . 0

二者的结果不一样,一个是网段192.168.1.0,一个是网段192.168.2.0,所以不是一个网段

例2:

ip地址1: 192.168.1.1 **子网掩码:**255.255.252.0

ip地址2: 192.168.2.1 **子网掩码:**255.255.252.0

详细计算

将ip地址192.168.1.1转换为二进制 11000000 10101000 00000001 00000001

将子网掩码255.255.252.0转换成二进制 11111111.11111111.11111100.00000000

然后将两者相"与(and)"运算得到结果: 11000000 10101000 00000000 00000000

++转换成网络号就是:++ 192 . 168 . 0 . 0

将ip地址192.168.2.1转换为二进制 11000000 10101000 00000010 00000001

将子网掩码255.255.252.0转换成二进制 11111111.11111111.11111100.00000000

然后将两者相"与(and)"运算得到结果: 11000000 10101000 00000000 00000000

++转换成网络号就是:++ 192 . 168 . 0 . 0

很明显,二者的结果是一样的,都是属于192.168.0.0网段,所以他们是同属于一个网段。

如何根据ip地址推算子网掩码

大部分的情况下,网络中只要不超过254台主机的话,子网掩码都可以设置成255.255.255.0。超过了254台主机的话怎么办呢?

可以划分vlan,也可以设置成一个大网段,划分vlan我们就不说了,上面有例子,设置成一个大网段就有一个难点,如何确定这个大网段里面的子网掩码呢?

**例如:**假设监控网络中有600个点位,我们不想把它划分vlan(实际项目中大部分是会划分vlan的),假设只想用一个大网段把这600个点位分配ip地址,如何设置ip地址,如何确实子网掩码?

**分析:**首先我们知道600个点位,可以使用3个254个ip地址段来分配。

**ip段一:**192.168.0.1------192.168.0.254

**ip段二:**192.168.1.1------192.168.1.254

ip段三: 192.168.2.1------192.168.2.254 每个网段有254个ip地址,完全够600个点位用的。如果要使这三个ip段在同一个网段内,那么这个大网段共同的子网掩码是多少呢? 分析下:

将ip地址192.168.0.1转换为二进制 11000000 10101000 00000000 00000001

将ip地址192.168.1.1转换为二进制 11000000 10101000 00000001 00000001

将ip地址192.168.2.1转换为二进制 11000000 10101000 00000010 00000001

转换成了二进制,三个ip段的二进制前面22位的是不变的,那么可以将他们表示成:

**ip段一:**192.168.0.1/22

**ip段二:**192.168.1.1/22

**ip段三:**192.168.2.1/22

这种192.168.2.x/22形式的ip地址相信大家平时都见过,就是已经告诉了子网掩码了。

也就是说他们共同的子网掩码二进制前面22个都是1。11111111 11111111 11111100 00000000

转换成十进制,那就是255.255.252.0,所以他们共同的子网掩码就是255.255.252.0。

通信时如何衡量是否在同一网段。

1、通信时发送端的主机会使用对方的IP地址加上自己的掩码进行运算,最终计算出对端的网络地址

  1. 计算之后,将计算后的网络地址与自己本段的网络地址进行比对,相同,则认为在同一网段,不同,则认为不在同一网段。

5、有类和无类网络,超网和子网

**有类网络(主类网络或标准网络):**指把IP地址能归结到的A类、B类、C类IP,使用的是标准的默认子网掩码。

**无类网络:**相对于有类网络,无类网络IP地址的掩码是变长的。在有类网络的基础上,拿出一部分主机ID作为子网ID。

超网**(SuperNetting)****:**把多个小网络组合成一个大网络。

**子网(Subnet):**有类网络划分成更小后的网络。


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】

相关推荐
Chandler24几秒前
一图掌握 网络协议 核心要点
网络协议·tcp/ip·计算机网络·http
我命由我123455 分钟前
Photoshop - Photoshop 工具栏(10)透视裁剪工具
经验分享·笔记·学习·ui·职场和发展·职场发展·photoshop
JJJJ_iii29 分钟前
【深度学习03】神经网络基本骨架、卷积、池化、非线性激活、线性层、搭建网络
网络·人工智能·pytorch·笔记·python·深度学习·神经网络
sensen_kiss32 分钟前
INT301 Bio-computation 生物计算(神经网络)Pt.1 导论与Hebb学习规则
人工智能·神经网络·学习
玉石观沧海34 分钟前
高压变频器故障代码解析F67 F68
运维·经验分享·笔记·分布式·深度学习
海阳宜家电脑41 分钟前
SQL Server连接字符串
服务器·网络
koko421 小时前
天津小公司面经
java·学习·面试
努力学习的小廉1 小时前
深入了解linux网络—— 自定义协议(上)
linux·服务器·网络
初级炼丹师(爱说实话版)2 小时前
MySql速成笔记5(多表关系)
笔记
七夜星七夜月2 小时前
生成与无监督学习 —— 奶茶店的 “新品研发与原料优化体系”
学习