• 常见的问题系列【什么是子网掩码?】


    1.问题

      上学的时候没有好好学,工作的时候闹了很大的一个笑话。事情是这样的,由于我们项目需要上容器云,这时候需要申请资源,其中有一项资源就是地址池,也就是你可以使用的一段内网的IP地址。应用部署好之后,突然发现,连接第三方系统的应用,一旦重新启动的时候有时候就不好使了,全靠运气才能连接到第三方系统。刚开始以为是自己的配置的原因,在测试环境的时候,确实因为配置导致过这个问题。后来反复确认,配置没有问题。这时候,我突然想到了,我们的应用每次启动的时候,分配的ip都不一样。连不上第三方系统的时候,确实是报的连接超时。这时候,我在想,会不会是开网络策略的时候,有的ip地址是开过了,但是有的漏了。直到后来,靠运气也连不上了,每次重启都会报连接超时。这时候,我没办法,只能重新开通网络策略了。就在开通网络策略需要填申请单的时候,搞笑的一幕发生了。我竟然不知道“10.11.144.123/27”(瞎写的,举个例子)这是个啥,请教了好几个同事,都不知道。再大的困难也难不倒能看到这里的伟大的我们,经过一番虚心求教,终于让我整明白了。记录一下,以便帮助那些不理解的秀儿们。

    2.分析

      简单理解:

      子网掩码就是用来区分局域网的一个唯一标识,几个ip地址拥有同一个子网掩码,就说明这几个ip地址属于同一个局域网。

      众所周知,ipv4的ip由4段组成,每段有8位的二进制数组成,共32位。例如“10.11.144.123/27”,就可以简单理解为起始ip地址为“10.11.144.123”,32-27=5,2的5次方是32(即这个地址池里有32个ip地址,一般一个用于网关,一个用于广播,减去2个,可以用的ip还有30个),因为123+32=155,所以这个ip地址的最大ip地址为“10.11.144.154”。对于我们开通网络策略,理解到这里就足够用了,开通网络策略的申请单上,源地址就写“10.11.144.123/27”,目标地址写第三方系统地址就行了。

      深入理解:

      对于深究原理的同学们,我们接着往下聊。仍然以“10.11.144.123/27”为例,把这个ip地址“10.11.144.123”转成二进制

      0000 1010.0011 0011.1001 0000.1010 0000

           对上面的ip前27位都写上1,就变成这样

      1111 1111.1111 1111.1111 1111.1110 0000,

      上面这个数换算成十进制就变成了255.255.255.224,这个就是子网掩码。

      计算机在比较两个ip是否是同一个局域网的时候,就会拿二进制的ip前27位,去和子网掩码“1111 1111.1111 1111.1111 1111.1110 0000”的前27位进行与运算,与后的结果前27位如果等于“10.11.144.123”的二进制“0000 1010.0011 0011.1001 0000.1010 0000”的前27位,则说明这个ip是和是“10.11.144.123”在同一个局域网。

  • 相关阅读:
    ASP.NET WebApi 文档Swagger中度优化
    ASP.NET五步打包下载Zip文件
    JavaScript——HashMap实现
    JS实现集合和ECMA6集合
    JavaScript——双向链表实现
    用JavaScript来实现链表LinkedList
    JavaScript结构三层——思想快速介绍
    浏览器自动刷新——基于Nodejs的Gulp LiveReload与VisualStudio完美结合。
    JavaScript原型OOP——你上车了吗?
    再谈JavaScript闭包及应用
  • 原文地址:https://www.cnblogs.com/hujunwei/p/16795444.html
Copyright © 2020-2023  润新知