网络知识

如何理解子网掩码

什么是掩码?举个例子。

小明是大一新生,小明的学号是05510050433

小明看到另一个学号,立即可以知道另一个同学和自己是不是同班同学。

比如好看的女生小红05510050435是同班同学

好看的男生小蓝05510030313不是同班同学

怎么看出的呢,学号前面部分数字相同就是同班同学

学号大致分为两部分,前面部分是班级编号,后面部分是个人编号。

现在回到ip地址和子网掩码

电脑(或者手机、ipad、小爱同学)都要联网,联网就会有ip地址,ip地址一般是自动获取的,但是如果用手动配置的话,会发现必须填写子网掩码,否则是不让确认的。

那么子网掩码的作用到底是什么,应该怎么填?

子网掩码的作用,是确定ip地址所在的网段。

小明必须知道自己的班级,电脑也必须知道自己的网段。

小明学号的前9位代表班级编号,这个是学校制定的

那么ip地址的前多少位代表网段呢,这个就得看子网掩码了。

ip地址分为两部分,前面部分叫“网络位”,类似于学号中的班级编号,只要两个ip的网络位相同,那么他们就是同网段。

ip地址后面的部分叫“主机位”,代表这个主机的个体编号,类似学号中老师每次点名喊的数字。

那么两个ip是否同网段,要看他们的网络位是否相同

192.168.1.199

255.255.255.0

这样的掩码,代表192.168.1.是网络位,另一个地址只要也是192.168.1开头,就是同网段了

192.168.1.199

255.255.0.0

这样的掩码,代表192.168.是网络位,另一个地址只要192.168开头就是同网段了

看到这里,应该已经发现规律了,子网掩码几个255,那ip地址的前几段就是网络位

可是实际情况往往错综复杂。比如苹果手机热点给电脑分配的地址是这样的

发现掩码是3个255还带个240

在实际的工程项目中,也会做类似的网络规划,那么后面这个240又是怎么回事呢

这里需要把ip地址换成二进制来看,用win10 自带的计算器可以换算,先算完再来看原理。

打开打算器,选择“程序员”,输入172,可以得到172对应的二进制,然后再得到其他几个数的二进制。

172=10101100

16=00010000

10=00001010

8=00001000

注意,每个数字都要凑齐8位的二进制,不够8位前面写0

换算完后,ip地址172.16.10.8变成了

10101100. 00010000. 00001010. 00001000

然后再换算掩码

255.255.255.240变成了

11111111.11111111.11111111.11110000

发现掩码非常整齐,前面全是1后面全是0

那这里怎么从掩码来得出网络位,其实非常简单,掩码有多少个1,ip地址的前多少位就是网络位,那么这个ip的网络位就是前28位

也就是10101100. 00010000. 00001010. 0000

如果另一个ip的二进制,前28位也是这样,那么就是同网段

当然,二进制很不友好,所以我们还可以计算出自己所在的网段的范围

那就是网络位固定下来,主机位从全0到全1就可以

10101100. 00010000. 00001010. 00000000到10101100. 00010000. 00001010. 00001111

换回十进制

就是

172.16.10.0到172.16.10.15

所以,超过15的都不是同网段了。

用掩码算了半天的网段,那么问题来了,为什么要算网段?

因为对电脑老说,访问同网段的目标,和访问不同网段的目标,采取的通信方法不一样,他得先知道是否同网段,才能做下一步的动作。

如果目标是同网段,那么可以直接通信,直接发数据就好了。

如果目标不是同网段,那么不能直接通信,必须先交给一个中间人

,也就是网关设备,由网关设备帮忙转发。

现在再回到题主的问题中

192.168.1.199能否把掩码设置成255.255.255.192

关键是要看192.168.1.199想和哪个目标直接通信,如果只需要和现在的自己的网段通信,也就是192.168.1.192到192.168.1.255范围的主机通信,那么没有关系,即使对端的掩码是255.255.255.255.0,双方的网络位也是相同的,等同于同网段,可以直接通信。

否则,就无法直接通信

最后通过实验来验证一下原理

现在把目标主机设置成192.168.1.200,掩码255.255.255.0

源主机设置成192.168.1.199,掩码255.255.255.192

可以ping通,双方通信正常

现在目标主机改成192.168.1.100

无法ping通

在ping 201的时候,也不通,但是提示的错误是不同的,这是为什么呢?

答:ping 100 因为不是一个网段,所以去找网关,但是网关没有设置,所以报故障错误;ping 201 是一个网段,但是 201 上没有配给一个可用主机,所以报无法访问主机。

总结:


IP地址就是辨明网络中一台主机身份的编码,
网络地址就是这个编码中比较特殊的一部分,网络地址不能够分配给主机,它用来标明一个网段,确定一个网段
网关地址就是一个IP地址,是分配给路由器一个接口的IP地址,
通常数据包在传递的时候会有大致两种分类,一个是同局域网的,一个是不同局域网的,
比方说:
我有一个电脑,IP是192.168.1.1,子网掩码是24位的,那么他的网络号就是192.168.1.0,我在给他指定一个网关是192.168.1.254
这个时候,我的这台电脑想要和同网的192.168.1.2 通信,那么他就不用网关了,直接发到局域网上就可以了。
但是如果我想要发给远程的主机,比方说IP是192.168.2.1 同样24位的, 他的网络号就是192.168.2.0 这时网关就起作用了,我的电脑就会把数据发给网关由网关再转发一直到达目的地也就是IP 是192.168.2.1的主机上。

对于网关来说只要是除了,网络地址,广播地址以外的可用主机地址都可以分配给他
比方说,在192.168.1.0/24 的网络里面,网络地址是192.168.1.0 广播地址是192.168.1.255
那么除了以上两个地址以外的192.168.1.1-192.168.1.254 都是可以分配给网关的