P地址及子网划分的好方法

这个问题经常碰到,但每次都要考虑下,浪费时间。今天在网上看了一篇比较好的划分思路的文章,感觉不错。原贴找不到了,就不贴地址了。

下面是权威的子网划分方法,希望对大家有用:

如何划分子网

为了提高IP地址的使用效率,引入了子网的概念。将一个网络划分为子网:采用借位的方式,从主机位最高位开始借位变为新的子网位,所剩余的部分则仍为主机位。这使得IP地址的结构分为三级地址结构:网络位、子网位和主机位。这种层次结构便于IP地址分配和管理。它的使用关键在于选择合适的层次结构--如何既能适应各种现实的物理网络规模,又能充分地利用IP地址空间(即:从何处分隔子网号和主机号)。

 

子网掩码的作用

简单地来说,掩码用于说明子网域在一个IP地址中的位置。子网掩码主要用于说明如何进行子网的划分。掩码是由32位组成的,很像IP地址。对于三类IP地址来说,有一些自然的或缺省的固定掩码。

 

如何来确定子网地址

如果此时有一个I P地址和子网掩码,就能够确定设备所在的子网。子网掩码和IP地址一样长,用32bit组成,其中的1表示在IP地址中对应的网络号和子网号对应比特,0表示在IP地址中的主机号对应的比特。将子网掩码与IP地址逐位相“与”,得全0部分为主机号,前面非0部分为网络号。

要划分子网就需要计算子网掩码和分配相应的主机块,尽管采用二进制计算可以得出结论,但采用十进制计算方法看起来要比二进制方法简单许多,经过一番观察和总结,我终于得出了子网掩码及主机块的十进制算法。

首先要明确一些概念:

类范围:IP地址常采用点分十进制表示方法X.Y.Y.Y,在这里

X=1--126时称为A类地址;

X=128--191时称为B类地址;

X=192--223时称为C类地址;

如10.202.52.130因为X=10在1--126范围内所以称为A类地址

类默认子网掩码:A类为 255.0.0.0

B类为 255.255.0.0

C类为 255.255.255.0

当我们要划分子网用到子网掩码M时,类子网掩码的格式应为

A类为 255.M.0.0

B类为 255.255.M.0

C类为 255.255.255.M

M是相应的子网掩码如:255.255.255.240

十进制计算基数:256,等一下我们所有的十进制计算都要用256来进行。

几个公式变量的说明:

Subnet_block:可分配子网块大小,指在某一子网掩码下的子网的块数。

Subnet_num:实际可分配子网数,指可分配子网块中要剔除首、尾两块,这是某一子网掩码下可分配的实际子网数量,它等于Subnet_block-2。

IP_block:每个子网可分配的IP地址块大小。

IP_num:每个子网实际可分配的IP地址数,因为每个子网的首、尾IP地址必须保留(一个为网络地址,一个为广播地址),所以它等于IP_block-2,IP_num也用于计算主机段

M:子网掩码(net mask)。

它们之间的公式如下:

M=256-IP_block

IP_block=256/Subnet_block,反之Subnet_block=256/IP_block

IP_num=IP_block-2

Subnet_num=Subnet_block-2

2的冥数:要熟练掌握2^8(256)以内的2的冥代表的十进制数,如128=2^7、64=2^6…,这可使我们立即推算出Subnet_block和IP_block数。

现在我们举一些例子:

一、 已知所需子网数12,求实际子网数

解:这里实际子网数指Subnet_num,由于12最接近2的冥为16(2^4),即 Subnet_block=16,那么Subnet_num=16-2=14,故实际子网数为14。

二、 已知一个B类子网每个子网主机数要达到60x255(约相当于X.Y.0.1--X.Y.59.254的数量)个,求子网掩码。

解:1、60接近2的冥为64(2^6),即,IP_block=64

2、子网掩码M=256-IP_block

=256-64=192

3、子网掩码格式B类是:255.255.M.0.

所以子网掩码为:255.255.192.0

三、 如果所需子网数为7,求子网掩码 (仔细看这里,和我们考试的差不多)

解:1、7最接近2的冥为8,但8个Subnet_block因为要保留首、尾2个子网块,即 8-2=6<7,并不能达到所需子网数,所以应取2的冥为16,即Subnet_block=16

2、IP_block=256/Subnet_block=256/16=16

3、子网掩码M=256-IP_block=256-16=240。

四、 已知网络地址为211.134.12.0,要有4个子网,求子网掩码及主机段。

解:1、211.y.y.y是一个C类网,子网掩码格式为255.255.255.M

2、4个子网,4接近2的冥是8(2^3),所以Subnet_block=8

Subnet_num=8-2=6

3、IP_block=256/Subnet_block=256/8=32

4、子网掩码M=256-IP_block=256-32=224

5、所以子网掩码表示为255.255.255.224

6、因为子网块(Subnet_block)的首、尾两块不能使用,所以可分配6个子网块(Subnet_num),每块32个可分配主机块(IP_block)

即:32-63、64-95、96-127、128-159、160-191、192-223

首块(0-31)和尾块(224-255)不能使用

7、每个子网块中的可分配主机块又有首、尾两个不能使用(一个是子网网络地址,一个 是子网广播地址),所以主机段分别为:

33-62、65-94、97-126、129-158、161-190、193-222

8、所以子网掩码为255.255.255.224

主机段共6段为:211.134.12.33--211.134.12.62

211.134.12.65--211.134.12.94

211.134.12.97--211.134.12.126

211.134.12.129--211.134.12.158

211.134.12.161--211.134.12.190

211.134.12.193--211.134.12.222

可以任选其中的4段作为4个子网。 

 

注:还有几种子网 只是我们一般不用 不只有ABC三种 

如何划分子网及确定子网掩码

 

在动手划分之前,一定要考虑网络目前的需求和将来的需求计划。

 

划分子网主要从以下方面考虑:

 

1.网络中物理段的数量(即要划分的子网数量)

 

2.每个物理段的主机的数量

 

确定子网掩码的步骤:

 

第一步:确定物理网段的数量,并将其转换为二进制数,并确定位数n。如:你需要6个子网,6的二进制值为110,共3位,即n=3;

 

第二步:按照你ip地址的类型写出其缺省子网掩码。如C类,则缺省子网掩码为11111111.11111111.11111111.00000000;

 

第三步:将子网掩码中与主机号的前n位对应的位置置1,其余位置置0。若n=3且为

 

C类地址:则得到子网掩码为11111111.11111111.11111111.11100000化为十进制得到255.255.255.224

 

B类地址:则得到子网掩码为11111111.11111111.11100000.00000000化为十进制得到255.255.224.0

 

A类地址:则得到子网掩码为11111111.11100000.00000000.00000000化为十进制得到255.224.0.0

 

另:由于网络被划分为6个子网,占用了主机号的前3位,若是C类地址,则主机号只能用5位来表示主机号,因此每个子网内的主机数量=(2的5次方)-2=30,6个子网总共所能标识的主机数将小于254,这点请大家注意!

/* * 基于双向链表实现双端队列结构 */ package dsa; public class Deque_DLNode implements Deque { protected DLNode header;//指向头节点(哨兵) protected DLNode trailer;//指向尾节点(哨兵) protected int size;//队列中元素的数目 //构造函数 public Deque_DLNode() { header = new DLNode(); trailer = new DLNode(); header.setNext(trailer); trailer.setPrev(header); size = 0; } //返回队列中元素数目 public int getSize() { return size; } //判断队列是否为空 public boolean isEmpty() { return (0 == size) ? true : false; } //取首元素(但不删除) public Object first() throws ExceptionQueueEmpty { if (isEmpty()) throw new ExceptionQueueEmpty("意外:双端队列为空"); return header.getNext().getElem(); } //取末元素(但不删除) public Object last() throws ExceptionQueueEmpty { if (isEmpty()) throw new ExceptionQueueEmpty("意外:双端队列为空"); return trailer.getPrev().getElem(); } //在队列前端插入新节点 public void insertFirst(Object obj) { DLNode second = header.getNext(); DLNode first = new DLNode(obj, header, second); second.setPrev(first); header.setNext(first); size++; } //在队列后端插入新节点 public void insertLast(Object obj) { DLNode second = trailer.getPrev(); DLNode first = new DLNode(obj, second, trailer); second.setNext(first); trailer.setPrev(first); size++; } //删除首节点 public Object removeFirst() throws ExceptionQueueEmpty { if (isEmpty()) throw new ExceptionQueueEmpty("意外:双端队列为空"); DLNode first = header.getNext(); DLNode second = first.getNext(); Object obj = first.getElem(); header.setNext(second); second.setPrev(header); size--; return(obj); } //删除末节点 public Object removeLast() throws ExceptionQueueEmpty { if (isEmpty()) throw new ExceptionQueueEmpty("意外:双端队列为空"); DLNode first = trailer.getPrev(); DLNode second = first.getPrev(); Object obj = first.getElem(); trailer.setPrev(second); second.setNext(trailer); size--; return(obj); } //遍历 public void Traversal() { DLNode p = header.getNext(); while (p != trailer) { System.out.print(p.getElem()+" "); p = p.getNex
### IP地址子网掩码的关系 IP地址子网掩码共同决定了设备在网络中的位置。IP地址用于唯一标识网络上的每一台设备,而子网掩码则定义了该IP地址中哪些部分表示网络地址,哪些部分表示主机地址。 #### 子网掩码的作用 子网掩码通过指定IP地址的哪一部分属于网络地址,哪一部分属于主机地址划分网络。通常情况下,子网掩码由连续的一串1后面跟着若干个0组成,在二进制形式下表现得尤为明显[^1]。 #### 计算方法 对于给定的一个IPv4地址及其对应的子网掩码,可以通过按位逻辑AND操作得出网络地址: - 将IP地址转换成二进制数; - 对应地也将子网掩码转为二进制; - 执行逐位相乘(即逻辑AND)运算;所得的结果就是网络地址。 例如,当处理`16.158.165.91/22`这样的CIDR记法时,意味着前22位被用来作为网络ID,剩下的10位留给主机编号使用。具体来说: ```plaintext I P 地址 : 00010000 . 10011110 . 10100101 . 01011011 (十进制: 16.158.165.91) 子网掩码 : 11111111 . 11111111 . 11111100 . 00000000 (/22 表示有22个'1') 执行 AND 运算后的结果(网络地址): 00010000 . 10011110 . 10100100 . 00000000 (十进制: 16.158.164.0)[^4] ``` #### 主机数量与范围 基于上述例子,由于最后两个八位组中有两位未参与构成网络地址,因此可以容纳\(2^{10}-2=1022\)个有效主机地址(减去全零代表网络本身以及全部置一代表广播地址)。所以整个网段的有效IP地址是从`16.158.164.1`到`16.158.167.254`不等[^3]。 #### 网络配置建议 为了确保良好的性能并简化管理,应该合理规划子网大小以适应预期连接至同一局域网内的最大可能终端数目。同时也要考虑到未来增长的需求,预留足够的空间以便扩展而不必频繁调整现有结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值