私有IP网子网掩码划分原则及计算方法

私有IP网子网掩码划分原则及计算方法

最好记下的二进制转换十进制

00000000 0

00000001 1

00000010 2

00000100 4

00001000 8

00010000 16

00100000 32

01000000 64

10000000 128

11000000 192

11100000 224

11110000 240

11111000 248

11111100 252

11111110 254

11111111 255

IP和子网掩码

我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP

AIP0.0.0.0 127.255.255.255 (0段和127段不使用)

BIP128.0.0.0 191.255.255.255

CIP192.0.0.0 223.255.255.255

Windows默认分配的子网掩码每段只有2550

A类的默认子网掩码 255.0.0.0 一个子网最多可以容纳1677万多台电脑

B类的默认子网掩码 255.255.0.0 一个子网最多可以容纳6万台电脑

C类的默认子网掩码 255.255.255.0 一个子网最多可以容纳254台电脑

我以前认为,要想把一些电脑搞在同一网段,只要IP的前三段一样就可以了,今天,我才知道我错了。如果照我这样说的话,一个子网就只能容纳254台电脑?真是有点笑话。我们来说详细看看吧。

要想在同一网段,只要网络标识相同就可以了,那要怎么看网络标识呢?首先要做的是把每段的IP转换为二进制。(有人说,我不会转换耶,没关系,我们用Windows自带计算器就行。打开计算器,点查看>程序员,输入十进制的数字,再点一下“二进制”这个单选点,就可以切换至二进制了。)

把子网掩码切换至二进制,我们会发现,所有的子网掩码是由一串连续的1和一串连续的0组成的(一共4段,每段8位,一共32位数)。

255.0.0.0 11111111.00000000.00000000.00000000

255.255.0.0 11111111.11111111.00000000.00000000

255.255.255.0 11111111.11111111.11111111.00000000

这是A/B/C三类默认子网掩码的二进制形式,其实,还有好多种子网掩码,只要是一串连续的1(不少于8个)和一串连续的0就可以了(每段都是8位)。如 11111111.11111111.11111000.00000000,这也是一段合法的子网掩码。子网掩码决定的是一个子网的计算机数目,计算机公式是2m次方,其中,我们可以把m看到是后面的多少个0。如255.255.255.0转换成二进制,那就是 11111111.11111111.11111111.00000000,后面有80,那m就是8255.255.255.0这个子网掩码可以容纳 28次方(台)电脑,也就是256台,但是有两个IP是不能用的,那就是最后一段不能为0255,减去这两台,就是254台。

划分方法

子网的划分,实际上就是设计子网掩码的过程。子网掩码主要是用来区分IP地址中的网络ID和主机ID,它用来屏蔽IP地址的一部分,从IP地址中分离出网络ID和主机ID.子网掩码是由4个十进制数组成的数值中间用“.”分隔,如255.255.255.0。若将它写成二进制的形式为:11111111.11111111.11111111.00000000,其中为“1”的位分离出网络ID,“0”的位分离出主机ID,也就是通过将IP地址与子网掩码进行逻辑操作,得出网络号。

例如,假设IP地址为192.160.4.1,子网掩码为255.255.255.0,则网络ID192.160.4.0,主机ID0.0.0.1。计算机网络ID的不同,则说明他们不在同一个物理子网内,需通过路由器转发才能进行数据交换。

每类地址具有默认的子网掩码:对于A类为255.0.0.0,对于B类为255.255.0.0,对于C类为255.255.255.0。除了使用上述的表示方法之外,还有使用子网掩码中“1”的位数来表示的,在默认情况下,A类地址为8位,B类地址为16位,C类地址为24位。例如,A类的某个地址为 12.10.10.3/8,这里的最后一个“8”说明该地址的子网掩码为8位,而199.42.26.0/28表示网络199.42.26.0的子网掩码位数有28位。

如果希望在一个网络中建立子网,就要在这个默认的子网掩码中加入一些位,它减少了用于主机地址的位数。加入到掩码中的位数决定了可以配置的子网。因而,在一个划分了子网的网络中,每个地址包含一个网络地址、一个子网位数和一个主机地址。

示例

255.255.248.0这个子网掩码可以最多容纳多少台电脑?

计算方法

把将其转换为二进制的四段数字(每段要是8位,如果是0,可以写成80,也就是00000000

11111111.1111111.11111000.00000000

然后,数数后面有几颗0,一共是有11颗,那就是211次方,等于2048 (注意:主机号中全0是保留地址,全1是广播地址,所以它们不算可用主号地址。网络号也是一样的。子网号是可以用全0和全1),所以这个子网掩码最多可以容纳2048-2=2046台电脑。

一个子网最多可以容纳多少台电脑你会算了吧,下面我们来个逆向算法的题。

一个公司有530台电脑,组成一个对等局域网,子网掩码设多少最合适?

首先,无疑,530台电脑用BIP最合适(A类不用说了,太多,C类又不够,肯定是B类),但是B类默认的子网掩码是255.255.0.0,可以容纳6万台电脑,显然不太合适,那子网掩码设多少合适呢?我们先来列个公式。

公式

2m次方>=560

首先,我们确定2m次方一定是大于28次方的,因为我们知道28次方是256,也就是CIP的最大容纳电脑的数目,我们从9次方一个一个试,29次方是 512,不到560210次方是1024,看来210次方最合适了。子网掩码一共由32位组成,已确定后面10位是0了,那前面的22位就是1,最合适的子网掩码就是:11111111.11111111.11111100.00000000,转换成10进制,那就是255.255.252.0

分配和计算子网掩码你会了吧,下面,我们来看看IP地址的网段。

相信好多人都和我一样,认为IP只要前三段相同,就是在同一网段了,其实,不是这样的,同样,我也把IP的每一段转换为一个二进制数,这里就拿IP192.168.0.1,子网掩码:255.255.255.0做实验吧。

192.168.0.1

11000000.10101000.00000000.00000001

(这里说明一下,和子网掩码一样,每段8位,不足8位的,前面加0补齐。)

IP 11000000.10101000.00000000.00000001

子网掩码 11111111.11111111.11111111.00000000

同一网段

在这里,向大家说一下到底怎么样才算同一网段。

要想在同一网段,必需做到网络标识相同,那网络标识怎么算呢?各类IP的网络标识算法都是不一样的。A类的,只算第一段。B类,只算第一、二段。C类,算第一、二、三段。

算法只要把IP和子网掩码的每位数AND就可以了。

AND方法:01=0 00=0 11=1

如:And 192.168.0.1255.255.255.0,先转换为二进制,然后AND每一位

IP 11000000.10101000.00000000.00000001

子网掩码 11111111.11111111.11111111.00000000

得出AND结果 11000000.10101000.00000000.00000000

转换为十进制192.168.0.0,这就是网络标识,

再将子网掩码反取,也就是00000000.00000000.00000000.11111111,与IP AND

得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1

0.0.0.1就是主机标识。要想在同一网段,必需做到网络标识一样。

我们再来看看这个改为默认子网掩码的BIP

IP188.188.0.111188.188.5.222,子网掩码都设为255.255.254.0,在同一网段吗?

先将这些转换成二进制

188.188.0.111 10111100.10111100.00000000.01101111

188.188.5.222 10111100.10111100.00000101.11011110

255.255.254.0 11111111.11111111.11111110.00000000

分别AND,得

10111100.10111100.00000000.00000000

10111100.10111100.00000100.00000000

网络标识不一样(看255.255.254.0转换成二进制后1的数位,所以可以看到不一样),即不在同一网段。

判断是不是在同一网段,你会了吧,下面,我们来点实际的。

一个公司有530台电脑,组成一个对等局域网,子网掩码和IP设多少最合适?

子网掩码不说了,前面算出结果来了11111111.11111111.11111100.00000000,也就是255.255.252.0

B类地址

选一个BIP段,这里就选188.188.x.x

这样,IP的前两段确定的,关键是要确定第三段,只要网络标识相同就可以了。我们先来确定网络号。(我们把子网掩码中的1IP中的?对就起来,0*对应起来,如下:)

255.255.252.0 11111111.11111111.11111100.00000000

188.188.x.x 10111100.10111100.??????**.********

网络标识 10111100.10111100.??????00.00000000

由此可知,?处随便填(只能用01填,不一定全是01),我们就用全填0吧,*处随便,这样呢,我们的IP就是

10111100.10111100.000000**.********,一共有530台电脑,IP的最后一段1254可以分给254台计算机, 530/254=2.086,采用进1法,得整数3,这样,我们确定了IP的第三段要分成三个不同的数字,也就是说,把000000**中的**填三次数字,只能填10,而且每次的数字都不一样,至于填什么,就随我们便了,如000000010000001000000011,转换成十进制,分别是 123,这样,第三段也确定了,这样,就可以把IP分成188.188.1.y188.188.2.y188.188.3.yy处随便填,只要在1254范围之内,并且这530台电脑每台和每台的IP不一样,就可以了。

有人也许会说,既然算法这么麻烦,干脆用AIPA类默认子网掩码得了,偶要告诉你的是,由于AIPA类默认子网掩码的主机数目过大,这样做无疑是大海捞针,如果同时局域网访问量过频繁、过大,会影响效率的,所以,最好设置符合自己的IP和子网掩码^_^

举个实例:比如公司分配到的网段是192.168.1.0/24,首先我要分一个8个主机的网段出来,那么这个网段的首地址是什么?之后,我又要划分一个16个主机的地址出来,那么16个主机的首地址是什么?

划分实例

C类地址例子:

网络地址192.168.10.0;子网掩码255.255.255.192(/26)

1.子网数:2*2=4

2.主机数:26次方-2=62

3.有效子网:256-192=64;所以第一个子网为192.168.10.64,第二个为192.168.10.128

4.广播地址:下个子网-1.所以2个子网的广播地址分别是192.168.10.127192.168.10.191

5.有效主机范围是:所以第一个子网为192.168.10.0,第二个为192.168.10.64,第三个为192.168.10.128,第四个为192.168.10.192

B类地址例子1:

网络地址:172.16.0.0;子网掩码255.255.192.0(/18)

1.子网数:2*2=4

2.主机数:214次方-2=16382

3.有效子网:256-192=64;所以第一个子网为172.16.64.0,最后1个为172.16.128.0

4.广播地址:下个子网-1.所以2个子网的广播地址分别是172.16.127.255172.16.191.255

5.有效主机范围是:第一个子网的主机地址是172.16.64.1172.16.127.254;第二个是172.16.128.1172.16.191.254

B类地址例子2:

网络地址:172.16.0.0;子网掩码255.255.255.224(/27)

1.子网数=211次方-2=2046(因为B类地址默认掩码是255.255.0.0,所以网络位为8+3=11)

2.主机数:25次方-2=30

3.有效子网:256-224=32;所以第一个子网为172.16.0.32, 最后1个为172.16.255.192

4.广播地址:下个子网-1.所以第一个子网和最后1个子网的广播地址分别是172.16.0.63172.16.255.223

5.有效主机范围是:第一个子网的主机地址是172.16.0.33172.16.0.62;最后1个是172.16.255.193172.16.255.223

原创文章,作者:wangdongxu,如若转载,请注明出处:http://www.178linux.com/74584

(1)
wangdongxuwangdongxu
上一篇 2017-05-02 08:48
下一篇 2017-05-02 11:08

相关推荐

  • 2016-08-18作业

    斐波那契数列 fibonacciSequenceFun.sh #!/bin/bash function fibonacci_sequence {   if [ $1 -eq 0 ]; then     echo 0      elif [ $1 -eq 1 ]; then    …

    Linux干货 2016-09-19
  • 编译安装LAMP

    编译安装LAMP (1) 系统环境:CentOS 6, 7     CentOS 6:apr, apr-util的版本为1.3.9,不适用于httpd-2.4;     CentOS 7:apr, apr-util的版本为1.4+, (2) 开发环境…

    Linux干货 2016-11-03
  • Linux系统上获取命令的帮助信息方法

    当我们在操作linux时忘记相关命令的用法时,可以使用man 命令或者命令 -h来查询该命令的用法; man文档共有9个章节 1:所有用户可以操作的指令或可执行文件 2:系统核心调用的函数与工具 3:子调用,常用的函数与函数库 4:设备,硬件文件说明,通常是/dev/的文件 5:文件格式,配置文件或者是某些档案的格式 6:游戏相关 7:杂项,例如linux文…

    Linux干货 2018-03-04
  • 设计模式(五)适配器模式Adapter(结构型)

    1. 概述:          接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。         例子1:iphone…

    Linux干货 2015-06-25
  • 每日一练 —8.4 文本处理工具,正则表达式

    练习 1 、找出ifconfig 命令结果中本机的所有IPv4 地址 2 、查出分区空间使用率的最大百分比值 3 、查出用户UID 最大值的用户名、UID 及shell 类型 4 、查出/tmp 的权限,以数字方式显示 5 、统计当前连接本机的每个远程主机IP 的连接数,并按从大到小排序   6,显示/proc/meminfo文件中以大写或小写s开…

    Linux干货 2016-08-15
  • 条件测试与基础运算

    变量类型: 整形 数值型 字符型 byte boolen 单精度 双精度 变量种类: 环境变量– 对所有进程有效 本地变量– 仅对当前shell有效 局部变量– 仅在函数中的某一段有效 位置变量– $1,$2,$3,$4 特殊变量– $?,$0,$*,$@,$#,$$ 变量命名法则: 1.不能出现程…

    Linux干货 2017-04-16