版权声明: (C) 1987, Charles L. Hedrick. Anyone may reproduce this document, in whole or in part, provided that: (1) any copy or republication of the entire document must show Rutgers University as the source, and must include this notice; and (2) any other use of this material must reference this manual and Rutgers University, and the fact that the material is copyright by Charles Hedrick and is used by permission.
如前所述,因特网地址由32位字构成,通常按十分制写成4部分,如128.56.4.7. 实际存在着3类这样的地址,问题在于这种地址有时代表着一个网络,有时代表了一个网络中的主机.根据经验,世界上应该存在很多但是很小的网络,用24位字来编址也许合适;同时由于几个特别大的网络的存在,24位字也许只够用做表示这些网络中的主机数量;这样看来,48位字的网络地址长度是比较自然的结果.但是设计者们坚持用32位字作为因特网的地址长度,因为他们认为世界上大多数网络都很小. 这个编址方案设计了3个不同范围的地址.从1到126开头的地址,仅仅使用这个地址的第一部分作为自己的网络号,其他3个部分(即24位字)表示网络中的主机,这些地址用来表示主机数量巨大的网络,但是仅仅能有126个这样的网络--Arpanet是很多大型商业网络其中之一.由于只能有很少的组织能获得这样的A类地址,大多数组织使用的是B类地址.B类地址使用地址的前两个部分作为网络号,从128.1到191.254. (我们没有使用0和255,因为这些数字将用在特别的场合.) 地址的后两个部分(16位字)表示网络中的主机,一个B类地址可以容纳64516台主机,对大多数组织已经够用. (如果不够用,可以使用多个B类地址.) C类地址使用地址的前3个部分作为网络号, 从192.1.1到223.254.254.每个C类网络只能容纳254台主机,但是定义了数量巨大的 C类网络.大于223的可以分别定义为D类和E类网络,保留给将来使用(目前并未定义).
很多组织发现,把大的网络再划分成小的"子网"会很方便.例如,公司Rutgers可以使用一个B类地址,如果我们把地址的第三位也作为网络地址,区别一个主机位于某个以太网的话,会很方便规划.这个分法对Rutgers公司外部毫无影响,因为外部的计算机把发往128.6网络的数据看成是发往同一个地方.因此,在Rutgers之外的计算机里,不会因为128.6.4和128.6.5是两个网络而存在不同的路由;而在Rutgers 内部,我们确实把128.6.4和128.6.5以两个不同的网络来对待.这样做的结果就是, Rutgers内部的路由(网关)有到每个子网的路由表项;而Rutgers外部的路由(网关) 只有一个到128.6网络的路由表项.当然,我们可以为Rugters内部的每个子网分配一个C类地址,这样做的结果不会给内部造成多大影响,但是会给外部带来一些不方便:每个想同我们交流的,都必须有到每个子网的路由表项.如果世界上每个组织都象我们这样做,那路由(网关)几乎要了解多的不可想象的大量路由表项.通过把一个B类网络划分成子网,我们对外部隐藏了网络内部的具体结构,同时也给别人省了不少麻烦.划分子网的策略需要网络软件的支持,在RFC 950里面有具体的描述.
0和255有特别的含义.0保留给那些不知道自己网络地址的计算机使用.某些情况下,计算机可能不知道自己所在的网络号,甚至自己的网络地址.例如,0.0.0.23表示一个计算机仅仅知道自己的主机地址是23,但是不知道自己的网络号. 255用做"广播".广播是计算机想让网络中的所有其他计算机都接收的一段信息. 广播可以在计算机不知道该和哪个计算机对话时使用.例如,你想知道一个主机的名字,并获得其网络地址,但是你又不知道附近的提供名字信息的域名服务器的地址, 你可以把请求信息作为广播发出去.另外,为了让每个主机都得到一些信息,通过一次广播,要比单独多次把这些信息分别发往每个主机的代价小的多.为了发出广播信息,要做的是把网络地址中,代表主机信息的地址段,全用1来表示.例如,你处在 128.6.4网络,那么128.6.4.255就是这个网络的广播地址.至于广播是怎么实现的,要取决于网络的介质--网络的物理层.在Arpanet或者点对点网络中是无法实现广播的,但是以太网就能.如果你的信息的目的地址全为1,那么以太网的每个主机都应当收到了这段信息.
尽管我们看到,关于128.5.4网络正式的广播地址是128.6.4.255,但是在某些实现中,其他的地址也被当做了广播地址.为了使用的方便,标准中允许255.255.255.255 作为广播地址出现,指代本地网络中的所有主机,用255.255.255.255作为网络的广播地址要比从一个实际网络中找出广播地址方便的多,比如使用128.6.4.255.另外, 在一些更老的实现中,用0而不是255来表示一个广播地址.那些主机就会把 128.6.4.0而不是128.6.4.255作为网络的广播地址.最后,某些老的实现中不理解子网的概念,他们会把128.6作为网络号,在我们的例子中,这些实现会把128.5.255.255 或128.6.0.0认为是广播地址.在对广播技术正确的实现前,划分子网也许是个危险的特性.
由于0和255分别用来表示未知和广播地址,所以主机通常不能使用这些数字作为自己的网络地址.实际的主机地址的第一位绝对不能包括0或255,也不能大于223,违反这些规则的编址行为,常被取笑为"火星人",因为有谣传说,火星上的中心大学, 使用地址第一位是225的网络.