Chinaunix首页 | 论坛 | 博客
  • 博客访问: 319043
  • 博文数量: 95
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 840
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-01 13:05
文章分类

全部博文(95)

文章存档

2009年(8)

2008年(87)

我的朋友

分类:

2008-06-04 17:48:27

12.3.4 地址类型

IP层和链路层上都定义了几种不同类型的地址:

  单播代表一台主机(实际上是网络接口)的地址;

  多播标识一组主机的地址;

  广播包括本地网络上所有主机的地址。

多播寻址有助于实现视频会议系统这样的应用,在这些应用中,同一组包必须发送给所有的参加者。IGMPInternet Group Management Protocol,网际组管理协议)用于建立和管理主机组,把它们按一个多播目的地来对待。多播IP地址从224239之间的一个字节开始。

广播地址使用一种通配形式的特殊地址(主机部分的二进制位都是1)联络到本地网络上所有主机。

在现如今的Internet上,多播实际上还没有被采用,但正在积极开展几个研究项目。


12.4 IP地址详解

IP地址也叫做Internet地址,它有4字节长,分为网络部分和主机部分。网络部分标识地址所指的逻辑网络,主机部分标识在网络上的一台计算机。

按照惯例,IP地址被写成十进制的数字,每个字节一个数字,各个数字之间用点号隔开。例如,我们的“boulder”这台计算机的IP地址是“128.138.240.1。最左边的字节最重要,它始终是网络部分的成分。

若一个地址的第一字节是127,则表示“环回(loopback)网络”,环回网络是没有实际硬件接口、只有一台主机的虚拟网络。环回地址127.0.0.1始终都指向当前主机。它的符号名称是“localhost”。

一个接口的IP地址和其他参数都可以用ifconfig命令设置。在12.7节有关于ifconfig的详细描述。


IP地址分类

在历史上,IP地 址根据最左边那个字节第一个比特位的不同而进行“分类”。这种分类决定了地址的哪些字节是网络部分,哪些字节是主机部分。现在,路由系统用一个明确的掩码 来指定网络部分,并且可以在地址的任意两个比特位之间进行划分,并不只局限于以字节为界。但是,在没有给出明确划分的时候,仍以传统的分类作为默认值。

A类、B类和C类表示常规的IP地址。D类和E类地址用于多播和研究目的。表12.3介绍了各类地址的特征。一个地址的网络部分用N表示,主机部分用H表示。

12.3                       历史上的Internet地址分类

地址类型

第一个字节a

   

   

A

1126

N.H.H.H

非常早期的网络,或者为DoD(美国国防部)保留

B

128191

N.N.H.H

大型网点,通常要划分子网,以前很难得到

C

192223

N.N.N.H

容易得到,常常成组获得

D

224239

多播地址,不是永久分配的

E

240255

试验地址

a0是特殊值,正规的IP地址第一个字节不用0127为环回地址保留



12.4.2 子网和网络掩码

对于单个物理网络而言,连接100台以上计算机的情况是少见的。所以A类和B类地址(分别允许一个网络上有16 777 21465 534台主机)实际上是相当愚蠢和浪费的。例如,126A类网络占掉了多达一半的可用地址空间。

有这类地址的大多数站点都使用了一种名为子网划分的细分寻址方案,在这个方案里,可以借用地址的主机部分来扩展网络部分。例如,B类地址的4字节通常解释为N.N.H.H。如果子网划分把第3字节分配为网络号,而不是主机号,那么地址就会解释为N.N.N.H。划分子网的这种用法可以把单独一个B类网络地址转变为256个不同的类似C类的网络,每个网络都能支持254台主机。

可以用ifconfig命令把一个明确的“子网掩码”与一个网络接口联系起来,从而影响地址的重新分配。对应一个IP地址网络部分的各个网络掩码位被设置为1,而主机位则设置为0。例如,对N.N.N.H配置的网络掩码是十进制的255.255.255.0,或十六进制的0xFFFFFF00ifconfig通常用一个地址本来的分类来计算出哪些位是属于网络部分的。在明确设置了掩码时,就可以取代这种行为。参考12.7节了解有关ifconfig命令的更多信息。

网络部分和主机部分之间的分界不必落在字节的边界处。但是网络位必须相邻,并且必须在地址的高端

不在字节边界结束的网络掩码解读起来麻烦一些,通常把它们写成/XX的形式,XX是地址的网络部分的比特位数。这在有时叫做CIDRClassless Inter-Domain Routing,无类域间路由)记法。例如,网络地址128.138.243.0/26是指前3字节为128.138.2434个网络中的第1个网络。其他3个网络的第4字节分别是64128192。与这些网络关联的网络掩码是255.255.255.192或者0xFFFFFFC0,二进制为261后接60。图12.3更详细地说明了这些数字间的关系。

12.3  子网掩码基变换

一个/26网络有6个比特(32-266)留下来给主机编号。因为26等于64,所以网络具有64个可用的主机地址。但实际上它只能容纳62台主机,因为全0和全1的主机地址是保留的(它们分别是网络地址和广播地址)。

虽然在脑子里计算这些比特很容易搞混,但通过一些技巧可以简化它。每个网络的主机数目和网络掩码的最后一个字节的数值之和始终为256

最后一个网络掩码字节=256-网络大小

例如,256-64192,它是前一个例子里网络掩码的最后一个字节。另一个算法是,某个实际网络地址(与网络掩码相反)的最后字节必须可以被每个网络上的主机数目整除。在当前的这个例子里就是这样的,最后一个字节分别是064128192,它们都可以被64整除。

在这个例子里,子网网络地址中另外两位可以用数值00011011。这样一来,网络128.138.243.0/24就分成了4/26网络:

  128.138.243.0/26     (十进制0在二进制中是00000000);

  128.138.243.64/26    (十进制64在二进制中是01000000);

  128.138.243.128/26   (十进制128在二进制中是10000000);

  128.138.243.192/26   (十进制192在二进制中是11000000)。

The boldfaced bits of the last byte of each address are the bits that belong to the network portion of that byte.

每个地址的最后一字节中用粗体字显示的位是该字节中属于网络部分的位。

对于一个IP地址(如,128.138.243.100),在没有相关掩码的情况下我们不能给出网络地址和广播地址。表12.4显示了/16(默认为B类地址),/24(一个合理的数值),和/26(地址空间很紧缺时,一个较为实际的数值)的可能情况。

12.4                               IP地址解读

IP地址

子 网 掩 码

网 络 地 址

广 播 地 址

128.138.243.100/16

255.255.0.0

128.138.0.0

128.138.255.255

128.138.243.100/24

255.255.255.0

128.138.243.0

128.138.243.255

128.138.243.100/26

255.255.255.192

128.138.243.64

128.138.243.127

 

Krischan Jodies编写了一个方便的脚本,这个脚本叫做IP计算器(IP Calculator),它可以帮助进行二进制/十六进制/掩码的运算。从可以下载到它。ipcalc显示了您可能应该了解的所有关于一个网络地址及其网络掩码、广播地址、主机方面的知识。网上的版本是个tar的压缩文件,而DebianUbuntu默认就带一个ipcalc的命令行版本。

下面是一些IP计算器输出的例子,可以通过格式提供一点帮助:

 

 

这些输出既给出了易于理解的地址版本,又给出了“剪切和粘贴”的版本。非常酷。

 

Red Hat里有一个程序,也叫做ipcalc,它的功能很差,大多数计算都要假定IP地址是A类、B类或者C类。

 

最初定义IP子网划分的RFCRFC950)不允许使用第一个或者最后一个子网(全为0或者全为1)。在/26网络的例子中,这个规则排除了一半子网:0子网和192子网。除了NovellCisco之外,所有地方都忽略这个RFC(在Cisco早期的IOS操作系统版本中,必须用ip subnet zero命令明确启用子网0。在12.0及其以后的版本中,子网0是默认可用的)。

虽然这个RFC的意图很好,但它却是错误的。不允许子网0出现是因为人们认为如果一个子网的地址与没有划分子网的网络地址相同,不能区分开,就有可能产生混淆。但是事实证明这种担心是没有根据的,现在全0/1子网都得到了广泛应用。不能为全0或全1的应该是主机部分。

网络地址和广播地址从每个网络中占用了两个主机,所以最小的有意义的网络应该有4台主机:两个实际主机通常在一条点对点链路的两端以及网络地址和广播地址。为了使主机有4个值,需要在主机部分有2位,所以这样的网络应该是网络掩码为255.255.255.252或者0xFFFFFFFC的一个/30网络。不过,/31网络被当作一种特例(参考RFC3021),它没有网络或者广播地址,两个地址都供主机使用,它的网络掩码是255.255.255.254

虽然网络上的主机可能会同意使用作了子网划分的地址,但世界上的其他地方并不知道这一点,于是仍然按照原本的IP地址类处理地址。在我们给出的128.138.243.100这个例子中,并没有向外面的世界通告每个子网,而只需通告到单个B类网络就可以了。一旦一个包到达了划分了子网的区域,它的目的地址就会用本地网络掩码重新解释,从而发现实际的目标网络,并把这个包路由至它的确切目的地。



以前曾经允许N.N.H.N这样的配置,但并不普遍,现在已经不再允许了。



阅读(1678) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~