DNS—域名系统外文翻译资料
2021-12-13 22:20:57
DNS—The Domain Name System
Although programs theoretically could refer to hosts, mailboxes, and other resources by their network (e.g., IP) addresses, these addresses are hard for people to remember. Also, sending e-mail to tana@128.111.24.41 means that if Tana#39;s ISP or organization moves the mail server to a different machine with a different IP address, her e-mail address has to change. Consequently, ASCII names were introduced to decouple machine names from machine addresses. In this way, Tana#39;s address might be something like tana@art.ucsb.edu. Nevertheless, the network itself understands only numerical addresses, so some mechanism is required to convert the ASCII strings to network addresses. In the following sections we will study how this mapping is accomplished in the Internet.
Way back in the ARPANET, there was simply a file, hosts.txt, that listed all the hosts and their IP addresses. Every night, all the hosts would fetch it from the site at which it was maintained. For a network of a few hundred large timesharing machines, this approach worked reasonably well.
However, when thousands of minicomputers and PCs were connected to the net, everyone realized that this approach could not continue to work forever. For one thing, the size of the file would become too large. However, even more important, host name conflicts would occur constantly unless names were centrally managed, something unthinkable in a huge international network due to the load and latency. To solve these problems, DNS (the Domain Name System) was invented.
The essence of DNS is the invention of a hierarchical, domain-based naming scheme and a distributed database system for implementing this naming scheme. It is primarily used for mapping host names and e-mail destinations to IP addresses but can also be used for other purposes. DNS is defined in RFCs 1034 and 1035.
Very briefly, the way DNS is used is as follows. To map a name onto an IP address, an application program calls a library procedure called the resolver, passing it the name as a parameter. We saw an example of a resolver, gethostbyname, in Fig. 6-6. The resolver sends a UDP packet to a local DNS server, which then looks up the name and returns the IP address to the resolver, which then returns it to the caller. Armed with the IP address, the program can then establish a TCP connection with the destination or send it UDP packets.
1. The DNS Name Space
Managing a large and constantly changing set of names is a nontrivial problem. In the postal system, name management is done by requiring letters to specify (implicitly or explicitly) the country, state or province, city, and street address of the addressee. By using this kind of hierarchical addressing, there is no confusion between the Marvin Anderson on Main St. in White Plains, N.Y. and the Marvin Anderson on Main St. in Austin, Texas. DNS works the same way.
Conceptually, the Internet is divided into over 200 top-level domains, where each domain covers many hosts. Each domain is partitioned into subdomains, and these are further partitioned, and so on. All these domains can be represented by a tree, as shown in Fig. 7-1. The leaves of the tree represent domains that have no subdomains (but do contain machines, of course). A leaf domain may contain a single host, or it may represent a company and contain thousands of hosts.
The top-level domains come in two flavors: generic and countries. The original generic domains were com (commercial), edu (educational institutions), gov (the U.S. Federal
Figure 7-1. A portion of the Internet domain name space.
Government), int (certain international organizations), mil (the U.S. armed forces), net (network providers), and org (nonprofit organizations). The country domains include one entry for every country, as defined in ISO 3166.
In November 2000, ICANN approved four new, general-purpose, top-level domains, namely, biz (businesses), info (information), name (people#39;s names), and pro (professions, such as doctors and lawyers). In addition, three more specialized top-level domains were introduced at the request of certain industries. These are aero (aerospace industry), coop (co-operatives), and museum (museums). Other top-level domains will be added in the future.
As an aside, as the Internet becomes more commercial, it also becomes more contentious. Take pro, for example. It was intended for certified professionals. But who is a professional? And certified by whom? Doctors and lawyers clearly are professionals. But what about freelance photographers, piano teachers, magicians, plumbers, barbers, exterminators, tattoo artists, mercenaries, and prostitutes? Are these occupations professional and thus eligible for pro domains? And if so, who certifies the individual practitioners?
In general, getting a second-level domain, such as name-of-company.com, is easy. It merely requires going to a registrar for the corresponding top-level domain (com in this case) to check if the desired name is available and not somebody else#39;s trademark. If there are no problems, the requester pays a small annual fee and gets the name. By now, virtually every common (English) word has been taken in the com domain. Try household articles, animals, plants, body parts, etc. Nearly all are taken.
Each domain is named by the path upward from it to the (unnamed) root. The components are separated by periods (pronounced #39;#39;dot#39;#39;). Thus, the engineering department at Sun Microsystems might be eng.sun.com., rather than a UNIX-style name such as /com/sun/eng. Notice that this hierarchical naming means that eng.sun.com. does not conflict with a potential use of eng in eng.yale.edu., w
DNS—域名系统
虽然程序理论上可以通过网络地址(如IP)引用主机、邮箱和其他资源,但这些地址很难让人记住。此外,发送电子邮件至tana@128.111.24.41意味着如果Tana的ISP或组织将邮件服务器移动到具有不同IP地址的其他计算机,则必须更改其电子邮件地址。因此,引入了ASCII名称以将机器名称与机器地址分离。然而,网络本身只能理解数字地址,因此需要一些机制将ASCII字符串转换为网络地址。在下面的部分中,我们将研究如何在Internet中完成此映射。
回到ARPANET,只有一个文件hosts.txt列出了所有主机及其IP地址。每天晚上,所有主机都会从维护它的站点获取它。对于几百台大型分时机器的网络,这种方法运行得相当好。
然而,当数以千计的小型计算机和PC连接到网络时,人们意识到这种方法不能永远继续工作。首先,文件的大小会变得太大。然而,更重要的是,主机名冲突将不断发生,除非将名称集中管理,这是由于负载和延迟在庞大的国际网络中无法想象的。为了解决这些问题,发明了DNS(域名系统)。
DNS的本质是发明分层的、基于域的命名方案和用于实现该命名方案的分布式数据库系统。它主要用于将主机名和电子邮件目标映射到IP地址,但也可用于其他目的。DNS在RFC 1034和1035中定义。
简而言之,DNS的使用方式如下。要将名称映射到IP地址,应用程序将调用称为解析程序的库过程,并将名称作为参数传递给它。我们在图6-6中看到了一个解析器gethostbyname的例子。解析器将UDP数据包发送到本地DNS服务器,然后查找该名称并将IP地址返回给解析器,解析器然后将其返回给调用者。使用IP地址,程序可以与目标建立TCP连接或发送UDP数据包。
1. DNS名称空间
管理大量不断变化的名称是一个非常重要的问题。在邮政系统中,名称管理是通过要求信件(隐式或明确地)指定收件人的国家,州或省,城市和街道地址来完成的。通过使用这种分层寻址,纽约州怀特普莱恩斯的主街上的马文安德森和德克萨斯州奥斯汀的主街上的马文安德森之间没有混淆。DNS的工作方式相同。
从概念上讲,Internet分为200多个顶级域,每个域覆盖许多主机。每个域都被划分为子域,并进一步分区,依此类推。所有这些域都可以用树表示,如图7-1所示。树的叶子代表没有子域的域(当然包含机器)。叶域可以包含单个主机,也可以代表公司并包含数千个主机。
顶级域名有两种形式:通用和国家。最初的通用域名是com(商业),edu(教
图7-1. Internet域名空间的一部分。
育机构),gov(美国联邦政府),int(某些国际组织),mil(美国武装部队),net(网络提供商)和组织(非营利组织))。国家/地区域包括ISO 3166中定义的每个国家/地区的一个条目。
2000年11月,ICANN批准了四个新的通用顶级域名,即biz(商业),info(信息),name(人名)和pro(专业,如医生和律师)。此外,还应某些行业的要求引入了三个更专业的顶级域名。这些是aero(航空航天工业),coop(合作社)和museum(博物馆)。将来还会添加其他顶级域名。
顺便说一句,随着互联网变得越来越商业化,它也变得更具争议性。以专业人士为例。它适用于经过认证的专业人士。但谁是专业人士?并由谁认证?医生和律师显然都是专业人士。但是自由摄影师,钢琴教师,魔术师,水管工,理发师,灭虫者,纹身艺术家,雇佣兵和妓女呢?这些职业是否专业,因此有资格获得专业领域?如果是这样,谁来证明个体从业者?
通常,获取二级域名,例如name-of-company.com很容易。它只需要访问相应顶级域名(在本例中为com)的注册商,以检查所需名称是否可用而不是其他人的商标。如果没有问题,请求者只需支付少量年费并获得名称。到目前为止,几乎所有常见(英语)单词都在com域中。尝试家庭用品,动物,植物,身体部位等。几乎所有的都被采取。
每个域都由从它向上到(未命名)根的路径命名。组件由句点分隔(发音为#39;#39;dot#39;#39;)。因此,Sun Microsystems的工程部门可能是eng.sun.com.而不是像/ com / sun / eng这样的UNIX风格的名称。请注意,此分层命名表示eng.sun.com.与英格兰英语系可能使用的eng.yale.edu.中可能使用的eng不冲突。
域名可以是绝对的也可以是相对的。绝对域名总是以句点结束(例如,eng.sun.com.),而相对的域名不是。相对名称必须在某些上下文中解释以唯一地确定它们的真实含义。在这两种情况下,命名域都是指树中的特定节点以及其下的所有节点。
域名不区分大小写,因此edu,Edu和EDU的含义相同。组件名称最长可达63个字符,完整路径名称不得超过255个字符。
原则上,域可以以两种不同的方式插入树中。例如,cs.yale.edu同样可以在美国国家域名下列为cs.yale.ct.us. 然而,在实践中,美国的大多数组织属于通用领域,而且大多数美国以外的组织属于其国家的领域。没有规则禁止在两个顶级域名下注册,但除了跨国公司之外很少有组织这样做(例如,sony.com和sony.nl)。
每个域控制它如何分配其下的域。例如,日本有域ac.jp和co.jp,它们反映了edu和com。荷兰没有做出这种区分,并将所有组织直接置于nl之下。 因此,以下所有三个都是大学计算机科学系:
cs.yale.edu(美国耶鲁大学)
cs.vu.nl(荷兰阿姆斯特丹自由大学)
cs.keio.ac.jp(日本庆应大学)
要创建新域,需要包含该域的域的权限。例如,如果VLSI组在耶鲁启动并希望被称为vlsi.cs.yale.edu,则必须获得管理cs.yale.edu的任何人的许可。同样,如果新的大学被特许,例如北达科他州大学,它必须要求edu域的经理将其指定为unsd.edu。通过这种方式,可以避免名称冲突,并且每个域都可以跟踪其所有子域。一旦创建并注册了新域,它就可以创建子域,例如cs.unsd.edu,而无需获得树上任何人的许可。
命名遵循组织边界,而不是物理网络。例如,如果计算机科学和电气工程部门位于同一建筑物中并共享相同的LAN,则它们可以具有不同的域。同样,即使计算机科学分布在巴贝奇厅和图灵厅,两座建筑物中的主机通常都属于同一个域。
2. 资源记录
每个域(无论是单个主机还是顶级域)都可以拥有一组与之关联的资源记录。 对于单个主机,最常见的资源记录只是其IP地址,但也存在许多其他类型的资源记录。 当解析程序向DNS提供域名时,它返回的是与该名称关联的资源记录。 因此,DNS的主要功能是将域名映射到资源记录。
资源记录是五元组。虽然它们以二进制编码以提高效率,但在大多数说明中,资源记录以ASCII文本形式呈现,每个资源记录一行。我们将使用的格式如下:
Domain_name Time_to_live Class Type Value
Domain_name告诉该记录适用的域。通常,每个域都存在许多记录,并且数据库的每个副本都包含有关多个域的信息。因此,该字段是用于满足查询的主要搜索关键字。数据库中记录的顺序并不重要。
Time_to_live字段指示记录的稳定性。高度稳定的信息被赋予较大的值,例如86400(1天内的秒数)。高度易变的信息被分配一个小值,例如60(1分钟)。 稍后当我们讨论缓存时,我们将回到这一点。
每个资源记录的第三个字段是Class。对于Internet信息,它始终为IN。对于非互联网信息,可以使用其他代码,但在实践中,这些很少见。
Type字段告诉它是什么类型的记录。最重要的类型如图7-2所示。
图7-2. IPv4的主要DNS资源记录类型。
SOA记录提供有关名称服务器区域(如下所述)的主要信息源的名称,其管理员的电子邮件地址,唯一的序列号以及各种标志和超时。
最重要的记录类型是A(地址)记录。它为某些主机保留32位IP地址。每个Internet主机必须至少有一个IP地址,以便其他计算机可以与之通信。某些主机具有两个或更多网络连接,在这种情况下,每个网络连接将具有一个A类资源记录(每个IP地址)。DNS可以配置为循环使用这些,返回第一个请求的第一个记录,第二个请求的第二个记录,依此类推。
下一个最重要的记录类型是MX记录。它指定准备接受指定域的电子邮件的主机的名称。使用它是因为并非每台机器都准备接受电子邮件。如果有人想要发送电子邮件到例如bill@microsoft.com,发送主机需要在microsoft.com上找到愿意接受电子邮件的邮件服务器。MX记录可以提供此信息。
NS记录指定名称服务器。例如,每个DNS数据库通常都有每个顶级域的NS记录,因此,例如,可以将电子邮件发送到命名树的远端部分。我们稍后会回到这一点。
CNAME记录允许创建别名。例如,熟悉互联网命名的人,并希望向在M.I.T.的计算机科学部门登录名称为paul的人发送消息。可能会猜测paul@cs.mit.edu会起作用。实际上,这个地址不起作用,因为M.I.T.的计算机科学系的领域是lcs.mit.edu。 但是,作为对不了解这一点的人的服务,M.I.T。可以创建一个CNAME条目,以指向正确方向的人员和程序。像这样的条目可能会完成这项工作:
cs.mit.edu 86400 IN CNAME lcs.mit.edu
与CNAME一样,PTR指向另一个名称。但是,与CNAME(实际上只是宏定义)不同,PTR是一种常规DNS数据类型,其解释取决于找到它的上下文。实际上,它几乎总是用于将名称与IP地址相关联,以允许查找IP地址并返回相应机器的名称。这些称为反向查找。
HINFO记录允许人们找出域对应的机器和操作系统类型。最后,TXT记录允许域以任意方式标识自己。这两种记录类型都是为了方便用户。两者都不是必需的,所以程序不能指望它们(如果它们确实得到它们可能无法处理它们)。
最后,我们有了Value字段。该字段可以是数字,域名或ASCII字符串。语义取决于记录类型。图7-2给出了每种主要记录类型的值字段的简短描述。
有关可能在域的DNS数据库中找到的信息类型的示例,请参见图7-3。 该图描绘了图7-1中所示的cs.vu.nl域的(半假设的)数据库的一部分。 该数据库包含七种类型的资源记录。
图7-3. cs.vu.nl可能的DNS数据库的一部分
图7-3的第一个非注释行给出了关于域的一些基本信息,这我们将不再涉及。接下来的两行提供有关域所在位置的文本信息。然后来两个条目给第一和第二位尝试发送发送到person@cs.vu.nl的电子邮件。应首先尝试使用西风(特定机器)。如果失败,应该尝试顶部作为下一个选择。
添加空白行后,为了便于阅读,请说明flits是运行UNIX的Sun工作站并提供其两个IP地址。然后给出了三个选择来处理发送到flits.cs.vu.nl的电子邮件。第一选择自然是褶皱本身,但如果它下降,西风和顶部是第二和第三选择。接下来是别名www.cs.vu.nl,因此可以在不指定特定机器的情况下使用此地址。创建此别名允许cs.vu.nl更改其万维网服务器,而不会使人们用来访问它的地址无效。 ftp.cs.vu.nl也有类似的说法。
接下来的四行包含工作站的典型条目,在本例中为rowboat.cs.vu.nl。提供的信息包含IP地址,主邮件丢失和辅助邮件丢弃以及有关计算机的信息。然后是非UNIX系统的条目,该系统不能自己接收邮件,后面是连接到Internet的激光打印机的条目。
未显示(并且不在此文件中)的是用于查找顶级域的IP地址。这些是查找远程主机所必需的,但由于它们不是cs.vu.nl域的一部分,因此它们不在此文件中。它们由根服务器提供,其IP地址存在于系统配置文件中,并在引导DNS服务器时加载到DNS缓存中。世界各地有大约十几个根服务器,每个服务器都知道所有顶级域服务器的IP地址。因此,如果机器知道至少一个根服务器的IP地址,它可以查找任何DNS名称。
3.名称服务器
至少在理论上,单个名称服务器可以包含整个DNS数据库并响应有关它的所有查询。在实践中,这个服务器会过载而无用。此外,如果它失败了,整个互联网将会瘫痪。
为了避免与仅具有单个信息源相关联的问题,DNS名称空间被划分为非重叠区域。划分图7-1的名称空间的一种可能方式如图7-4所示。每个区域都包含树的某些部分,还包含保存有关该区域的信息的名称服务器。通常,区域将具有一个主名称服务器,该服务器从其磁盘上的文件获取其信息,以及一个或多个辅助名称服务器,它们从主名称服务器获取其信息。为了提高可靠性,区域的某些服务器可以位于区域外。
图7-4. DNS名称空间的一部分,显示划分为区域
区域边界放置在区域内的位置取决于该区域的管理员。这个决定很大程度上取决于需要多少名称服务器,以及在哪里。例如,在图7-4中,Yale有一个yale.edu服务器,它处理eng.yale.edu但不处理cs.yale.edu,它是一个带有自己名称服务器的独立区域。当英语等部门不希望运行自己的名称服务器时,可能会做出这样的决定,但计算机科学等部门会这样做。因此,cs.yale.edu是一个单独的区域,但eng.yale.edu不是。
当解析程序有
资料编号:[5436]