请熟悉TCP/IP协议和对子网掩码有见解的高手们进来一下下,小弟有困惑
发布网友
发布时间:2022-05-01 03:19
我来回答
共4个回答
热心网友
时间:2023-10-03 02:04
以下答案为本人原创,绝非复制。分两部分来回答你的疑问。
一、子网掩码的含义和根据子网掩码划分子网
一个IP地址必然属于某一个网络,或者叫子网。子网掩码就是用来指定某个IP地址的网络地址的,换一句话说,就是用来划分子网的。
例如,一个A类网络可以容纳16777214台主机。但是在实际运用中,不可能把一个A类网络只用于一个子网,因为那样管理起来很不方便,也会出现广播风暴等种种问题,所以需要根据实际需求把它划分为若干个较小的子网。一个B类网络可以容纳65534台主机,往往也是需要划分子网的。即便一个小型企业内部,为了部门之间的职能的需要,配置那些电脑可以互相访问,哪些不能互相访问,就需要通过划分子网的方法来实现。
子网划分的问题看起来很复杂,其实也不是很复杂。只要把IP地址的位数、网络位数、主机位数、子网掩码的位数这几个概念搞清楚,就觉得很简单了。
IP地址位数=网络位数+主机位数=32位。子网掩码的位数就是网络的位数。
A类网络的网络位数是8位,子网掩码就是11111111.00000000.00000000.00000000,换算成二进制表示为255.0.0.0。
B类网络的网络位数是16位,子网掩码就是11111111.11111111.00000000.00000000,换算成十进制表示为255.255.0.0。
C类网络的网络位数是24位,子网掩码就是11111111.11111111.11111111.00000000,换算成十进制表示为255.255.255.0。
A类网络加长子网掩码到16位就把一个A类网络划分为256个B类网络同样大小的网络,再加长到24位就又把每个B类大小的子网划分为256个C类网络大小的子网。就是这个道理。一个大的网络,通过把子网掩码加长,使网络位多了,也就是网络数目多了,子网就多了。
当然你也可以不划分为256个子网,而划分为128个,64个,32个,16个,8个,4个,2个。
一个B类网络的默认子网掩码为255.255.0.0,你如果想把它划分为2个子网,网络位数就成立17位,也就是说子网掩码就变成了255.255.128.0;想划分为16个子网,因为16是2的4次方,所以网络位数加4变成了20位,也就是说子网掩码加长,成了20位,就是255.255.240.0。依此类推。
一个C类网络的默认子网掩码为24位的,那么主机位=32-24=8位,2的8次方等于256,所以一个C类网络的IP地址数量(包括网络地址和广播地址)为256个。
但是你仍然可以通过加长子网掩码的手段,把一个C类子网划分为更多的子网。划分的子网数必定是2的n次方个,每个子网的IP数量必定是2的(8- n)次方个。
子网掩码加长1位,划分2个子网;加长2位,划分4个子网,加长6位,划分2的6次方个,也就是64个子网。
子网掩码的1的个数表示网络位的个数,简单地来说,网络位是不属于你控制的,是上级主管给你的,给你多少就是多少。但是主机位是你可以控制的,你可以把它缩短,把缩短出来的位数加到网络位中,这样网络位就长了,子网数就多了,相应地每个子网的IP数量就少了。
记住下面的公式,遇到再复杂的子网划分问题也难不倒你了。
IP地址位数=32
网络位+主机位=32
子网掩码加长n位,则在当前子网基础上划分为2的n次方个子网。每个子网的IP地址数量=2^(32-划分前子网掩码位数-n)
二、如何根据子网划分的目标计算子网掩码
简单来说,子网掩码就是网络地址的位数。
一个IP地址一共有32位,其中靠前的某些位表示网络地址,后面的某些位表示主机位。
网络位数+主机位数=IP地址位数=32
知道了这个道理,计算子网掩码的方法就是:已知子网内IP数的多少,求出主机位的位数,用32减去主机位数就等于网络位数,也就是子网掩码。
举最简单的例子。一个C类网络,包括256个主机位置,256是2 的8次方,所以主机位是8,那么网络位就是32-8=24,也就是说子网掩码是24位,用二进制表示就是11111111.11111111.11111111.00000000,换算成十进制就是255.255.255.0
再比如一个C类网络划分的子网,每个网络主机IP数是32, 而32是2的5次方,所以主机位是5,那么网络位就是32-5=27,也就是说子网掩码是27位,用二进制表示就是11111111.11111111.11111111.11100000,换算成十进制就是255.255.255.224
再比如一个B类网络划分的子网,每个网络主机IP数是1024, 而1024是2的10次方,所以主机位是10,那么网络位就是32-10=22,也就是说子网掩码是22位,用二进制表示就是11111111.11111111.11111100.00000000,换算成十进制就是255.255.252.0
子网划分是通过改变子网掩码的位数来实现的。比如一个C类IP地址,默认子网掩码是24位的,二进制表示是11111111.11111111.11111111.0000000,换算成10进制的就是255.255.255.0。
如果是这样的子网掩码,后面的8位都可以用来做为主机的位置,2 的8次方等于256,一共有256个IP位置,因为有2个不能用,所以可用的主机位置为254个。
但是你要把这样一个地址划分成2个子网,就要从主机位里拿出一位来作为网络地址,网络地址就成了25位了。相应地主机位就成了7位了,2 的7次方等于128,一共有126个地址可用。
这是从正向来说的,就是已知要划分的子网数,求每个子网的主机数。但是在实际工作中往往是先知道每个子网的主机数,让你划分子网。其实也很简单。
首先你算一下主机数更接近于2 的几次方,那么主机位数就是几位。32减去主机位就是网络位。
举例说明。假如给你一个C类IP地址192.168.0.0。假如你想划分2个子网,一个里面有100台电脑,另一个有50台电脑。
100大于2的6次方,小于2的7次方,所以主机位数取7位。那么网络位数就是32-7=25位。25位的子网掩码11111111.11111111.11111111.10000000 换算成10进制的就是
255. 255. 255. 128,这就是第一个子网的子网掩码,网络号为192.168.0.0/25,网络地址192.168.0.0,主机地址192.168.0.1~192.168.0.126,广播地址192.168.0.127
50大于2的5次方,小于2的6次方,所以主机位数取6位。那么网络位数就是32-6=26位。26位的子网掩码11111111.11111111.11111111.11000000 换算成10进制的就是
255. 255. 255. 192,这就是第二个子网的子网掩码,网络号为192.168.0.128/26,网络地址192.168.0.128,主机地址192.168.0.129~192.168.0.190,广播地址192.168.0.191
注:以上的这些内容其实是我把以前我给其他网友的3个提问的回答拼接到一起又整理了一下搞出来的。可能看起来比较乱,对不起了。你搜搜网上的那些回答,比我的更乱。
子网掩码和子网划分的概念和方法,对于不会的人来说,特别难。一旦你会了,又会觉得特别简单。也许你看了我上面的回答还是云里雾里,看着很头大。但说不定哪一天你就豁然开朗了,又会觉得这些东西很简单,根本不用写那么多。
热心网友
时间:2023-10-03 02:04
这个就是子网掩码的知识了,如果是255就代表相同,比如子网掩码是255.255.255.0,那么192.168.1.1和192.168.2.1就不是一个,如果修改成255.255.0.0就是一个了。还有分成不同段的就是对最后一位进行修改了,你将255分成8个1,8个1的时候就是255,范围是0-255.修改7个1就是254,两个网段不是一个范围,6个1是252,四个是一个网段,计算方法是我自己理解的,八个1中,你缺几个1就是2的几次幂,有条件的话可以自己去尝试一下,将255拆开看就明白了。
热心网友
时间:2023-10-03 02:05
将十进制换算成2进制之后做“与”预算……也就是同为“1”的时候时候才是1……所以更改一下子网掩码,就可将子网分开!
热心网友
时间:2023-10-03 02:05
子网掩码的计算是被定义的,这个没法跟你解释。
但是感觉你对不同的子网有些疑惑。
不同子网之间是不能通信的。
原因在于数据在发送之前需要封装,封装时会根据子网掩码判断目的IP所在的网段,
若不在一个网段,那么该数据帧会交给网关,而不是直接发往目的主机。
若在一个网段,那么该数据帧会直接发往目的主机。
所以子网掩码可以被源主机用来判断目的主机是否和自己处于一个网段,希望你能理解。
另外子网掩码划分网段后,可以为路由提供排障的便利,以及逻辑路由寻址提供便利。