荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: ethanwy (朽木儿), 信区: Internet
标  题: Internet子网
发信站: 荔园晨风BBS站 (Thu May 23 18:17:07 2002), 转信

介绍
本文说明Internet中的子网及其作用。使用子网可以使企业不用再申请新的网络号,而
把现在有的网络进行细划即可满足对网络划分的需要。在本文中请大家一定要记住一点
,在本文以前还没有子网技术出现,IP协议中也不包括子网技术。
1. 产生原因
我们知道原来的IP地址是分为两级的,一级是网络号,一级是主机号。虽然这个方法比
较简单,但是它的缺点也开始出现了,必须要加入新的解释地址的手段。把一个网分成
许多小网就是子网分隔的概念。子网的概念对于中型企业来说是最为合适的,它可以把
企业内部不同的LAN连接起来。这样可以使不同拓朴结构的网络互联,也可以使网络不至
于因为少数主机的通信而变得十分噪杂。
企业中如果使用多个LAN,它可以有以下几种指定IP地址的方法:
为每个网段指定一个网络号;
整个网络使用一个网络号,随便指定主机的IP地址,不管它在什么网段上;
使用子网技术为每个LAN指定子网号;
每个方法都有缺点,第一个方法虽然不需要修改协议,但是会造成路由表的巨大负担,
子网内部的结构必须为外部了解,虽然这样是不必要的,但这也必须如此,因此造成了
浪费。如果IP资源不是那么丰富,那它也太浪费了。第二种方法必须使用一种技术使所
有的LAN看起来象一个网络,这可就是问题了。更重要的是网桥必须知道主机在那一个L
AN上,那么它必须使用广播,这会对网络造成巨大的负担。而第三种方法必须修改IP协
议(过去的IP协议)。
2. 子网寻址
本节中首先解释子网寻址,下来讨论对软件的修改(以支持子网),最后给出寻找给定
网络上地址解析方法的过程。
2.1. 关于IP地址
假定已经获得了IP网络号,而且已经分隔为一系列子网,而且需要指定主机地址,那应
该怎么办呢?因为对IP地址的本地指定限制很小,因此可以采取以下几种方法:
变长域:每个子网的子网长度不相等,但是每个子网中的子网长度相同。如果长度为0,
则不使用子网技术。
定长域:指定用于子网的子网长度。
自编码变长域:自己规定子网的长度和样式,但子网长度不一样。
自编码定长域:指定用于子网的子网长度。
掩码:使用掩码确定本地地址中子网是什么。
这几种方法中使用哪一个需要有一标准,它能够从现在的IP地址中指出子网是什么。自
编码允许将网络划分成不同大小的子网。子网标准在整个Internet内必须是一致的,如
果假定所有网络均使用子网就解决了这个问题。如果不使用自编码体制,也不会使用定
长域体制,因为在这种情况下需要附加位来表示是否使用子网,这是不合适的。而使用
掩码可以使用不经常使用的位(作为掩码)灵活地分隔子网。我们选择的是地址掩码策
略。
使用子网后,IP地址变为下面格式:
其中和IP中的定义一致,域至少一位,域对于给定网络是定长的,不同网络可能不一样
。如果长度为0,不使用子网。下面是一个B类地址中加上6位子网域:
由于采用的是掩码,因此子网部分不一定要连续,但是推荐将本地地址的高位用作子网
,而且要是连续的。因为在IP中全0代表本地(网络),全1代表所有(网络或主机)。
这一点在子网内不能这样使用,在上例中6位的子网域不能取0或63。
2.2. 修改主机软件支持子网
在主机的软件中通常都会有一段代码决定发出的数据报是不是能够直接到达目的地,还
是要发向网关。这段编码大致如下:(我们只讨论最简单的一种情况)
IF ip_net_number(dg.ip_dest) = ip_net_number(my_ip_addr)
THEN send_dg_locally(dg, dg.ip_dest)
ELSE send_dg_locally(dg, gateway_to(ip_net_number(dg.ip_dest)))
如果要支持子网,就要引入新的32位变量my_ip_mask,而代码就会变成下面的样子:
IF bitwise_and(dg.ip_dest, my_ip_mask)=bitwise_and(my_ip_addr, my_ip_mask)
THEN send_dg_locally(dg, dg.ip_dest)
ELSE send_dg_locally(dg, gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))
2.3. 找到地址掩码
下面我们看一下新加入的主机如何知道目前子网内使用的地址掩码,在这种情况下,也
只有两种解决方法,一种是将这个信息编码于硬件,另一个是进行广播。编码于硬件就
是将有关子网的信息保存于磁盘文件中,因为有了无盘站,这种方法看来不怎么适用。
因为LAN支持广播,那使用广播可能是比较合适的方法,我们可以使用RARP获得IP地址,
因为广播占用的带宽可是不小,因此尽量在一个应答中将所有需要的信息都返回给新加
入的主机。如果非要将子网信息和其它信息分次传送,可以使用ICMP中新加入的信息类
型“地址掩码请求”和“地址掩码响应”。新加入的主机可以广播一个“地址掩码请求
”信息,接收到此信息的网关返回“地址掩码响应”,如果信息中未指定发送请求的主
机地址,网关会进行广播。这时主机就会知道地址掩码是什么了。如果主机和多个子网
相连,它需要指定不同子网中的掩码。如果主机多次请求后仍然得不到应答,它会得到
下面三个结论:(或者其中几个)
本地网络不和其它网络连接;
未使用子网,因此没有主机能够提供地址掩码;
所有网关现在都坏了。
前两种情况下可以不使用掩码,第三种情况比较难处理,安全的方法是也不使用掩码,
当网关修复以后,它会进行响应,此时主机可以进行相应的修正。任何主机或网关都不
能根据猜测而返回地址掩码。最后需要强调的是,不是所有的主机都需要使用ICMP获得
地址掩码,它仅用于无盘站之类的计算机。
附录I 地址掩码ICMP
地址掩码请求和响应包的格式如下:
在IP中它包括了源主机的地址,响应主机可以直接将这个地址作为返回地址,如果得到
的源主机地址为0,则需要进行广播。
ICMP中的各域意义如下:
Type
AM1代表地址掩码请求,而AM2代表地址掩码响应
Code
0代表地址掩码请求,1代表地址掩码响应
Checksum
它是从ICMP中的Type开始计算的
Identifier
用于帮助匹配请求与应答,它的值可能为0
Sequence Number
用于帮助匹配请求与应答,它的值可能为0
Address Mask
32位掩码
网关返回主机所在子网的子网地址掩码,如果主机不知道自己的IP地址,则IP地址域设
置为0,这样可以使网关进行广播。
附录II 例子
下例中是主机使用ICMP消息获得地址掩码的例子,我们假定255.255.255.255代表广播。

1. A类地址
主机在A类网络36.0.0.0中,拥有地址36.40.0.123,网关为36.40.0.62,使用8位子网地
址掩码。地址掩码是255.255.0.0。我们建议在获得自己的IP地址后再进行ICMP请求,如
果不能获得就只有向255.255.255.255发出请求了。

主机拥有IP地址的情况下进行请求:
Source address
36.40.0.123
Destination address
255.255.255.255
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
36.40.0.62
Destination address
36.40.0.123
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.0.0

主机未拥有IP地址(和主机号)的情况下进行请求:
Source address
0.0.0.0
Destination address
255.255.255.255
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
36.40.0.62
Destination address
36.40.0.123
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.0.0

不允许进行广播,但主机已经知道网关地址:
Source address
36.40.0.123
Destination address
36.40.0.62
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
36.40.0.62
Destination address
36.40.0.123
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.0.0
2. B类地址
在这个例子中,我们假设主机处于B类地址网络128.99.0.0中,拥有地址128.99.4.123,
网关是128.99.4.62,使用6位子网地址,地址掩码为255.255.252.0。
主机拥有IP地址的情况下进行请求:
Source address
128.99.4.123
Destination address
255.255.255.255
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
128.99.4.62
Destination address
128.99.4.123
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.252.0

主机未拥有IP地址(和主机号)的情况下进行请求:
Source address
0.0.0.0
Destination address
255.255.255.255
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
128.99.4.62
Destination address
255.255.255.255
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.252.0

如果不允许进行广播,但知道网关地址:
Source address
128.99.4.123
Destination address
128.99.4.62
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
128.99.4.62
Destination address
128.99.4.123
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.252.0
3. C类地址
本例中主机在C类网络192.1.127.0中,拥有地址192.1.127.19,网关为192.1.127.50,
使用3位子网(不连续)01011000,地址掩码为255.255.255.88。
主机拥有IP地址的情况下进行请求:
Source address
192.1.127.19
Destination address
255.255.255.255
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
192.1.127.50
Destination address
192.1.127.19
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.255.88

主机未拥有IP地址(或主机号)的情况下进行请求:
Source address
0.0.0.0
Destination address
255.255.255.255
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
192.1.127.50
Destination address
255.255.255.255
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.255.88

如果不允许广播,但主机知道网关地址:
Source address
192.1.127.19
Destination address
192.1.127.50
Protocol
ICMP = 1
Type
地址掩码请求 = AM1
Code
0
Mask
0
网关会直接响应:
Source address
192.1.127.50
Destination address
192.1.127.19
Protocol
ICMP = 1
Type
地址掩码响应 = AM2
Code
0
Mask
255.255.255.88
--

有人这么说,网上的人,都是孤独的。
我这么说,我是因为上网而孤独了。
他这么说,本来我是孤独的,上网之后更孤独。
她这么说了,我本来很孤独,但是看到其他网人我才感到自己原来不孤独。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 218.16.44.222]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店