3.7.3 因特网的域名系统

因特网上各主机通信时,很难记忆和操作长达32位二进制的主机地址。即使是点分十进制的IP地址也不容易记忆。希望能直接使用容易记忆和便于操作的主机名字。于是就有了把域名翻译成IP地址的软件,并称为域名系统(Domain Name System,DNS)。

域名好比通讯录里的姓名和电话号码。打电话、发短信时,可以直接选择姓名,而不用输入对方的电话号码。但事实上,姓名只是电话号码的一个代号。有了域名,当用户要和互联网某台计算机交换信息时,只需使用域名,网络会自动转换成IP地址,找到该台计算机,从而保障数据通信方便顺利地执行。

1.域名的结构

域名是一个逻辑概念,不必与物理地址相一致,域名的结构包括顶级域名(国家)、二级域名(行政区域或部门)、三级域名(企事业单位名)、注册域名(通信主机名)。完整的域名最多不超过255个英文字母和数字。

各级域名之间用点隔开,每一级由英文字母和数字组成,级别最高的顶级域名写在最右边(最后面)。级别最低的域名写在最左边(排序与中文习惯相反)。

例如,中国清华大学计算机科学与技术系的域名为“cs.tsinghua.edu.cn”,其中cn代表中国,edu表示教育部门,tsinghua表示清华大学,cs表示计算机科学与技术系。域名中的最末部分通常都表示国家,最左部分代表该台计算机的名字。

(1)顶级域名:国家级域名。

例如:cn表示中国,us表示美国,uk表示英国……

(2)二级域名:各国自行确定。我国把二级域名划分为“类别域名”和“行政区域名”两类。

类别域名:ac表示科研机构,com表示工商和金融企业,edu表示教育机构,gov表示政府部门,net表示互联网络,NIC表示接入网络的信息中心和运行中心(NOC),org表示各种非营利性组织。

行政区域名:共34个,用于我国各省、自治区、直辖市。

例如:bj为北京市,sh为上海市,js为江苏省等。

(3)三级域名:企业名称。可向中国互联网网络中心CNNIC申请。

2.域名系统

域名系统是采用域名服务器把主机名字和IP地址对应起来的一个庞大数据库。图3-55是域名系统服务器的树形布局。

图3-55 域名系统服务器的树形布局

由美国建立的IPv4体系的根服务器全球共13台(1台主根+12台辅根服务器),唯一的1台主根服务器部署在美国,其余12台辅根服务器设在美国9台,欧洲2台,日本1台。

我国从30多年前就寻求向美国申请1台辅助根服务器,但美国以种种借口拒绝。最令人气愤的是,美国拿出的分配方案是:中国只拥有5%的网络地址,理论上如果有一天美国突然屏蔽中国互联网的域名和网络地址,那么中国网民将会无法访问,整个互联网会在瞬间瘫痪。

每一个域名服务器不但能够进行域名到IP地址的转换,还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,它能够知道到什么地方去找其他的域名服务器。

因特网上的域名服务器系统是按照域名的层次来安排的。每一个域名服务器都只对域名系统中的一部分进行管辖。共有三种不同类型的域名服务器。

(1)本地域名服务器(Local Name Server)。每个因特网接入服务商(Internet Service Provider,ISP)、一个大学或大学里一个系,都可拥有一个本地域名服务器,有时也称默认域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离。如果需要查询的主机也属于同一个本地ISP时,则本地域名服务器立即就能将查询的主机名转换为它的IP地址,而不需要去询问其他的域名服务器。

(2)根域名服务器(Root Name Server)。当本地域名服务器不能立即回答某主机的查询时,本地域名服务器就以DNS域名系统客户的身份向某一个根域名服务器查询,如果根域名服务器具有被查询主机的信息,就把DNS回答的报文发送给本地域名服务器,然后本地域名服务器再回答发起查询的主机。如果根域名服务器没有被查询主机的信息,它就一定知道某个保存被查询主机映射的授权域名服务器的IP地址。

根域名服务器通常用来管辖顶级域的域名转换,而不直接对顶级域下面所属的域名进行转换,它能够找到下面所有的二级域名服务器。

(3)授权域名服务器(Authoritative Name Server)。每个主机都必须在授权域名服务器处注册登记。通常一个主机的授权域名服务器就是它的本地的接入服务商ISP的一个域名服务器。为了更加可靠地工作,一个主机最好至少有两个以上的授权服务器。

许多域名服务器同时充当本地域名服务器和授权域名服务器。

3.子网划分

IP4地址体系中32bit长度的IP地址分为网络标识地址(NetID)和主机或路由标识地址(HostID)两部分。在传送数据时,首先利用第一部分网络标识(NetID)找到互联网络中对应的网络,然后再根据第二部分主机标识地址(HostID)找到该网络上的目的主机。也就是说,A、B、C三类的地址结构都是两级层次结构。现在看来,IP地址的两级层次结构设计确实还有不够合理之处,例如:

(1)IP地址空间的利用率有时很低。每个A类地址网络可连接的主机数超过1000万。每个B类地址网络可连接的主机数也可超过6万。然而有些网络对连接在网络上的计算机数目有限制,不可能达到如此大的数量。如10BASE-T以太网规定其最大节点数只有1024个,使用B类地址时,就会浪费6万多个IP地址,地址空间的利用率还不到2%,造成IP地址的浪费,使IP地址资源更早地被用光。

(2)如果在同一个网络上安装大量主机,就有可能会发生网络拥塞,会影响网络的传输性能。

(3)每一个物理网络分配一个IP网络号会使路由表变得太大,使网络性能变坏。

(4)无法随时增加本单位的网络,因为本单位必须事先到因特网管理机构中去申请并获得批准后,才能连接到因特网上工作。

为此,从1985年起,把两级层次的IP地址网络变成为三级层次的IP(地址)网络。这种做法叫作子网划分(Subneting)或子网寻址、子网路由选择,并已成为因特网的标准协议。

子网划分是将一个网络进一步划分成若干个子网络(Subnet)。划分子网纯属单位内部的事情,与本单位以外的网络无关,对外仍然表现为一个大网络。

子网划分的方法是从网络的主机地址号中借用若干比特作为子网地址号(SubnetID),而主机地址号也就相应减少了若干比特。于是两级的IP地址在本单位内部的网络中变成三级IP地址,即网络地址号(NetID)、子网地址号(SubnetID)和主机地址号(HostID)。

凡从其他网络发送给本单位网络中某个主机的数据包,仍然是根据IP数据包的目的网络地址号找到连接在本单位网络上的路由器,此路由器在收到IP数据包后,再按目的网络地址号和子网地址号找到目的子网,将IP数据包交付给目的主机。

图3-56是将一个网络划分成3个子网的例子:IP数据包的目的主机地址是B类地址:144.14.2.21,因特网仍将该数据包送到路由器R1,路由器R1将该目的地址进行解释,知道144.14这个网络在物理上已分成3个子网。根据IP地址中的后两个字节分别确定子网标识地址为2和主机标识地址为21。这样就将IP地址改变为3级层次结构,第1级是网路标识地址144.14,确定网络;第2级是子网标识地址2,确定子网;第3级是主机标识地址21,确定在该子网上的主机。

4.子网掩码

当没有划分子网时,IP地址是两级结构,网络地址字段是IP地址的“因特网部分”,主机地址字段是IP地址的“本地部分”,如图3-57a所示。

划分子网后就成了三级IP地址结构,子网只是将IP地址的本地部分进行再划分,而不改变IP地址的因特网部分,如图3-57b所示。

但是如何能让计算机知道有无子网划分呢?这就需要使用另一个长度也是32bit的子网掩码(Mask Code)来解决这个问题。子网掩码和IP地址一样长,都是32bit,它由一串“1”和跟随的一串“0”组成。

图3-56 具有3级层次结构的网络

子网掩码中的“1”表示与IP地址中的网络地址号和子网相对应的部分。子网掩码中的“0”表示与IP地址中的主机号相对应的部分,如图3-57c所示。

在IP地址划分子网的情况下,把子网掩码和划分子网的IP地址进行逐个比特相“与”(AND),便可得出主机号为全“0”的子网划分的网络地址,即<Netid>+<Subnetid>+全“0”的<Hosted>,如图3-57d所示。

如果IP数据包地址为不划分子网的地址,那么子网掩码和不划分子网的IP地址进行逐个比特相“与”(AND)的结果为图3-57e所示的网络地址<Netid>+全“0”的<Hosted>。

图3-57 IP地址的各字段和子网掩码

a)两级IP地址 b)三级IP地址 c)子网掩码 d)划分子网时的网络地址 e)不划分子网时的网络地址

这种不管有无子网都适用的子网掩码称为默认的子网掩码。显然:

A类地址的默认子网掩码是255.0.0.0,或0XFF000000。

B类地址的默认子网掩码是255.255.0.0,或0XFFFF0000。

C类地址的默认子网掩码是255.255.255.0,或0XFFFFFF00。

表3-5是B类地址的子网划分选择。可以看出,若适用较少比特数的子网地址号,则每个子网上可连接的主机数量较大。反之,使用较多比特数的子网地址号,则子网的数据可以较多,但每个子网上可连接的主机数量较少。可根据网络的具体情况来选择合适的子网掩码。

表3-5 B类地址的子网划分选择(使用固定长度子网)

5.IP多播的基本概念

IP多播(Multicast)又称组播,即一对多的通信,现已成为因特网的一个热门课题,广泛用于交互式会议、软件升级和信息交付(如新闻、股市等)。局域网的多播是用硬件实现的。

在因特网上向多个站发送同样的数据包可以有两种方法:一种是采用单播方式,每次向一个目的站发送数据包,然后连续向各目的站进行多次发送;另一种是采用图3-58中的路由器进行复制转发,主机X在进行多播时只要发送一个数据包,到了路由器R2才进行数据包复制,然后到了R6再复制一次。也就是说,多播数据包仅在传送路径分岔时才将数据包复制后继续转发。能够运行多播协议的路由器称为多播路由器(Multicast Router)。

图3-58 采用多播路由器的多播系统

在因特网上进行多播称为IP多播。最常用的IP多播方式为以下两种:

(1)使用组地址多播。IP使用D类地址支持多播。D类IP地址的前缀是1110,因此地址的范围是224.0.0.0到239.255.255.255。每个D类地址标识一组主机。D类地址可用来标识有28bit的各个主机组(Host Group),因此可标识228个多播组(超过2亿5千万个多播组)。显然,多播地址只能用于目的地址,而不能用于源地址。

(2)使用硬件进行多播。因特网是由许多网络互联起来的,其中有些是以太网,这些以太网本身就具有硬件多播能力,因此当多播数据包传送到这些以太网时,以太网就利用硬件进行多播,交付给属于该组成员的主机。以太网硬件地址字段中的第一个字节为0X01时则为多播地址。

因特网号码指派管理局IANA拥有的以太网地址块的最高位为24bit(0X00005E),也就是说,整个以太网硬件的地址范围为0X00005E 000000~0X00005E FFFFFF。IANA用其中的一半作为多播地址,因此,以太网多播地址的范围是0X00005E 000000~0X00005E 7FFFFF。这样,以太网中只有23bit可用作多播地址。而D类IP地址可供分配的有28bit,可见在这28bit的前5个bit不能用来构成以太网硬件地址,如图3-59所示。

图3-59 D类IP地址与以太网地址的映射关系