跳至主要内容

IP地址子网掩码位数换算方法及解释子网掩码的作用

IP地址子网掩码:
子网位    /主机位         子网掩码           子网最大数       /主机最大数 
2         /22         /10 | 255.192.0.0           2           /4194302 
3         /21         /11 | 255.224.0.0           6           /2097150 
4         /20         /12 | 255.240.0.0           14          /1048574 
5         /19         /13 | 255.248.0.0           30          /524286 
6         /18         /14 | 255.252.0.0           62          /262142 
7         /17         /15 | 255.254.0.0           126         /131070 
8         /16         /16 | 255.255.0.0           254         /65536 
9         /15         /17 | 255.255.128.0         510         /32766 
10        /14         /18 | 255.255.192.0         1022        /16382 
11        /13         /19 | 255.255.224.0         2046        /8190 
12        /12         /20 | 255.255.240.0         4094        /4094 
13        /11         /21 | 255.255.248.0         8190        /2046 
14        /10         /22 | 255.255.252.0         16382       /1022 
15        /9          /23 | 255.255.254.0         32766       /510 
16        /8          /24 | 255.255.255.0         65536       /254 
17        /7          /25 | 255.255.255.128       131070      /126 
18        /6          /26 | 255.255.255.192       262142      /62 
19        /5          /27 | 255.255.255.224       524286      /30 
20        /4          /28 | 255.255.255.240       1048574     /14 
21        /3          /29 | 255.255.255.248       2097150     /6 
22        /2          /30 | 255.255.255.252       4194302     /2 


子网掩码的快速算法      

大家都应该知道2的0次方到10次方是多少把?也给大家说一下,分别是:
  1 2 4 8 16 32 64 128 256 512 1024。
  如果你希望每个子网中只有5个ip地址可以给机器用,那么你就最少需要准备给每个子网7个ip地址,因为需要加上两头的不可用的网络和广播ip,所以你需要选比7多的最近的那位,也就是8,就是说选每个子网8个ip。好,到这一步,你就可以算掩码了,这个方法就是:最后一位掩码就是256减去你每个子网所需要的ip地址的数量,那么这个例子就是256-8=248,那么算出这个,你就可以知道那些ip是不能用的了,看:0-7,8-15,16-23,24-31依此类推,写在上面的0、7、8、15、16、23、24、31(依此类推)都是不能用的,你应该用某两个数字之间的IP,那个就是一个子网可用的IP,怎么了?是不是不相信?太简单了。
  我再试验一下,就拿200台机器分成4个子网来做例子吧。
  200台机器,4个子网,那么就是每个子网50台机器,设定为192.168.10.0,C类的IP,大子网掩码应为255.255.255.0,对巴,但是我们要分子网,所以按照上面的,我们用32个IP一个子网内不够,应该每个子网用64个IP(其中 62位可用,足够了吧),然后用我的办法:子网掩码应该是256-64=192,那么总的子网掩码应该为:255.255.255.192。不相信?算算:0-63,64-127,128-191,192-255,这样你就可以把四个区域分别设定到四个子网的机器上了,是不是很简单?不需要软件算了吧。


/24就是255.255.255.0~子网掩码哦。

一个10进制的255~就是2进制的8个1

三个255.255.255`就是24个1~所以写24


比如我ip是:218.77.26.114/255.255.255.192应该怎么换算成缩略子网掩码方式  


255.255.255.192 换算成二进制:
11111111.11111111.11111111.11000000

前三组都是8bit, 第四组 192 -> 11000000 表示2bit (左起11) 用做subnet(子网)
那末这个子网掩码中共有8+8+8+2 = 26 bit 是用作网络标识。

结果:
218.77.26.144/255.255.255.192 => 218.77.26.144/26


--
Alex Tu
-----------------------------------------------------------
ShangHai,China

评论

此博客中的热门博文

Python学习笔记20100117

映射list   Dictionary 是用{}. list 是一那个[]. turple是用() 当你定义过dictionary后,你可以使用d.keys(), d.values(),d.items()将定义后的时候分别显示出来 当然可以将list里的值加减乘除,也可以如一般的定义直接重新复制这个list. 链接与分割字符串的 li=";", join(li) 则显示的就是 分隔符为;的数 如果使用li=li.split(";")则将刚刚;的分隔符删除,而split里也可定义域,如li.split(";",1)   自省 <---这是啥 之前在使用的时候发觉有些书本上的模块不能调用,很多是py脚本定义过的函数。 下载该脚本s,然后上传至指定位置。 >>>import sys >>>sys.path >>>sys.path.append("绝对位置")然后就能调用这些脚本和参数了。 删除 >>>sys.path.pop() 定义一个参数是 def info(test, test1=10.test2=12): info是函数名,test是必备参数,因为没有定义值,test1和test2是可选参数,定义了初始值   以上是外部函数的调用,下面转到内部函数 内部函数有type,str,dir及其他   ---type 返回任意字符的类型,模块也可以。types模块 >>> type(1) <type 'int'> >>> li=[] >>> type(li) <type 'list'> >>> import odbchelper >>> type(odbchelper) <type 'module'> >>> type(sys) <type 'module'> >>> import types ...

Python学习笔记20100128

methodList = [method for method in dir(object) if callable(getattr(object, method))] ###插一句, ifconfig pcn0 unplumb 去禁solaris的网卡plumb起网卡   and, or  已经and-or一起用。 and 两者为真,print第二个数,一个为假一个为真返回假,三者为真返回最后一个真。 or 两个为真,返回第一个, 一个为假一个为真返回真,三者为假返回最后一个假   lambda可快速定义最小值函数   g = lambda x:x*2 g(3) 6 (lambda x:x*2)(3)   doc string print getattr(object,mothod).__doc__   ljust ljust 用空格填充字符串以符合指定的长度。info 函数使用它生成了两列输出并将所有在第二列的 doc string 纵向对齐。 如果小于的话不会从中截断   -----面向对象 首先导入,你可以选择import module or from module import module 如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import。 如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import。 如果模块包含的属性和方法与你的某个模块同名,你必须使用 import module 来避免名字冲突   -----类的定义 class Lofs    pass   这个类的名字是 Loaf,它没有从其它类继承。 类名通常是第一个字母大写,如:EachWordLikeThis,但这只是一个习惯,不是一个必要条件。   这个类没有定义任何方法或属性,但是从语法上,需要在定义中有些东西,所以你使用 pass。这是一个 Python 保留字,仅仅表示 “向前走,不要往这看”。它是一条什么都不做的语句,当你删空函数或类时,它是一个很好的占位符。   你可能猜...

Back to Blog again

     My last blog was almost 6 years again.  lots of things happening those years. like marriage, and move to another country, simply relocation, something is very big in my life.      Back to now,  I guess it is a very good time to start with the blog again. no matter daily life or the tech parts.      These blog may or will contains various languages, Chinese, English or Few Japanese. The first thing, I change the profile to Kamata life, Kamata is Japanese words. "鎌田"  as Kanji. why this change happened, due to we will move from Tamagawa "玉川" to Kamata very soon. I hope I can start to write this not daily, but I hope I can do this continuously.