热搜词
发表于 2010-11-3 12:13:51 | 显示全部楼层 |阅读模式
本帖最后由 灰儿 于 2010-11-3 13:18 编辑

在tcp/ip里面时禁止使用子网号全为0或全1的,因为在tcp/ip 中Classful(有类)的ip包在路由器之间传递时时不传递子网掩码的,使用中会出现不能区分的现象。而Classless(无类)的ip地址格式在路由器之间传递时伴随着会传递子网掩码就不会有二义性问题!总之,TCP/IP协议中,网络号或子网号全0或全1网段因为具有二意性而不能被使用

如果你有一个CLASS(类) C的IP地址,比如192.168.10.0,你想把它分成8个网段,每个网段内可以有32台主机,你可以这样分:
  subnet mask(子网掩码)是:255.255.255.224
  192.168.10.0 - 31,       网络地址:192.168.10.0,   广播地址:192.168.10.31
  192.168.10.32 - 63,     网络地址:192.168.10.32, 广播地址:192.168.10.63
  192.168.10.64 - 95,     网络地址:192.168.10.64, 广播地址:192.168.10.95
  192.168.10.96 - 127,   网络地址:192.168.10.96,  广播地址:192.168.10.127
  192.168.10.128 - 159, 网络地址:192.168.10.128,广播地址:192.168.10.159
  192.168.10.160 - 191, 网络地址:192.168.10.160,广播地址:192.168.10.191
  192.168.10.192 - 223, 网络地址:192.168.10.192,广播地址:192.168.10.223
  192.168.10.224 - 255, 网络地址:192.168.10.224,广播地址:192.168.10.255
  
  即:每个网段32个IP地址,第一个是网络地址(192.168.10.0),用来标志这个网络,最后一个是广播地址(192.168.10.255),用来代表这个网络上的所有主机。这两个IP地址被TCP/IP保留,不可分配给主机使用。

  另外,第一个子网192.168.10.0 - 31和最后一个子网192.168.10.224 - 255通常也被保留,不能使用,原因是因为第一个子网的网络地址192.168.10.0和最后一个子网的广播地址192.1.68.10.255具有二意性。

也就是说从地址的二进制第25位开始是001xxxxx---110xxxxx都可以使用。而从地址的二进制第25位开始,前3位都是0的为该子网的网络号(000xxxxx),全为1的为该子网的广播地址(111xxxxx),因具有二意性都不能使用,而无论后面5位的值如何。

先看看这个大C的网络地址和广播地址:
  
  192.168.10.0是它的网络地址,192.168.10.255是它的广播地址。显然,它们分别与第一个子网的网络地址和最后一个子网的广播地址相重了。
  
  那么怎样区分192.168.10.0到底是哪个网络的网络地址呢?
  
  答案是:把子网掩码加上去!
  
  192.168.10.0 255.255.255.0 是大C的网络地址,192.168.10.0 255.255.255.224 是第一个子网的网络地址,192.168.10.255 255.255.255.0是大C的广播地址,192.168.10.255 255.255.255.224是最后一个子网的广播地址。带上掩码,它们的二意性就不存在了。
  
  所以,在严格按照TCP/IP ABCD给IP地址分类的环境下,为了避免二意性,全0和全1网段都不让使用。这种环境我们叫作Classful。在这种环境下,子网掩码只在所定义的路由器内有效,掩码信息到不了其它路由器,比如RIP-1,它在做路由广播时根本不带掩码信息,收到路由广播的路由器因为无从知道这个网络的掩码,只好照标准TCP/IP的定义赋予它一个掩码。比如,拿到10.X.X.X,就认为它是A类,掩码是255.0.0.0;拿到一个204.X.X.X,就认为它是C类,掩码是255.255.255.0。

  但在Classless(无类)的环境下,掩码任何时候都和IP地址成对地出现,这样,前面谈到的二意性就不会存在,是Classful(有类)还是Classless(无类)取决于你在路由器上运行的路由协议,一个路由器上可同时运行Classful和Classless的路由协议。RIP是 Classful(有类),它在做路由广播时不带掩码信息;OSPF,EIGRP,BGP4是Classless(无类)的,它们在做路由广播时带掩码信息,它们可以同时运行在同一台路由器上。
  
  在Cisco路由器上,缺省你可以使用全1网段,但不能使用全0网段。所以,当在Cisco路由器上给端口定义IP地址时,该IP地址不能落在全0网段上。如果你配了,你会得到一条错误信息。使用IP SUBNET-ZERO命令之后,你才能使用全0网段。
  
  要强调的是,使用了IP SUBNET-ZERO命令之后,如果路由协议使用的是Classful的(比如RIP),虽然你的定义成功了,但那个子网掩码还是不会被RIP带到它的路由更新报文中。即,IP SUBNET-ZERO 命令不会左右路由协议的工作。
  
  总之,TCP/IP协议中,全0和全1网段因为具有二意性而不能被使用。Cisco 缺省使全1网段可以被使用,但全0网段只有在配置了IP SUBNET-ZERO后方可被使用。

子网划分并没有节约IP地址,实际导致可分配的IP地址数目减少

证明:比如一个C类地址,不进行子网划分,实际可分配IP地址为254个。
现进行子网划分,假设借用2位主机号作为子网号,
那么现在产生的子网为01和10(全0全1子网号去掉),每个子网的主机号为6位,则每个子网可分配的IP地址为2的6次方剪掉2,即62台,
那么两个子网可分配的IP共62*2=124个,
那么减少的IP数目为:254-124=130个。

从上数据可以看出,减少了约一半的IP地址。既然这么浪费IP地址,为何我们还要使用子网划分呢?我个人认为,这是利用子网来方便管理网络的一种措施。

很容易看出,减少这么多IP地址的主要原因是子网号为00(全0)和11(全1)的两个子网去掉了,那为何要去掉“全0全1”的子网号呢?
不应该使用全0全1子网这个规定是源于RFC950标准,但后来RFC950在RFC1878中被废止了。

看看RFC950提到的原因:
假设我们有一个网络:192.168.0.0/24,我们现在需要两个子网,那么按照RFC950,应该使用/26而不是/25,得到两个可以使用的子网192.168.0.64和192.168.0.128

对于192.168.0.0/24,网络地址是192.168.0.0,广播地址是192.168.0.255
对于192.168.0.0/26,网络地址是192.168.0.0,广播地址是192.168.0.63
对于192.168.0.64/26,网络地址是192.168.0.64,广播地址是192.168.0.127
对于192.168.0.128/26,网络地址是192.168.0.128,广播地址是192.168.0.191
对于192.168.0.192/26,网络地址是192.168.0.192,广播地址是192.168.0.255

你可以看出来,对于第一个子网,网络地址和主网络的网络地址是重叠的,对于最后一个子网,广播地址和主网络的广播地址也是重叠的。这样的重叠将导致极大的混乱。比如,一个发往192.168.0.255的广播是发给主网络的还是子网的?这就是为什么在当时不建议使用全0和全1子网。

然而,人们认识到子网划分的IP地址浪费严重,后来IETF就研究出了其他一些技术,比如可变长子网掩码VLSM,该技术是在子网上进一步划分子网,可提高IP地址资源的利用率;后来在此基础上研究出了无类别域间路由CIDR,即消除了传统的A/B/C等分类以及划分子网,才是采用网络前缀和主机号的方式来分配IP地址,这使得IP地址的利用率更好。这两者的具体技术暂时不阐述。

就目前来说,现在可以使用全0和全1子网。但我们现在学习时,还强调子网划分时要去掉全0全1,这是何道理呢?我个人认为:
(1)目前有些网络建设较早,设备也不更新,老设备可能不支持CIDR,那么也就不支持全0全1的子网了。
(2)我们建企业网(单位网络)时,一般是使用私有地址来分配内部主机,小企业使用C类的192.168.0.0网络,中型企业使用172.16.0.0(私有部分)网络,如果还不够用,还有10.0.0.0网络。

既然私有地址如此丰富,为何不去掉全0全1的子网呢?因为真要使用全0全1的子网,还需要在路由器上进行一些特殊的配置。
全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-11-23 05:41 , Processed in 0.169348 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team