应用层 I(C/S模型、P2P模型、域名系统DNS)【★★】
(★★)代表非常重要的知识点,(★)代表重要的知识点。
一、网络应用模型
在网络边缘的端系统之间的通信方式通常可划分为两大类:客户 - 服务器方式(C/S 方式 [Client/Server] )和对等方式(P2P 方式 [Peer-to-Peer] )。有时还可看到另外一种叫做浏览器 - 服务器方式,即 B/S 方式(Browser/Server 方式),但这仍然是 C/S 方式的一种特例。
1. 客户 / 服务器模型
这种方式在互联网上是最常用的,也是传统的方式。我们在上网发送电子邮件或在网站上查找资料时,都是使用客户-服务器方式(有时写为客户/服务器方式)。
当我们打电话时,电话机的振铃声使被叫用户知道现在有一个电话呼叫。计算机通信的对象是应用层中的应用进程,显然不能用响铃的办法来通知所要找的对方的应用进程。然而采用客户-服务器方式可以使两个应用进程能够进行通信。
在客户 / 服务器(Client/Server, C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。其工作流程如下:
- 服务器处于接收请求的状态。
- 客户机发出服务请求,并等待接收结果。
- 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。
客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户-服务器方式所描述的是进程之间服务和被服务的关系。在下图所示中,主机 A 运行客户程序而主机 B 运行服务器程序。在这种情况下, A 是客户而 B 是服务器。客户 A 向服务器 B 发出服务请求,而服务器 B 向客户 A 提供服务。
这里最主要的特征就是:客户是服务请求方,服务器是服务提供方。如 Web 应用程序,其中总是打开的 Web 服务器服务于运行在客户机上的浏览器的请求。当 Web 服务器接收到来自客户机对某对象的请求时,它向该客户机发送所请求的对象以做出响应。使用客户 / 服务器模型的常见应用包括 Web、文件传输协议(FTP)、远程登录和电子邮件等。
注意:服务请求方和服务提供方都要使用网络核心部分所提供的服务。在实际应用中,客户程序和服务器程序通常还具有以下一些主要特点:
① 客户程序:
-
被用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。
-
不需要特殊的硬件和很复杂的操作系统。
② 服务器程序:
-
是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
-
系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。
-
一般需要有强大的硬件和高级的操作系统支持。
客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可发送和接收数据。
2. P2P 模型
在 C/S 模型中(下图左),服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P 模型(下图右)的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点都同时具有下载、上传的功能,其权利和义务都是大体对等的。
对等连接(peer-to-peer ,简写为 P2P ,这里使用数字 2 是因为英文的 2 是 two ,其读音与 to 同,因此英文的 to 常缩写为数字 2)是指两台主机在通信时并不区分哪一个是服务请求方哪一个是服务提供方,即在 P2P 模型中,各计算机没有固定的客户和服务器划分,任意一对计算机——称为对等方(Peer),直接相互通信。
只要两台主机都运行了对等连接软件(P2P 软件),它们就可以进行平等的、对等连接通信。这时,双方都可以下载对方已经存储在硬盘中的共享文档,因此这种工作方式也称为 P2P 方式。
在下图中,主机 C, D, E 和 F 都运行了 P2P 软件,因此这几台主机都可进行对等通信(如 C 和 D ,E 和 F ,以及 C 和 F)。实际上,对等连接方式从本质上看仍然是使用客户-服务器方式,只是对等连接中的每一台主机既是客户又同时是服务器(每个结点既作为客户访问其他结点的资源,又作为服务器提供资源给其他结点访问)。例如主机 C ,当 C 请求 D 的服务时,C 是客户,D 是服务器。但如果 C 又同时向 F 提供服务,那么 C 又同时起着服务器的作用。
对等连接工作方式可支持大量对等用户(如上百万个)同时工作。与 C/S 模型相比,P2P 模型的优点主要体现如下:
- 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率。
- 多个客户机之间可以直接共享文档。
- 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求
- 网络健壮性强,单个结点的失效不会影响其他部分的结点。
P2P 模型也有缺点:在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存影响整机速度。例如,经常进行 P2P 下载还会对硬盘造成较大的损伤。据某互联网调研机构统计当前 P2P 程序已占互联网 50% ~ 90% 的流量,使网络变得非常拥塞,因此各大 ISP(互联网服务提供商,如电信、网通等)通常都对 P2P 应用持反对态度。
3. 例题
① 下面关于客户 / 服务器模型的描述,( C )存在错误。
I. 客户端必须提前知道服务器的地址,而服务器则不需要提前知道客户端的地址
II. 客户端主要实现如何显示信息与收集用户的输入,而服务器主要实现数据的处理
III. 浏览器显示的内容来自服务器
IV. 客户端是请求方,即使连接建立后,服务器也不能主动发送数据
A. I 、IV
B. III 、IV
C. 只有 IV
D. 只有 III
在连接未建立前,服务器在某一个端口上监听。客户端是连接的请求方,客户端必须事先知道服务器的地址才能发出连接请求,而服务器则从客户端发来的数据包中获取客户端的地址。一旦连接建立,服务器就能响应客户端请求的内容,服务器也能主动发送数据给客户端,用于一些消息的通知,如一些错误的通知。
② 下列关于客户/服务器模型的说法中,不正确的是( D )。
A. 服务器专用于完成某些服务,而客户机则作为这些服务的使用者
B. 客户机通常位于前端,服务器通常位于后端
C. 客户机和服务器通过网络实现协同计算任务
D. 客户机是面向任务的,服务器是面向用户的
【客户机的作用是:根据用户需求向服务器发出服务请求,并将服务器返回的结果呈现给用户。因此客户机是面向用户的,服务器是面向任务的。】
③ 以下关于 P2P 概念的描述中,错误的是( C )。
A. P2P 是网络结点之间采取对等方式直接交换信息的工作模式
B. P2P 通信模式是指 P2P 网络中对等结点之间的直接通信能力
C. P2P 网络是指与互联网并行建设的、由对等结点组成的物理网络
D. P2P 实现技术是指为实现对等结点之间直接通信的功能所需要设计的协议、软件等
P2P 可以理解为一种通信模型、一种逻辑网络模型。物理网络是指在网络中由各种设备(主机、交换机等)和介质(双绞线等)连接而形成的网络,它看得见摸得着。而这个网络中所使用的协议,或网络结构,都是靠逻辑网络来划分的。P2P 网络是一个构建在 IP 网络上的覆盖网络,是一种动态的逻辑网络。对等结点之间具有直接通信的能力是 P2P 的显著特点。
④ 【2019 统考真题】下列关于网络应用模型的叙述中,错误的是( B )。
A. 在 P2P 模型中,结点之间具有对等关系
B. 在客户 / 服务器(C/S)模型中,客户与客户之间可以直接通信
C. 在 C/S 模型中,主动发起通信的是客户,被动通信的是服务器
D. 在向多用户分发一个文件时,P2P 模型通常比 C/S 模型所需的时间短
【在 P2P 模型中,每个结点的权利和义务是对等的。在 C/S 模型中,客户是服务发起方,服务器被动接受各地客户的请求,但客户之间不能直接通信。】
二、域名系统(DNS)
域名系统 DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如 www.cskaoyan.com)转换为便于机器处理的 IP 地址。相对于 IP 地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。
值得注意的是,DNS 系统采用客户 / 服务器模型,其协议运行在 UDP之上,使用 53 号端口。
从概念上可将 DNS 分为三部分:层次域名空间、域名服务器和解析器。
从理论上讲,整个互联网可以只使用一个域名服务器,使它装入互联网上所有的主机名,并回答所有对 IP 地址的查询。然而这种做法并不可取。因为互联网规模很大,这样的域名服务器肯定会因过负荷而无法正常工作,而且一旦域名服务器出现故障,整个互联网就会瘫痪。因此,早在 1983 年互联网就开始采用层次树状结构的命名方法,并使用分布式的域名系统 DNS 。
互联网的域名系统 DNS 被设计成为一个联机分布式数据库系统,并采用客户 / 服务器方式。DNS 使大多数名字都在本地进行解析(resolve),仅少量解析需要在互联网上通信,因此 DNS 系统的效率很高。由于 DNS 是分布式系统,即使单个计算机出了故障,也不会妨碍整个 DNS 系统的正常运行。
域名到 IP 地址的解析是由分布在互联网上的许多域名服务器程序(可简称为域名服务器)共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。
域名到 IP 地址的解析过程的要点如下:当某一个应用进程需要把主机名解析为 IP 地址时,该应用进程就调用解析程序(resolver),并成为 DNS 的一个客户,把待解析的域名放在 DNS 请求报文中,以 UDP 用户数据报方式发给本地域名服务器(使用 UDP 是为了减少开销)。本地域名服务器在查找域名后,把对应的 IP 地址放在回答报文中返回。应用进程获得目的主机的 IP 地址后即可进行通信。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。
1. 层次域名空间
早期的互联网使用了非等级的名字空间,其优点是名字简短。但当互联网上的用户数急剧增加时,用非等级的名字空间来管理一个很大的而且是经常变化的名字集合是非常困难的。因此,互联网后来就采用了层次树状结构的命名方法,就像全球邮政系统和电话系统那样。
采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。
从语法上讲,每一个域名都由标号(label)序列组成,而各标号之间用点隔开(请注意,是小数点“ . ”,不是中文的句号“ 。”)。例如下面的域名,它是中央电视台用于收发电子邮件的计算机(即邮件服务器)的域名,它由三个标号组成,其中标号 com 是顶级域名,标号 cctv 是二级域名,标号 mail 是三级域名。
关于域名中的标号有以下几点需要注意:DNS 规定,
- 标号中的英文不区分大小写(例如, CCTV 或 cctv 在域名中是等效的)。
- 标号中除连字符(-)外不能使用其他的标点符号。
- 域名中的每个标号都由英文字母和数字组成,每一个标号不超过 63 个字符(但为了记忆方便,最好不要超过 12 个字符),由多个标号组成的完整域名最长不超过 255 个字符。
- 级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。变长的域名和使用有助记忆的字符串,是为了便于人使用。而 IP 地址是定长的 32 位二进制数字则非常便于机器进行处理。这里需要注意,域名中的“点”和点分十进制 IP 地址中的“点”并无一一对应的关系。
顶级域名 TLD(Top Level Domain)分为如下三大类:
-
国家(地区)顶级域名(nTLD):国家和某些地区的域名。如:“.cn” 表示中国,“.us” 表示美国,“.uk” 表示英国,等等。国家顶级域名又常记为 ccTLD(cc 表示国家代码 country-code)。
-
通用顶级域名(gTLD):最先确定的通用顶级域名有 7 个,即:“.com”(公司企业),“.net”(网络服务机构),“.org”(非营利性组织),“.int”(国际组织),“.edu”(美国专用的教育机构),“.gov”(美国的政府部门),“.mil”(美国的军事部门)。
以后又陆续增加了 13 个通用顶级域名:“.aero”(航空运输企业),“.asia”(亚太地区),“.biz”(公司和企业),“.cat”(使用加泰隆人的语言和文化团体),“.coop”(合作团体),“.info”(各种情况),“.jobs”(人力资源管理者),“.mobi”(移动产品与服务的用户和提供者),“.museum”(博物馆),“.name”(个人),“.pro”(有证书的专人员),“.tel”(Telnic 股份有限公司),“.travel”(旅游业)。
- 基础结构域名(infrastructure domain, arpa):这种顶级域名只有一个,即 arpa ,用于反向域名解析,即 IP 地址反向解析为域名,因此又称为反向域名。
下图展示了域名空间的树状结构。
DNS 既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。在域名系统中,各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构 ICANN 进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。
国家顶级域名下注册的二级域名均由该国家自行确定,每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。例如,管理 cn 域的中国将 edu.cn 子域授权给中国教育和科研计算机网(CERNET)来管理。
这里还要强调指出,互联网的名字空间是按照机构的组织来划分的,与物理的网络无关,与 IP 地址中的“子网”也没有关系。
2. 域名服务器
上面讲述的域名体系是抽象的。但具体实现域名系统则是使用分布在各地的域名服务器。从理论上讲,可以让每一级的域名都有一个相对应的域名服务器,使所有的域名服务器构成和上图相对应的“域名服务器树”的结构。但这样做会使域名服务器的数量太多,使域名系统的运行效率降低。因此 DNS 就采用划分区的办法来解决这个问题。
域名到 IP 地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围叫做区(zone,小于或等于“域”)。各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是能够连通的,每一个区设置相应的权限域名服务器(authoritative name server),用来保存该区中的所有主机的域名到 IP 地址的映射。每个域名服务器不但能够进行一些域名到 IP 地址的解析,而且还必须具有连向其他域名服务器的信息,当自己不能进行域名到 IP 地址的转换时,能够知道到什么地方去找其他域名服务器。总之, DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是 DNS 服务器实际管辖的范围。区可能等于或小于域,但一定不能大于域。
下图是区的不同划分方法的举例。假定 abc 公司有下属部门 x 和 y ,部门 x 下面又分三个分部门u, v 和w ,而 y 下面还有其下属部门 t 。下图(a)表示 abc 公司只设一个区 abc.com 。这时,区 abc.com 和域 abc.com 指的是同一件事。但下图(b)表示 abc 公司划分了两个区(大的公司可能要划分多个区): abc.com 和 y.abc.com 。这两个区都隶属于域 abc.com ,都各设置了相应的权限域名服务器。不难看出,区是“域”的子集。
下图以上图(b)中公司 abc 划分的两个区为例,给出了 DNS 域名服务器树状结构图。这种 DNS 域名服务器树状结构图可以更准确地反映出 DNS 的分布式结构。在下图中的每一个域名服务器都能够进行部分域名到 IP 地址的解析。当某个 DNS 服务器不能进行域名到 IP 地址的转换时,它就设法找互联网上别的域名服务器进行解析。
从上图可看出,互联网上的 DNS 域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为以下四种不同的类型:
- 根域名服务器(root name server):根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。根域名服务器是最重要的域名服务器,不管是哪个本地域名服务器,要对因特网上任何一个域名进行解析(即转换为 IP 地址),只要自己无法解析,就首先要求助于根域名服务器。因特网上有 13 个根域名服务器,尽管我们将这 13 个根域名服务器中的每一个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名服务器用来管辖顶级域(如.com),通常它并不直接把待查询的域名直接转换成地址(根域名服务器也没有存放这种信息),而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行査询。
但请注意,虽然互联网的根域名服务器总共只有 13 个域名,但这不表明根域名服务器是由 13 台机器所组成(如果仅仅依靠这 13 台机器,根本不可能为全世界的互联网用户提供令人满意的服务)。实际上,在互联网中是由 13 套装置(13 installations)构成这 13 组根域名服务器。每一套装置在很多地点安装根域名服务器(也可称为镜像根服务器),但都使用同一个域名。
-
顶级域名服务器(即 TLD 服务器):这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到 DNS 查询请求时就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的 IP 地址)。
-
权限域名服务器(授权域名服务器):这就是前面已经讲过的负责一个区的域名服务器,例如在之前的例子中,区 abc.com 和区 y.abc.com 各设有一个权限域名服务器。每台主机都必须在权限域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个权限域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和权限域名服务器。权限域名服务器总能将其管辖的主机名转换为该主机的地址。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
-
本地域名服务器:本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。当一台主机发出 DNS 查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。事实上,我们在 Windows 系统中配置“本地连接”时,就需要填写 DNS 地址,这个地址就是本地 DNS(域名服务器)的地址。本地域名服务器离用户较近,一般不超过几个路由器的距离。当所要查询的主机也属于同一个本地 ISP 时,该本地域名服务器立即就能将所查询的主机名转换为它的 IP 地址,而不需要再去询问其他的域名服务器。
当计算机使用 Windows 7 操作系统时,打开“控制面板”,然后依次选择“网络和 Internet”-“网络和共享中心”-“查看网络状态和任务”-“无线网络连接”(假定采用家庭网络)-“属性”-“Internet 协议版本4”-“属性”等项目,就可以看见首选 DNS 服务器和备用 DNS 服务器的 IP 地址。
3. 域名解析过程(★★)
域名解析是指把域名转化为 IP 地址的过程。当客户端需要域名解析时,通过本机的 DNS 客户端构造一个 DNS 请求报文,以 UDP 数据报方式发往本地域名服务器。
为了提高域名服务器的可靠性, DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器(master name server),其他的是辅助域名服务器(secondary name server)。当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
域名解析有两种方式:递归查询和迭代查询。下面简单讨论一下域名的解析过程,下面要注意两点:
-
第一,本地域名服务器向根域名服务器的查询通常是采用迭代查询(iterative query)。迭代查询的特点是这样的:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询"。然后让本地域名服务器进行后续的查询(而不是替本地域名服务器进行后续的查询)。根域名服务器通常是把自已知道的顶级域名服务器的 IP 地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的 IP 地址,要么告诉本地域名服务器下一步应当向哪一个权限域名服务器进行查询,本地域名服务器就这样进行迭代查询。最后,知道了所要解析的域名的 IP 地址,然后把这个结果返回给发起查询的主机。当然,本地域名服务器也可以采用递归查询,这取决于最初的查询请求报文的设置是要求使用哪一种查询方式。
-
第二,主机向本地域名服务器的查询一般都是采用递归查询(recursive query)。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文(即替该主机继续查询,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的),而不是让该主机自已进行下一步的查询。因此,递归查询返回的查询结果或者是所要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。因为该方法给根域名服务器造成的负载过大,所以实际中几乎不使用。
下图用例子说明了这两种查询的区别。
假定域名为 m.xyz.com 的主机想知道另一台主机(域名为 y.abc.com)的 IP 地址。例如,主机 m.xyz.com 打算发送邮件给主机 y.abc.com 。这时就必须知道主机 y.abc.com 的 IP地址。下面是上图(a)的几个查询步骤:
- ① 主机 m.xyz.com 先向其本地域名服务器 dns.xyz.com 进行递归查询。
- ② 本地域名服务器采用迭代查询。它先向一个根域名服务器查询。
- ③ 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器 dns.com 的 IP 地址。
- ④ 本地域名服务器向顶级域名服务器 dns.com 进行查询。
- ⑤ 顶级域名服务器 dns.com 告诉本地域名服务器,下一次应查询的权限域名服务器 dns.abc.com 的 IP 地址。
- ⑥ 本地域名服务器向权限域名服务器 dns.abc.com 进行查询。
- ⑦ 权限域名服务器 dns.abc.com 告诉本地域名服务器,所查询的主机的 IP 地址。
- ⑧ 本地域名服务器最后把查询结果告诉主机 m.xyz.com 。
我们注意到,这 8 个步骤总共要使用 8 个 UDP 用户数据报的报文。本地域名服务器经过三次迭代查询后,从权限域名服务器 dns.abc.com 得到了主机 y.abc.com 的 IP 地址,最后把结果返回给发起查询的主机 m.xyz.com 。
上图(b)是本地域名服务器采用递归查询的情况。在这种情况下,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是在其他几个域名服务器之间进行的(步骤 ③ 至 ⑥)。只是在步骤 ⑦,本地域名服务器从根域名服务器得到了所需的 IP 地址。最后在步骤 ⑧,本地域名服务器把查询结果告诉主机 m.xyz.com 。整个的查询也是使用 8 个 UDP报文。
为了提高 DNS 查询效率,并减轻根域名服务器的负荷和减少互联网上的 DNS 查询报文数量,在域名服务器中广泛地使用了高速缓存(有时也称为高速缓存域名服务器)。高速缓存用来存放最近查询过的域名以及从何处获得域名映射(mapping, 指两个集合元素之间的一种对应规则)信息的记录。
例如,在上图(a)的查询过程中,如果在不久前已经有用户查询过域名为 y.abc.com 的 IP 地址,那么本地域名服务器就不必向根域名服务器重新查询 y.abc.com 的 IP 地址,而是直接把高速缓存中存放的上次查询结果(即 y.abc.com 的 IP 地址)告诉用户。
假定本地域名服务器的缓存中并没有 y.abc.com 的 IP 地址,而是存放着顶级域名服务器 dns.com 的 IP 地址,那么本地域名服务器也可以不向根域名服务器进行查询,而是直接向 com 顶级域名服务器发送查询请求报文。这样不仅可以大大减轻根域名服务器的负荷,而且也能够使互联网上的 DNS 查询请求和回答报文的数量大为减少。
由于名字到地址的绑定(binding, 指一个对象或事务与其某种属性建立某种联系的过程)并不经常改变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并处理超过合理时间的项(例如,每个项目只存放两天)。当域名服务器已从缓存中删去某项信息后又被请求查询该项信息,就必须重新到授权管理该项的域名服务器获取绑定信息。当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。
不但在本地域名服务器中需要高速缓存,在主机中也很需要。许多主机在启动时从本地域名服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到名字时才使用域名服务器。维护本地域名服务器数据库的主机自然应该定期地检查域名服务器以获取新的映射信息,而且主机必须从缓存中删掉无效的项。由于域名改动并不频繁,大多数网点不需花太多精力就能维护数据库的一致性。
由此,上图(a)的迭代查询步骤变为:
- ① 客户机向其本地域名服务器发出 DNS 请求报文(递归查询)。
- ② 本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以 DNS 客户的身份向根域名服务器发出解析请求报文(迭代查询)。
- ③ 根域名服务器收到请求后,判断该域名属于 .com 域,将对应的顶级域名服务器 dns.com 的 IP 地址返回给本地域名服务器。
- ④ 本地域名服务器向顶级域名服务器 dns.com 发出解析请求报文(迭代查询)。
- ⑤ 顶级域名服务器 dns.com 收到请求后,判断该域名属于 abc.com 域,因此将对应的权限域名服务器 dns.abc.com 的 IP 地址返回给本地域名服务器。
- ⑥ 本地域名服务器向权限域名服务器 dns.abc.com 发起解析请求报文(迭代查询)。
- ⑦ 权限域名服务器 dns.abc.com 收到请求后,将查询结果返回给本地域名服务器。
- ⑧ 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。
4. 例题
① 域名与( D )具有一一对应的关系。
A. IP 地址
B. MAC地址
C. 主机
D. 以上都不是
若一台主机通过两块网卡连接到两个网络(如服务器双线接入),则就具有两个 IP 地址,每个网卡对应一个 MAC 地址,显然这两个 IP 地址可以映射到同一个域名上。此外,多台主机也可以映射到同一个域名上(如负载均衡),一台主机也可以映射到多个域名上(如虚拟主机)。
② 下列说法错误的是( A )。
A. Internet 上提供客户访问的主机一定要有域名
B. 同一域名在不同时间可能解析出不同的 IP 地址
C. 多个域名可以指向同一台主机 IP 地址
D. IP 子网中的主机可以由不同的域名服务器来维护其映射
【Internet 上提供访问的主机一定要有 IP 地址,而不一定要有域名。可以把多个域名指向同一台主机 IP 地址。】
③ 域名系统(DNS)的组成不包括( D )。
A. 域名空间
B. 分布式数据库
C. 域名服务器
D. 从内部 IP 地址到外部 IP 地址的翻译程序
【从内部 IP 地址到外部 IP 地址的映射是由 NAT 实现的,用于缓解 IPv4 地址紧缺的问题,与域名系统无关。】
DNS 提供从域名到 IP 地址或从 IP 地址到域名的映射服务。它被设计成为一个联机分布式数据库系统,并采用客户 / 服务器模式。域名的解析是由若干域名服务器程序完成的。
④ 互联网中域名解析依赖于由域名服务器组成的逻辑树。在域名解析过程中,主机上请求域名解析的软件不需要知道( C )信息。
I. 本地域名服务器的 IP
II. 本地域名服务器父结点的 IP
III. 域名服务器树根结点的 IP
A. I 和 II
B. I 和 III
C. II 和 III
D. I 、II 和 III
【正常情况下,客户机只需把域名解析请求发往本地域名服务器,其他事情都由本地域名服务器完成,并把最后结果返回给客户机。所以主机只需要知道本地域名服务器的 IP 。】
在递归查询中,每台不包含被请求信息的服务器都转到其他地方去查找,然后它再往回发送结果,所以客户端最开始连接的服务器最终将返回正确的信息。
⑤ 一台主机要解析 www.cskaoyan.com 的 IP 地址,若这台主机配置的域名服务器为 202.120.66.68 ,因特网顶级域名服务器为 11.2.8.6 ,而存储 www.cskaoyan.com 的 IP 地址对应关系的域名服务器为 202.113.16.10 ,则这台主机解析该域名通常首先查询( A )。
A. 202.120.66.68 域名服务器
B. 11.2.8.6 域名服务器
C. 202.113.16.10 域名服务器
D. 可以从这 3 个域名服务器中任选一个
【不管采用何种查询方式,首先都要查询本地域名服务器。】
⑥ ( C )可以将其管辖的主机名转换为主机的 IP 地址。
A. 本地域名服务器
B. 根域名服务器
C. 权限域名服务器
D. 代理域名服务器
【每台主机都必须在权限域名服务器处注册登记,权限域名服务器一定能够将其管辖的主机名转换为该主机的 IP 地址。】
⑦ 若本地域名服务器无缓存,用户主机采用递归查询向本地域名服务器查询另一网络某主机域名对应的 IP 地址,而本地域名服务器采用迭代查询向其他域名服务器进行查询,则用户主机和本地域名服务器发送的域名请求条数分别为( B )。
A. 1条,1条
B. 1条,多条
C. 多条,1条
D. 多条,多条
⑧ 【2010 统考真题】若本地域名服务器无缓存,则在采用递归方法解析另一网络某主机域名时,用户主机和本地域名服务器发送的域名请求条数分别为( A )。
A. 1条,1条
B. 1条,多条
C. 多条,1条
D. 多条,多条
⑨ 【2016 统考真题】假设所有域名服务器均采用迭代查询方式进行域名解析。当主机访问规范域名为 www.abc.xyz.com 的网站时,本地域名服务器在完成该域名解析的过程中可能发出 DNS 查询的最少和最多次数分别是( C )。
A. 0 , 3
B. 1 , 3
C. 0 , 4
D. 1 , 4
【解析】:
- 最少情况:当本地域名服务器中有该域名的 DNS 信息时,不需要查询任何其他域名服务器,最少发出 0 次 DNS 查询。
- 最多情况:因为均采用迭代查询方式,在最情况下,本地域名服务器需要依次迭代地向根域名服务器、顶级域名服务器(.com)、权限域名服务器(xyz.com)、权限域名服务器(abc.xyz.com)发出 DNS 查询请求,因此最多发出 4 次 DNS 查询。
⑩ 【2018统考真题】下列 TCP/IP 应用层协议中,可以使用传输层无连接服务的是( B )。
A. FTP
B. DNS
C. SMTP
D. HTTP
(11) 【2020 统考真题】假设下图所示网络中的本地域名服务器只提供递归查询服务,其他域名服务器均只提供迭代查询服务;局域网内主机访问 Interet 上各服务器的往返时间(RTT)均为 10ms ,忽略其他各种时延。若主机 H 通过超链接 http://www.abc.com/indexhtml 请求浏览纯文本 Web 页 index.html ,则从单击超链接开始到浏览器接收到 index.html 页面为止,所需的最短时间与最长时间分别是( D )。
A. 10ms , 40ms
B. 10ms , 50ms
C. 20ms , 40ms
D. 20ms , 50ms
【解析】:
题中 RTT 均为局域网内主机(主机 H 、本地域名服务器)访问 Intermet 上各服务器的往返时间,且忽略其他时延,因此 H 向本地域名服务器的查询时延忽略不计。
- 最短时间:H 有该域名到 IP 地址映射的记录,因此没有 DNS 查询时延,直接和 www.abc.com 服务器建立 TCP 连接再进行资源访问,TCP 连接建立的三次握手需要 1.5 个RTT ,并在第 3 次握手报文中捎带了对资源的请求,然后服务器返回所请求的资源需要 0.5个RTT ,共 2 个 RTT ,即 20ms 。
- 最长时间:H 递归查询本地域名服务器(延时忽略),本地域名服务器依次迭代查询根域名服务器、com 顶级域名服务器、abc.com 域名服务器,共 3 个 RTT ,查询到 IP 地址后,返回给主机,H 和 www.abc.com 服务器建立 TCP 连接再进行资源访问,共 2 个 RTT ,合计 3 + 2 = 5 个 RTT ,即 50ms 。
【问题1】:一台具有单个 DNS 名称的机器可以有多个 IP 地址吗?为什么?
【答】:可以,IP 地址由网络号和主机号两部分构成。若一台机器有两个以太网卡,则它就可同时连到两个不同的网络上(网络号不能相同,否则发生冲突);若是这样,则它就需要两个 IP 地址。
【问题2】:一台计算机可以有两个属于不同顶级域的 DNS 名字吗?若可以,则举例说明。
【答】:可以,例如 www.cskaoyan.com 和 www.cskaoyan.cn 属于不同的顶级域(.com 和 .cn),但它们可以有同样的 IP 地址。用户输入这两个不同的 DNS 名字,访问的都是同一台服务器。
【问题3】:DNS 使用 UDP 而非 TCP ,若一个 DNS 分组丢失,没有自动恢复,则这会引起问题吗?若会,则应如何解决?
【答】:DNS 使用传输层的 UDP而非 TCP ,因为它不需要使用 TCP 在发生传输错误时执行的自动重传功能。实际上,对于 DNS 服务器的访问,多次 DNS 请求都返回相同的结果,即做多次和做一次的效果一样。因此 DNS 操作可以重复执行。当一个进程做一次 DNS 请求时,它启动一个定时器。若定时器计满而未收到回复,则它就再请求一次,这样做不会有害处。
【问题4】:为何要引入域名的概念?举例说明域名转换过程。
【答】:IP 地址很难记忆,引入域名是为了便于人们记忆和识别。域名解析可以把域名转换成 IP 地址。域名转换过程是向本地域名服务器申请解析,若本地域名服务器查不到,则向根域名服务器进行查询。若根域名服务器中也查不到,则向根域名服务器中保存的顶级域名服务器和相应权限域名服务器进行查询,一定可以查找到。
【问题5】:域名的高速缓存是什么?域名服务器中的高速缓存有何作用?
【答】:每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录,可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(如每个项目只存放两天)。当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,减少此时间值可以提高域名转换的准确性。域名服务器中高速缓存的作用:将近期访问过的域名信息保存在高速缓存,再次访问时会从缓存中读取,不需要重新解析,这样就可以加快域名解析的响应速度。