asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0

[转]网络基础知识讲座之二:理解子网和CIDR

http://www.cppblog.com/jerysun0818/archive/2006/05/28/7782.html

欢迎光临此网络讲座第二讲。这一次,我们将学习有关子网和CIDR(无类域间路由)的知识。我们希望能够以比某些图书提供的更容易管理的方式学习这些知识。

  让我们先搞清楚一件事情:在子网中是没有“类别”的。在以前,网络分为A类、B类和C类。这些网络只能分为相等的几部分,因此现在我们引入了可变长度子网掩码(VLSM)来解决这个问题。老类别的C类网络是一个24位网络地址,B类网络是一个16位网络地址,A类网络是一个8位网络地址(如果你不清楚这个含义,请参阅“理解IP地址”那一讲)。这就是你需要了解的有关网络类别的全部内容。这些网络类别现在已经不存在了。

  一个IP地址由一个主机部分和一个网络部分组成。与子网掩码配合使用,你可以确定这个地址中哪一个部分是网络部分、这个网络有多大和网络开始的地方在哪里。操作系统需要知道这些信息,以便确定本地子网使用什么IP地址以及哪些地址属于外网并需要一台路由器来访问那些地址。相邻的路由器也需要知道这个子网有多大,以便这些路由器仅向这个方向发送合适的通信。一个网络地址中主机部分与网络部分的划分完全是由子网掩码确定的。

  CIDR(发音为“cider”的网络地址使用网络/子网掩码的风格。这个IP地址/子网掩码的组合能告诉你很多信息:

  网络部分/主机部分

  0000000000000000/0000000000000000

  上述32位字符串代表一个16位网络,因为这个地址中的16位被掩盖了。

  在本文中的例子(和现实世界)中,某些子网掩码被反复提及。这些子网掩码本身并不特殊。子网地址就是一个简单的32位字符串,其中有任何位数被掩盖(MASK)。不过,使用一个常用的子网掩码(如24位网络地址)开始研究对于记忆和理解关于子网的概念和划分非常有利。

  让我们先看一下个标准的子网划分表,这个表中也包括了一些有趣的其它信息:

子网掩码位数
24位子网数量
一个子网的地址数量
对主机部分的位挪用
/24
1
256
0
/25
2
128
1
/26
4
64
2
/27
8
32
3
/28
16
16
4
/29
32
8
5
/30
64
4
6
/31
128
2
7

  由于是二进制数字,这使一个31位网络有两个可用的IP地址。设想一下这个子网:2.2.2.0/31。如果我们以二进制来表达这个网络地址,这个地址看起来是这样的:

  00000010.00000010.00000010.00000000 (2.2.2.0)

  11111111.11111111.11111111.11111110 (31)

  子网掩码“掩盖”被网络部分使用的位数。这意味着被掩盖的位数将用于网络地址部分。可供主机地址使用的位数等于1。这个数字可以是一个0或者一个1。这就导致了两个可用的IP地址,就像上面的表格显示的一样。另外,从上面的表格中可以看到,子网掩码(从主机部分挪用的)位数每增加一,子网中可用的地址数量就被削减一半。

现在让我们来分析“192.168.0.200/26”的广播地址、网络地址和掩码。这个IP地址的掩码很简单:为255.255.255.192(26位子网掩码的含义是主机用6位,2的6次方等于64,255减去64减1等于192)。你能够在网络上查到子网地址表。这个表还能为你列出所有的信息。但是,我们更感兴趣地是教人们理解这里所发生的事情。这个子网掩码可以告诉你,这个网络地址中惟一需要我们关心的部分是最后一个字节:广播地址和网络地址的开头都是192.168.0。

  搞清楚这最后一个字节的含义很像是为一个划分一个24位网络。但是,如果这个提示对你没有帮助,你甚至不需要考虑这个问题。每一个26位地址的网络都有64台主机。这个网络的地址范围是从.0至.63、从.64至.127,从.128至.191,以及从.192至.255。我们的地址192.168.0.200/26在.192至.255网段中。因此,这个网络的地址是192.168.0.192/26。这个广播地址就更简单:192用二进制表示是11000000。取最后的6位数(这些字节被掩码“关闭”了),把这些字节“打开”,你得到了什么?192.168.0.255。来看一下你是否已经理解了这一切,现在计算192.168.0.44/26的网络地址和广播地址。(网络地址:192.168.0.0/26;广播地址:192.168.0.63)。

  一开始这些地址是很难一下子就看出来。这时制作一个表格会很有帮助。如果你计算出你要每一个子网有6台主机(包括不能使用的网络和广播地址是8台主机),你就可以制作下面这个表格。下面是2.2.2.0/29、2.2.2.8/29、2.2.2.16/29以及最后一个子网是2.2.2.249/29。

子网编号
网络地址
第一个IP
最后一个IP
广播地址
1
2.2.2.0
2.2.2.1
2.2.2.6
2.2.2.7
2
2.2.2.8
2.2.2.9
2.2.2.14
2.2.2.15
3
2.2.2.16
2.2.2.17
2.2.2.22
2.2.2.23
32
2.2.2.249
2.2.2.250
2.2.2.254
2.2.2.255

  实际上,你很可能偶尔发现这样的网络。这种网络划分为三个26位网络地址,并且最后一个26位网络地址分为两个27位网络地址。如果你已经能够制作上述表格将会更容易理解这个问题。

  这就是你需要知道的全部东西。在16位网络地址和24位网络地址范围内使用更大的子网是比较复杂的。但是,原则是一样的。都是一个32位地址和一个子网掩码。然而,一定要认识到子网的使用是受到某些限制的。我们不能分配以10.1.0.32开头的26位网络地址。如果我们把10.1.0.32/26的IP地址和子网掩码发送给大多数操作系统,操作系统只会认为我们发送的起始地址是10.1.0.0/26。这是因为26位地址空间需要64个地址,而子网划分会从这个位数的自然分界线开始。因些,如果在上述表格中,你把某子网从2.2.2.3/29开始?实际的结果却是2.2.2.0/29。

  这些复杂的问题确实需要一个简明的例子。请记住,当你从这个网络主机部分提取另一位以便创建一个更大的子网掩码时,IP地址数量在一个子网内是如何被减少一半的。这个原则在相反的情况下也发挥作用。如果我们有一个拥有128台主机的25位网络地址,并且从网络(掩码)部分挪用一位,我们现在就有一个拥有256台主机的24位网络地址。使用搜索引擎Google在网络上搜索“subnet table”(子网表),可以立即看到子网掩码与网络大小的关系。如果一个16位网络地址拥有65535个地址,一个17位网络地址拥有的网络地址将减少一半,一个15位网络地址拥有的网络地址将提高一倍。这是非常令人激动的。实践,实践,再实践。这是让你理解这个原理的好方法。不要忘记,所有的问题都可以归结到网络的位数问题。

  如果你要更多地了解子网,下一步应该是阅读一些路由协议。我们将很快介绍一些路由协议。不过,在这个教程的下一讲网络中,我们先开始我们的OSI模型之旅。

  小结

  •CIDR IP地址有一个主机部分和一个网络部分。而子网掩码指定网络部分使用的位数,地址中这些位将不会改变。

  •子网是通过简单地在32位数字中上下移动网络与主机部分的分界来创建。

  •如果你从已知的子网掩码开始学习,复杂的地址是很容易理解的。一个17位网络地址的数量是一个16位网络地址的一半。16位网络中有6.5万个地址。

posted on 2006-05-28 20:02 Jerry Cat 阅读(298) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理



<2006年5月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(7)

随笔档案

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜