Skip to main content

认清真正的 — 子网掩码

      子网掩码(Subnet Mask)的主要功能是告知网络设备,一个特定IP地址的网络地址或子网地址(Netword Add)与主机地址(Host Add)。网络上的路由设备通过识别出目的地址的网络号与子网号作出路由寻址决策。而IP地址的主机部分不参与路由器的路由寻址操作,它只用于在同网段中唯一标识一个网络设备。
      之前我们的网络系统中只使用A、B、C这三种主类地址,而不对这三种主类地址作子网划分或者进行主类地址的汇总。网络设备根据IP地址的第一个字节的数值范围判断出它属于A、B、C中的哪一个主类网,进而确定该IP地址的网络部分和主机部分,不需要子网掩码的辅助。
      但为了更充分的利用稀有的IPV4地址资源,我们必须对A、B、C这三种主类网进行了更细的子网的划分,或者采用无类别的域间选路技术(Classless Inter-Domain Routing,CIDR)对网段进行汇总的情况下,也能对IP地址的网络部分与主机部分作正确的区分。这就必须依赖于子网掩码的帮助。
      子网掩码使用与IP相同的编址格式,转换成二进制后,为1的部分对应于IP地址的网络位,为0的部分对应于主机位。将子网掩码和IP地址作"与"操作后,主机位部分被丢弃,剩下的是它具体的网络地址。例如,一个IP分组的目的地址为:10.2.2.1,子网掩码为:255.255.255.0,"与"运算后得到:10.2.2.0,则网络设备认为该IP地址属于 10.2.2.0 网络。
      子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。 最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单. 请看以下示例:
运算演示一: I P 地址:192.168.0.1 / 子网掩码:255.255.255.0
AND运算 转化为二进制进行运算:
IP地址 11010000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
AND运算 11000000.10101000.00000000.00000000
转化为十进制后为: 192.168.0.0

运算演示二: I P地址:192.168.0.254/ 子网掩码:255.255.255.0
AND运算转化为二进制进行运算:
IP地址 11010000.10101000.00000000.11111110
子网掩码 11111111.11111111.11111111.00000000
AND运算 11000000.10101000.00000000.00000000
转化为十进制后为: 192.168.0.0

运算演示三: I P 地址 192.168.0.4 子网掩码 255.255.255.0 AND运算转化为二进制进行运算:
IP地址 11010000.10101000.00000000.00000100
子网掩码 11111111.11111111.11111111.00000000
AND运算 11000000.10101000.00000000.00000000
转化为十进制后为: 192.168.0.0

      我们可以看到以上三例IP地址与子网掩码的AND运算后的结果是一样的,均为192.168.0.0。所以计算机就会把这三台计算机视为是同一子网络,然后进行通讯的。
      也许你又要问,这样的子网掩码究竟有多少了IP地址可以用呢?你可以这样算。根据上面我们可以看出,局域网内部的ip地址是我们自己规定的(当然和其他的ip地址是一样的),这个是由子网掩码决定的通过对255.255.255.0的分析。可得出:前三位IP码由分配下来的数字就只能固定为192.168.0 所以就只剩下了最后的一位了,那么显而易见了,ip地址只能有2^8-1(即256-1=255),一般末位为0或者是255的都有其特殊的作用。
      但是这样划分但浪费地址了,所以后来又引出一种叫VLSM(可变长掩码)的新算法。 如果有50台主机,那么用C类地址的话,每一个网段不是要浪费200台了吗?但是如果用了VLSM就不同了。请看,如果是静态掩码的话C类地址因该是255.255.255.0 50<2^7,化为十进制就是64。所以VLSM就是255.255.255.64 。下面再做几个例子应该就可以理解了、、、
例一: IP:192.168.0.1 / SubstMask:255.255.255.64 转化为二进制
IP地址 11000000.10101000.00000000.00000001
子网掩码 11111111.11111111.00000000.10000000
AND与运算 11000000.10101000.00000000.00000000
转化为十进制192.168.0.0

例二: IP:192.168.0.50 / SubstMask:255.255.255.64 转化为二进制
IP地址 11000000.10101000.00000000.00110010
子网掩码 11111111.11111111.11111111.01000000
AND与运算 11000000.10101000.00000000.00000000
转化为十进制192.168.0.0

以上二个地址在同一网段,再看:
例三: IP:192.168.0.65 / SubstMask:255.255.255.64 转化为二进制
IP地址 11000000.10101000.00000000.01000001
子网掩码 11000000.10101000.00000000.01000000
AND与运算 11000000.10101000.00000000.01000000
转化为十进制 192.168.0.64

Comments

Popular posts from this blog

Cloudera Hadoop 集群安装(ubuntu + CDH5.10)

前言 CDH是Cloudera公司的Hadoop发行版,基于稳定版本的Apache Hadoop构建,包含Hadoop,Spark,Hive,Hbase和一些工具等,并集成了很多补丁,可直接用于生产环境。通过Cloudera Manager可以简化hadoop各组件的部署和配置过程。 目前CDH对ubuntu支持的最高版本为14.04,因此不建议使用更高版本的ubuntu来部署CDH。 环境准备: 1.配置网络(所有节点) 修改hostname: $ sudo vi /etc/hostname cdh01 修改IP地址: $ sudo vi /etc/network/interfaces auto eth0 iface eth0 inet static         address 172.16.13.11         netmask 255.255.255.0         gateway 172.16.13.254 重启网络服务生效: $ sudo ifdown eth0 && sudo ifup eth0 修改ip与主机名的对应关系: $ sudo vi /etc/hosts 172.16.13.11 cdh01 172.16.13.12 cdh02 172.16.13.13 cdh03 2.配置SSH(所有节点) 启用root登陆(CDH5.10需要进行此步操作) $ sudo vi /etc/ssh/sshd_config #PermitRootLogin without-password PermitRootLogin yes $ sudo service ssh restart $ sudo passwd root 设置ssh无密码登陆 //在主节点上执行一路回车,生成无密码的密钥对 $ ssh-keygen -t rsa //将生成的密钥文件复制到其它节点 $ ssh-copy-id cdh02 $ ssh-copy-id cdh03 测试: 在主节点上ssh hadoop2,正常情况下,不需要密码就能直接登陆进去了。 3.安装Oracle JDK(所有节点) 运行CDH5必须使用Oracle的Jdk,需要Java 7及以上版本支持。 在Oracle的官网下载jdk包,解压到相应目录,例如/usr/java/jdk1.8.0_

Bitwarden 配置 Let’s Encrypt 证书

由于在内网环境部署的Bitwarden,不能通过安装脚本自动申请 Let’s Encrypt 的证书。 起初我用了一个自签名证书,发现特别不好使,虽然在firefox 跟 chrome 内核的浏览器上都能通过插件访问,但必须添加信任才行,特别是用Bitwarden Desktop 客户端连的时候,一直报错,可能是不认自签名证书。 于是琢磨了下怎么手动申请Let’s Encrypt的证书用于内网,对过程简单梳理如下。 自签名证书 | Self-Signed Certificate 如果你在内网环境只需要自签名证书,可以参考Bitwarden的帮助文档( Installing and depoying )进行设置: 1、生成自签名证书: //一条命创建私钥和证书: openssl req -x509 -newkey rsa:4096 -sha256 –nodes -days 10950 \    -keyout privite.key -out identity.crt \    -subj "/C= US /ST= New York /L= New York /O= Company Name /OU= CREAST /CN= bw.creast.win " 将生成的文件放到 /ssl 目录下: privite.key     ~/bwdata/ssl/ bw.creast.win/private.key identity.crt      ~/bwdata/ssl/ bw.creast.win/identity.crt 2、生成.pfx格式证书文件: //一条命令将前面生成的私钥和证书打包成需要的pfx格式文件 openssl pkcs12 -export -out ./ identity.pfx -inkey privite.key \    -in identity.crt -certfile identity.crt -passout pass: IDENTITY_CERT_PASSWORD 注意 IDENTITY_CERT_PASSWORD 跟./env/global.override.e

Tor洋葱路由的设置与使用

先说明一下,这里只是利用Tor来访问被GWF屏蔽的优秀服务(如Wikipedia、Blogger、GG App等),并不侧重于如何匿名访问网络。以下Tor设置方法适用于: MS Windows(2000/XP/Vista/Server)系统 第一步:下载并安装Tor 关于Tor(The Onion Router,洋葱路由)的工作原理,可以参考枪旗工作室的说明 ( http://tcno.net/doc/tor/#para1 )。在Windows下安装配置Tor已经非常容易了,直接下载这样一个Tor的Windows 捆绑软件包( Vidalia-Tor-Privoxy Bundle ),其中已经预先配置好这些软件能够一同工作。 安装前可以看到套件捆绑了哪些软件:Tor、Vidalia(Tor 的一个图形用户界面)和 Privoxy(Web 代理软件)、Torbutton(Firefox浏览器插件)全选这些软件进行安装。 安装完成后会自动运行Vidalia,在弹出的控制面板上可以看到当前的状态,Tor已经运行了,此时不需要再进行其它设置了。 第二步:配置浏览器使用Tor 如果使用 Firefox 浏览器,Bundle里已经附带了 Torbutton 插件 ,打开/重启Firefox就会在右下角显示Tor Enabled/Disabled,单击它可以选择是否开启Tor代理功能。 对于 Internet Explorer 没有现成的插件可用,需要手动配置代理设置,也很容易。 菜单位置 工具 - Internet 选项 - 连接 - 局域网设置 - 代理服务器 - 高级 - 服务器 在代理理服务器地址栏里填入 "localhost",端口为 "8118"(Privoxy不支持FTP代理,填不填都无所谓了);注意套接字SOCKS代理的端口为 "9050",如果有其它选项,请选择Socks5,然后"确定"即可。 对于 Maxthon ,如果对IE设置了Tor可以选择“使用IE代理设置”,或者手动添加一个代理列表,内容与上面填写的一样,然后选择应用就可以了。 这里说明一下 Privoxy 的作用,因为当直接使用 SOCKS 代理时,浏览器会泄露