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
全文共20728字,剩余内容已隐藏,支付完成后下载完整资料
DNS-域名系统
尽管程序理论上可以通过其网络(例如IP)地址来引用主机、邮箱和其他资源,但这些地址对于人们来说很难记住。另外,将电子邮件发送到tana@128.111.24.41意味着如果Tana的ISP或组织将邮件服务器移动到具有不同IP地址的另一台计算机,她的电子邮件地址必须更改。因此,引入了ASCII名称来将机器名与机器地址分离。通过这种方式,Tana的地址可能是tana@art.ucsb.edu。尽管如此,网络本身只能理解数字地址,所以需要一些机制将ASCII字符串转换为网络地址。在下面的章节中,我们将研究如何在互联网上完成这种映射。回到ARPANET中,只有一个文件hosts.txt列出了所有主机及其IP地址。每天晚上,所有的主机都会从维护它的地点取回它。对于几百台大型分时计算机的网络,这种方法工作得很好。
然而,当数以千计的小型机和PC连接到网络时,每个人都意识到这种方法不能永远持续工作。首先,文件的大小会变得太大。然而,更重要的是,除非名称被集中管理,否则主机名称冲突会不断发生,这是由于负载和延迟所导致的在巨大的国际网络中发生的不可想象的事情。为了解决这些问题,DNS(域名系统)被发明出来了。
DNS的本质是发明了一个分层的,基于域的命名方案和一个分布式数据库系统来实现这个命名方案。它主要用于将主机名称和电子邮件目标映射到IP地址,但也可用于其他目的。DNS被定义在RFC 1034和1035中。
简言之,DNS的使用方式如下。为了将名称映射到IP地址上,应用程序调用被称为解析器的库过程,并将名称作为参数传递给它。我们看到了一个解析器的例子,在图6-6中按名称获取主机。解析器向本地DNS服务器发送一个UDP数据包,然后该服务器查找名称并将IP地址返回给解析器,然后解析器将其返回给调用者。通过使用IP地址,程序可以与目标建立TCP连接或发送UDP数据包。
1. DNS名称空间
管理大量不断变化的名字是一个不容忽视的问题。在邮政系统中,姓名管理通过要求信件明确(隐含或明确)收件人的国家,州或省,城市和街道地址来完成。通过使用这种分级处理,纽约州怀特普莱恩斯的主街上的马文安德森与德克萨斯州奥斯汀的主街上的马文安德森之间没有混淆。DNS以同样的方式工作。
从概念上讲,互联网分为200多个顶级域名,其中每个域名覆盖多个主机。 每个域被分割成子域,并且这些域被进一步分割,等等。所有这些域都可以用树来表示,如图7-1所示。树的叶子代表没有子域的域(但当然包含机器)。一个叶域可以包含一个主机,或者它可以代表一个公司并包含数千个主机。
顶级域名有两种:通用和国家。最初的通用域名是com(商业),edu(教育机构),gov(美国联邦政府),int(某些国际组织),mil(美国军队),net(网络提供者)和org(非营利组织)。ISO 3166定义了国家域名,每个国家都有一个入口。
图7-1 互联网域名空间的一部分
2000年11月,ICANN批准了四个新的通用顶级域名,即biz(商业),info(信息),name(人名)和pro(职业,例如医生和律师)。此外,还应某些行业的要求,推出了三个更专业的顶级域名。它们是aero(航空航天工业),coop(合作社)和museum(博物馆)。其他顶级域名也将在未来添加。
另外,随着互联网变得越来越商业化,它也变得更有争议。以pro域名为例,它旨在用于认证专业人员。但谁是专业人士?并由谁证明?医生和律师显然是专业人士。但是自由摄影师,钢琴教师,魔术师,水管工,理发师,灭虫者,纹身师,雇佣兵和妓女呢?这些职业是否专业,从而有资格申请pro这个域名?如果是,谁来证明这些个体从业者?
一般来说,获取二级域名(例如name-of-company.com)非常简单。它只需要去相应的顶级域名(com在这种情况下)的注册商检查是否有可用的名称,而不是别人的商标。如果没有问题,请求者支付小额年费并获得名称即可。到目前为止,几乎每个常见的(英语)单词都已经在com域中被采用。比如以家居用品、动植物、身体组成等英文命名的域名。几乎所有常见的英文单词都被使用了。
每个域都由从它到根的路径命名。组件以句点分隔(发音为“dot”)。因此,Sun Microsystems的工程部门可能是eng.sun.com,而不是UNIX风格的名称,例如/ com / sun / eng。注意这个分层的命名意味着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(Vrije Universiteit,荷兰)
cs.keio.ac.jp(日本庆应义塾大学)
要创建新域,需要对其进行包含的域的权限。例如,如果VLSI组在Yale中启动并希望被称为vlsi.cs.yale.edu,则必须获得管理cs.yale.edu的人的许可。同样,如果一所新的大学是特许的,例如南达科他州北部的大学,它必须要求edu域的经理将其分配给unsd.edu。通过这种方式,可以避免名称冲突,并且每个域都可以跟踪其所有子域。一旦一个新的域名被创建和注册,它就可以创建子域名,比如cs.unsd.edu,而无需获得树上的任何人的许可。
命名遵循组织边界,而不是物理网络。例如,如果计算机科学与电子工程系的部门位于同一栋大楼内并共享相同的局域网,则它们可能具有不同的域。同样,即使计算机科学分裂在Babbage Hall和Turing Hall,两栋建筑中的主机通常都属于同一个域。
2.资源记录
每个域,无论是单个主机还是顶级域,都可以拥有一组与其关联的资源记录。 对于单个主机,最常见的资源记录就是其IP地址,但也存在许多其他类型的资源记录。当解析器向DNS提供域名时,它返回的是与该名称关联的资源记录。 因此,DNS的主要功能是将域名映射到资源记录上。
资源记录是五元组。尽管为了提高效率而使用二进制编码,但在大多数论述中,资源记录都以ASCII文本形式显示,每条资源记录一行。我们将使用的格式如下:
Domain_name Time_to_live 类 类型 值
Domain_name通知此记录适用的域。通常,每个域都有很多记录,数据库的每个副本都保存有关多个域的信息。因此,该字段是用于满足查询的主要搜索关键字。数据库中的记录顺序并不重要。
Time_to_live字段显示记录的稳定性。 高度稳定的信息被分配一个很大的值,例如86400(1天内的秒数)。 高度不稳定的信息被分配一个小的值,例如60(1分钟)。稍后我们讨论缓存时,我们会回到这一点。
每个资源记录的第三个字段是Class。对于Internet信息,它总是IN。对于非互联网信息,可以使用其他代码,但实际上这些信息很少见。
类型字段陈述了这是什么样的记录。最重要的类型如图7-2所示。
图7-2 IPv4的主要DNS资源记录类型
SOA记录提供了有关名称服务器区域(如下所述)的主要信息源名称,其管理员的电子邮件地址,唯一序列号以及各种标志和超时。
最重要的记录类型是A(地址)记录。它拥有某些主机的32位IP地址。每个Internet主机都必须至少有一个IP地址,以便其他机器可以与其通信。某些主机有两个或多个网络连接,在这种情况下,每个网络连接(以及每个IP地址)将有一个A类资源记录。 DNS可以配置为循环访问这些,在第一个请求上返回第一个记录,在第二个请求上返回第二个记录,依此类推。
下一个最重要的记录类型是MX记录。它指定准备接受指定域的电子邮件的主机的名称。因为并不是每一台机器都能够接收邮件,所以这种记录方式被使用了。如果有人想发送电子邮件至bill@microsoft.com,发送主机需要在microsoft.com上找到愿意接受电子邮件的邮件服务器。MX记录可以提供这些信息。
NS记录指定名称服务器。例如,每个DNS数据库通常都有一个针对每个顶级域的NS记录,因此,可以将电子邮件发送到命名树的较远部分。我们稍后会回到这一点。
CNAME记录允许创建别名。例如,一位熟悉互联网命名的普通人员,希望向M.I.T计算机科学部门的用户发送一条消息给其登录名。可能会猜测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不同,CNAME实际上只是一个宏定义,PTR是一种常规的DNS数据类型,其解释取决于它所在的上下文。实际上,它几乎总是用于将名称与IP地址相关联,以允许查找IP地址并返回相应机器的名称。这些被称为反向查找。
HINFO记录允许人们找出一个域对应的机器和操作系统。最后,TXT记录允许域以任意方式识别自己。这两种记录类型都是为了用户的方便。这两个都不是必需的,所以程序不能指望得到它们,就算得到了也可能无法处理它们。
最后,我们有价值领域。该字段可以是数字,域名或ASCII字符串。语义取决于记录类型。图7-2给出了每种主要记录类型的Value字段的简短描述。
在某个域的DNS数据库中可能找到一些信息种类的示例,请参见图7-3。该图描绘了图7-1中所示的cs.vu.nl域的(半假设)数据库的一部分。该数据库包含七种类型的资源记录。
图7-3 一个cs.vu.nl类型的DNS数据库的一部分
图7-3中的第一个非注释行提供了有关该域的一些基本信息。接下来的两行提供了有关域所在位置的文本信息。然后是两个条目的首位置和第二位置来提供给person@cs.vu.nl电子邮件,zephyr(一个机器的名字)应该首先被尝试。如果失败了,那么应该尝试下一个选择。
在为了便于阅读而添加空白行后,会出现一些信息,告诉我们这些快捷方式是运行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-4给出了划分图7-1名称空间的一种可能方式。每个区域都包含树的一部分,并且还包含名称服务器,该服务器包含有关该区域的信息。通常,一个区域将有一个主名称服务器,它从磁盘上的文件获取信息,还有一个或多个从名称服务器,从主名称服务器获取信息。为了提高可靠性,区域的某些服务器可以位于区域之外。
图7-4 显示划分为区域的DNS名称空间的一部分
区域边界放置在区域内的地方是该区域的管理员。这个决定很大程度上取决于需要多少个名称服务器以及这些服务器的位置。例如,在图7-4中,耶鲁有一个用于处理eng.yale.edu而不是cs.yale.edu的yale.edu服务器,它是一个具有自己名称服务器的独立区域。当像英文这样的部门不想运行自己的域名服务器,而是像计算机科学这样的部门时,可能会做出这样的决定。因此,cs.yale.edu是一个单独的区域,但eng.yale.edu不是。
lt;
全文共6974字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[12391],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。