LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2506|回复: 22

一个关于子网划分的粗浅问题。

[复制链接]
发表于 2003-8-8 08:39:58 | 显示全部楼层 |阅读模式
看到有人问 192.30.40.0/24 要划分两个子网,该怎么设netmask,
我的看法是,可以划为 192.30.40.0/25 和192.30.40.128/25,
可是,另一种意见是,必须要在最后8位中分出2位做netmask(192.30.40.64/26与192.30.40.128/26)他们的理由是,全0或者全1的网络号是非法的?

我觉得非常纳闷,后来翻书,看到一个B类地址划分的范例,作者说一个B类可以划分出254个子网,每个子网254台主机。
可是毕竟一个是B类,一个是C类啊。我的问题是,是不是B类中网络号全0或者全1都有特殊意义?放到C类中呢?

看到这个,但是没有解释全0:
12.2.4 指向所有子网的广播
指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分
开。指向所有子网的广播地址的子网号及主机号为全1。例如,如果目的子网掩码为
2 5 5 . 2 5 5 . 2 5 5 . 0,那么I P地址1 2 8 . 1 . 2 5 5 . 2 5 5是一个指向所有子网的广播地址。然而,如果网络
没有划分子网,这就是一个指向网络的广播。
发表于 2003-8-8 09:20:47 | 显示全部楼层
另一种意见是,必须要在最后8位中分出2位做netmask(192.30.40.64/26与192.30.40.128/26)他们的理由是,全0或者全1的网络号是非法的?
对,这是正确的做法。
我的问题是,是不是B类中网络号全0或者全1都有特殊意义?放到C类中呢?
没错,不论是A类B类还是C类网络,全0和全1的网络地址均不能使用,而且全0和全1的主机地址也不能使用。
发表于 2003-8-8 09:22:28 | 显示全部楼层
两者都是可以的。
对于tcp/ip协议,我所看到的最通俗易懂的解释方式是这样的。
你把ip地址和子网掩码都写成二进制的。像你原来的是
ip addr. 11000000 00011110 00101000 00000000
netmask 11111111 11111111 11111111 00000000
你把两者做和运算,得到:
network 11000000 00011110 00101000 00000000
无论ip addr.的第四段如何改变,得到的结果中的第四段永远是00000000。这样的结果称为子网,代表的是你网络的标识。
而从 11000000 00011110 00101000 00000001 到 11000000 00011110 00101000 11111110 则是你这个子网中可以分配给机器的ip add。用它们和netmask做或运算,除去前面一定为0的段,得到诸如: 00000001 到 11111110 的地址,则是你主机的标识。而对于主机标识为 00000000 的代表子网, 11111111 代表广播,都不可以作为网络内一台主机的标识。
对于你/24的描述,其实只是子网掩码的另一种表示方法,等同于11111111 11111111 11111111 00000000,表示子网掩码中开头24位是1,后面都是0。对于B类和C类的描述,其实没有多大意义,B类即/16,C类即/24。其实这些你可能都懂,多废话了。
现在回来看你的情况。如果划分为192.30.40.0/25和192.30.40.128/25,则其中192.30.40.0和192.30.40.128为两个子网的标识,192.30.40.127和192.30.40.255为两个子网的广播标识,其余从192.30.40.1到192.30.40.126以及从192.30.40.129到192.30.40.254都是可用的主机标识。所谓的全0和全1都是指做了或运算以后的位数。
最后解释一下和运算和或运算。(这些你应该知道)
1和1为1,1和0为0,0和1为0,0和0为0。
1或1为1,1或0为1,0或1为1,0或0为0。
(不知道我有没有把“和”和“或”搞错)

如果还没说清楚的话请再次提问。
 楼主| 发表于 2003-8-8 09:30:21 | 显示全部楼层
最初由 wangguoqin1001 发表
两者都是可以的。
对于tcp/ip协议,我所看到的最通俗易懂的解释方式是这样的。
你把ip地址和子网掩码都写成二进制的。像你原来的是
ip addr. 11000000 00011110 00101000 00000000
netmask 11111111 11111111 11111111 00000000
你把两者做和运算,得到:
network 11000000 00011110 00101000 00000000
无论ip addr.的第四段如何改变,得到的结果中的第四段永远是00000000。这样的结果称为子网,代表的是你网络的标识。
而从 11000000 00011110 00101000 00000001 到 11000000 00011110 00101000 11111110 则是你这个子网中可以分配给机器的ip add。用它们和netmask做或运算,除去前面一定为0的段,得到诸如: 00000001 到 11111110 的地址,则是你主机的标识。而对于主机标识为 00000000 的代表子网, 11111111 代表广播,都不可以作为网络内一台主机的标识。
对于你/24的描述,其实只是子网掩码的另一种表示方法,等同于11111111 11111111 11111111 00000000,表示子网掩码中开头24位是1,后面都是0。对于B类和C类的描述,其实没有多大意义,B类即/16,C类即/24。其实这些你可能都懂,多废话了。
现在回来看你的情况。如果划分为192.30.40.0/25和192.30.40.128/25,则其中192.30.40.0和192.30.40.128为两个子网的标识,192.30.40.127和192.30.40.255为两个子网的广播标识,其余从192.30.40.1到192.30.40.126以及从192.30.40.129到192.30.40.254都是可用的主机标识。所谓的全0和全1都是指做了或运算以后的位数。
最后解释一下和运算和或运算。(这些你应该知道)
1和1为1,1和0为0,0和1为0,0和0为0。
1或1为1,1或0为1,0或1为1,0或0为0。
(不知道我有没有把“和”和“或”搞错)

如果还没说清楚的话请再次提问。


我的设想也是这样,如果按我的意见,我是这么说的:
192.30.40.0 network address of 192.30.40.0/25
valued ip address is between 192.30.40.1-192.30.40.126 2^7-2
192.30.40.127 broadcast address of 192.30.40.0/25

192.30.40.128 network address of 192.30.40.128/25
valued ip address is between 192.30.40.129-192.30.40.254 2^7-2
192.30.40.255 broadcast address of 192.30.40.128/25

现在的问题是,在C类的192.30.40中划个网络id为 0 的子网是不是合法?
 楼主| 发表于 2003-8-8 09:33:15 | 显示全部楼层
最初由 LYOO 发表
对,这是正确的做法。
没错,不论是A类B类还是C类网络,全0和全1的网络地址均不能使用,而且全0和全1的主机地址也不能使用。

咳,那个家伙后来又说(我刚看见):

确实,可以用1位子网位来划分子网,但是这种情况称为子网0 (subnet-zero),是一个破例。
共有2个子网,每个子网有126台主机。


还有啊,我怎么记得好像看到过192.168.0.1这类的主机啊?
发表于 2003-8-8 09:44:29 | 显示全部楼层
我不同意wangguoqin1001的说法,理由如下:

wangguoqin1001对划分法的解释没错可以说是相当深刻,但忽视了全0全1子网是无效的,所以在这两个子网段内的主机地址实际上是不可用的。如果以ultralix的方法,拿出一位做为子网分割标示,所得到的子网只有全0和全1两种子网,实际上得出的地址全是无效的。

再举一例,我们来对一C级网络进行分割。C级网络主机地址不超过255个,利用掩码255.255.255.192可将一个C级网络划分成4个各拥有64台主机的子网,按wangguoqin1001的思路,除去全0和全1的主机地址,实际可用的为4个子网,共62*3=186个主机地址。而事实上由于全0和全1的网络地址不能用,真正可用的是两个子网,共62*2=124个主机地址。

以上是我的理解,愿与wangguoqin1001讨论
发表于 2003-8-8 11:26:33 | 显示全部楼层
这个问题涉及到C类地址中变长子网掩码的问题,192.30.40.0/24 是一个标准的C类地址,为一个网段。192.30.40.0/26是两个网段,IP范围192.30.40.65-192.30.40.126,192.30.40.129-192.30.40. 190。
发表于 2003-8-8 13:27:36 | 显示全部楼层
LYOO说的好像很有道理,不过本人一向理解能力较差,得慢慢理解。
现在的问题好像就集中在全0和全1究竟是对哪几位来说。就我的看法,诸如netmask为255.255.255.192的网络,凡是后六位为全0或全1的几位子网或广播号,而对于倒数第七、第八位是否是0、1并无关系。如果按照您的意思,那么所有子网掩码为奇数的子网都应该是不存在的。
不知道我理解得对不对,如有冲撞,还请包涵。
发表于 2003-8-9 09:51:05 | 显示全部楼层
最初由 wangguoqin1001 发表
LYOO说的好像很有道理,不过本人一向理解能力较差,得慢慢理解。
现在的问题好像就集中在全0和全1究竟是对哪几位来说。就我的看法,诸如netmask为255.255.255.192的网络,凡是后六位为全0或全1的几位子网或广播号,而对于倒数第七、第八位是否是0、1并无关系。如果按照您的意思,那么所有子网掩码为奇数的子网都应该是不存在的。
不知道我理解得对不对,如有冲撞,还请包涵。

255.255.255.0不就是奇数的吗?
子网掩码是由四个十进制数组成的,但实际上你分成四个八位二进制数来看更简单。倒数第七、八位是0或1也是代表网络号不同。
发表于 2003-8-9 10:18:42 | 显示全部楼层
最初由 0100 发表
255.255.255.0不就是奇数的吗?
子网掩码是由四个十进制数组成的,但实际上你分成四个八位二进制数来看更简单。倒数第七、八位是0或1也是代表网络号不同。


对呀,我也是这个意思,所以我真的有一点糊涂了。
我的意思是按照LYOO说的,/25、/27之类奇数的子网掩码是不存在的,事实当然不是如此啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表