《域名的概念与机制》由会员分享,可在线阅读,更多相关《域名的概念与机制(55页珍藏版)》请在金锄头文库上搜索。
1、域名的概念与机制RFC1034、1035介绍2013-8-30技术研发中心1 DNS背景介绍2 域名空间和资源记录(DNSandRR)3 域名服务器(NS)4 解析器(Resolver)5 常用结构域名的历史主机名与IP地址映射需求nIP地址难于记忆n能否用便于记忆的名字来映射IP地址?域名的历史Hosts文件nHosts文件记录了主机名和IP地址的映射信息n由NIC(Network Information Center)负责维护HOSTS.TXTDNS(DomainNameSystem)DNS系统的作用n提供了主机名和IP地址间的转换DNS系统的模式n采用C/S结构DNS系统的结构n具有树状
2、结构的,联机分布式数据库系统基于使用的一些假设n数据库的初始大小和使用系统的主机成正比,但最终会和用户的数目成正比n大部分的数据改变比较慢,但是系统能够处理一些快速变化的子集n由相应的组织负责分布式数据库的维护n由于数据十分敏感且重要,一定要保证正确性n查询时要避免循环查询n域名系统假设所有的数据是在一个主文件中保存,这个主文件的内容分布存储于系统中的各台主机上,用户通过标准的查询程序Resolover查询基于使用的一些假设系统管理员需要提供:n区域(Zone)边界定义n主文件数据n主文件更新n更新策略描述域名系统需要提供n源数据的标准格式n查询数据库的标准方法n从其他服务器上更新数据的标准方
3、式DNS组成域名空间和资源记录(DomainNameSpaceandResourceRecords)n域名空间是一个树状结构,资源记录是与名字相关的一些数据域名服务器(NameServers)n保存域名树结构和相应的信息,可以缓冲各种数据,保存域名树中的任何部分解析器(Resolvers)n向域名服务器提出查询请求并将结果返回给客户的程序1 DNS背景介绍2 域名空间和资源记录(DNSandRR)3 域名服务器(NS)4 解析器(Resolver)5 常用结构定义和名词n域是因特网中一种管理范围的划分n顶级域、二级域、三级域(子域)等nDNS域名结构是包括多级域名的分层架构n顶级域名、二级域名
4、、三级域名(子域名)等n不同等级的域名之间使用点号分隔,级别最低的域名写在最左边n每一级的域名都由字母和数字组成,不区分大小写n域名的根域用”.”表示,以点号结尾的域名称为绝对域名定义和名词域名命名规则 := | := | . := := | := | - := | n := az、AZn := 09例如:A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPARR定义RR定义owner拥有此RR的域名type16位值,指定RR内的资源类型,抽象资源A主机地址CNAME别名的统一命名HINFO主机使用的CPU和OSMX用于域的邮件交换资源NS权威认证名字服务器PTR指向其他域
5、名空间的指针SOA标记区认证权威的开始RR定义class16位值,标记协议族或某一个协议实例IN:Internet系统,CH:Chaos系统TTLRR的生存时间,32位整数,单位是秒,用于Resolver缓存RR多长时间RDLENGTH16位值,RDATA的长度RDATA一种类型,有时是依赖于数据的类,长度可变A对于class是IN的,它是一个32位IP地址对于CH,它是后面跟一个16位八进制Chaos地址的域名CNAME域名MX一个域的邮件服务资源的主机名,主机名后有一个16位的配置值NS主机名PTR域名SOA一些域RR的文本表示MasterFilesn主文件:包含RR信息的文本文件。常以R
6、R的列表的形式来定义区n格式$ORIGIN $INCLUDE MasterFiles当主文件用于定义区时,需要注意:1、文件中的所有RR必须含有相同的类2、区顶点必须是一个SOARR3、如果存在授权同时又要求有glue信息,则glue信息必须存在4、区中权威节点以外的信息必须是glue信息主名和别名n现存的系统中有时会对相同的资源有不同的命名n主机、邮箱n指定其中一个为统一命名(主名),其余的为别名n域名系统提供使用统一命名的机制(CNAMERR)nCNAME RR中owner为别名,RDATA部分为统一命名n如果一个节点存在CNAME RR,不应该有其他的数据RDATA-CNAMECNAME
7、不会处理Additional段,但是NS可能会重新发起一个针对主名的查询RDATA-MXMXPREFERENCE:16位值,相同域名下RR的优先级,数值越小,优先级越高EXCHANGE:域名,指定可以充当邮件交换系统的主机Additional段为EXCHANGE指定主机的地址RDATA-NSNSNSDNAME:指定类和域的权威认证的主机NS记录中可以利用Additional段内容来查找A记录,或者作为参照使用时,发起一个属于glue信息的区的查找RDATA-PTRPTRPTRDNAME:指向域名空间某一位置的域名与CNAME类型,不需要处理Additional段RDATA-SOASOARDAT
8、A-AAADDRESS:32位网络地址(10.2.0.52or192.0.5.6)不需要处理Additional段。查询n查询:发向NS并要求响应的一个请求n以UDP或TCP形式进行传输n响应可以是查询结果、另一个NS地址或者错误信息n请求和响应有标准格式n主要使用的有标准查询、反向查询(可选)n查询信息的格式Header报文文头,必,必须存在,定存在,定义报文是文是请求求还是是应答、答、查询类型,其他段是否需要存在等型,其他段是否需要存在等Question包括查询名和其它参数Answer包括查询结果的RRAuthority包括一个RR,RR包含另一个NSAdditional包括一些在其他部分
9、使用RR时会有用的信息查询Header标准查询标准查询格式:nQNAMEnQTYPEn任意一种type类型nAXFR进行整个区传输的请求nMAILB邮箱相关记录的请求n*所有记录nQCLASSn任意一种class类型n*任意一种class标准查询QNAME=ISI.EDU,QTYPE=MX,QCLASS=INResponse:Answersection:Additionalsection:反向查询(可选)域字服务器反映资源和域名之间的映射关系标准查询:将域名映射到SOARR反向查询:映射SOARR到域名n主要用于调试以及和数据库支持相关的活动n不返回正确的TTLn查询结果不进行缓存n映射主机地
10、址到主机名时,要用IN-ADDR.ARPA域反向查询(可选)IN-ADDR.ARPA域逆向解析域(IN-ADDR.ARPA):实现逆向域名解析与反向查询的区别:该域名空间是根据基于地址的结果,因此可以保证查找到正确的数据而不用遍历整个域名树域名:除IN-ADDR.ARPA后缀外,最多有4个标签对于指定的主机或网关,IN-ADDR.ARPA域和普通的域可能在不同的zone中,两者的数据有可能不相同网关在不同域中的名字可能不同,只有一个是主名系统利用域数据库进行路由的初始化时必须有足够的网关信息以保证可以访问到正确的NS例:218.30.103.170170.103.30.218.in-addr.
11、arpa1 DNS背景介绍2 域名空间和资源记录(DNSandRR)3 域名服务器(NS)4 解析器(Resolver)5 常用结构域名服务器(NS)nNS用于存储构成域名数据库的信息nNS的最基本工作是响应查询nNS的数据被分成很多部分,称为区(Zone):n一个给定的区可以根据不同的NS来保证其有效性n给定的NS通常支持一个或多个区n区的划分方式有2种:class、cutn所有的区至少有一个节点,域名和所有特定区内的节点都是相连的n利用树形结构最靠近根的节点来标记一个区区(Zone)区的数据包含4个主要部分n区中所有节点的认证数据n定义区内顶节点的数据nNS RRnSOA RRn描述代表子
12、区的数据n访问服务器子区的数据(glue数据)所有这些数据都以RR的形式表示,所有区可以用RR集的形式描述区的维护和传输n区管理员的部分工作就是维护所有服务器上的区数据,当必须修改时,修改需要通知到所有的NS。n通常的自动更新模式是一个服务器是区的主服务器,管理员对区内的域名文件(master file)进行修改,修改后管理员通知主服务器装载新的数据,其它的非主服务器定期和主服务器进行同步。n为了知道是否发生了修改,非主服务器必须检查SOA的SERIAL域,只要有改变,SERIAL域就会改变。n当查询后知道区内的数据已经改变,非主服务器必须通过AXFR请求请求主服务器传送区数据。AXFR可能会
13、被拒绝而产生错误,但是通常情况下会得到一系列响应信息。查询和响应服务器的响应取决于是否支持递归查询n递归查询( Recursive )n查询方只送出一个查询, 由NS完成其它所需的查询后响应n返回本地信息或者错误码n使用递归需要客户端、服务器双方都支持n非递归查询(Non-Recursive or Iterator)n每一个查询直接给予指示性的响应, 由使用者端再进行后续的查询n返回本地信息或邻近NS的地址或者错误码NS算法nStep1:是否支持递归查询,如果支持,转Step5;nStep2:查询最靠近QNAMEancestor的节点所在的区,如未找到,转Step4;nStep3:在区内从上到
14、下进行匹配,匹配结束的条件有以下几个:n如果整个QNAME匹配,就找到了。n如果数据为CNAME,QTYPE不匹配CNAME,复制CNAME RR到answer段,QNAME变为CNAME RR的统一命名,转Step 1;否则复制所有匹配QTYPE的RR到answer段,转Step 6n获得一个参照(referral),复制NS RR到authority段,其他段随便放上什么地址或者关联RR,转Step 4n不可能匹配时,查看是否存在”*”。如果不存在,响应中设置错误并退出;否则,以RR和QTYPE匹配,匹配成功,复制到answer段,将RR的owner设为QNAME,转Step 6NS算法n
15、Step4:在cache中进行匹配,如果找到QNAME,复制所有匹配QTYPE的RR到answer段,如果没有从认证权威来的授权,在cache中找最好的复制到authority段,转Step6;nStep5:使用本地resolver响应请求。保存中间CNAME在内的结果到answer段到应答中;nStep6:仅使用本地数据,并试着加入其它可能有用的RR到查询的additional段,然后退出。通配符(Wildcards)nWildcards:以”*”作为域名开头的RRn查询结果不能缓存n不适用于以下情况:n查询是在别的区中n如果区中已经存在了它代表的某个域例如:WildcardRR有”*.X”
16、,如果区中已经包含了B.X,则*.X不代表B.X、A.B.X或X,而只能代表Z.X否定响应缓冲(可选)n否定响应缓冲:服务器返回一个否定响应和一个TTL,Resolver可以认为在TTL的时间之内相同的查询都会获得否定响应。n实现的方法是当数据是被认证时服务器加入一个SOARR到响应的附加区域。1 DNS背景介绍2 域名空间和资源记录(DNSandRR)3 域名服务器(NS)4 解析器(Resolver)5 常用结构解析器(Resolver)nResolver:通常以函数库的方式嵌在操作系统中,负责接收各类应用程序的DNS查询请求,并把请求转发给域名服务器。解析器与域名服务器之间存在两种工作方
17、式,递归式和非递归式。且域名服务器之间使用的也是这两种工作方式。n典型函数:n主机名到主机地址的解析n主机地址到主机名的解析n常用查询功能解析器(Resolver)nResolver的实现步骤:n将用户请求转化为查询报文n发送查询n尽可能地使查询得到解答n查询时间尽可能地短n避免过度的查询n处理应答n解析应答数据n匹配应答数据和查询Resolver的资源Resolver可以访问本地服务器保存的区数据;本地信息指缓冲和共享区数据,在有认证数据和缓冲数据时应该优先使用认证数据SNAME要要查询的域名的域名STYPE查询请求的QTYPESCLASS查询请求的QCLASSSLIST表示正在查询的域名服
18、务器和区,它保存Resolver的预测,预测希望查询的数据在什么地方,通过接收的数据,此结构内的数据会发生变化。它包括服务器地址,区内已知的服务器,历史记录,以及表示查询距离目标还有多远的标记(查询从树顶开始向下,直到目标)SBELT用于Resolver无法从本地信息知道应该查询哪个服务器时CACHE保存前一次响应的结果,因为Resolver会抛弃达到TTL时间的RR,所有大部分Resolver实现将接收到RR的时间转换为绝对时间,然后保存在缓冲中,Resolver可在查询时顺便将过期RR抛弃,也可定期进行维护Cache的使用不可以被缓存的数据类型:当对于某个ownername来说,相同类型的
19、多个RR都是可用的,Resolver应该缓存所有的RR或者都不缓存。当应答被裁剪而resolver无法知道它是否是一个完整的数据集时,应答不应该被缓存,因为很可能只是RR的一部分。缓存数据永远比权威认证数据优先级低,因而这种情况可能发生的场景数据不应该被缓存。反向查询的结果不应该被缓存。QNAME中包含”*”标签的标准查询结果不应该缓存。Resolver的算法Step1:在本地信息中查找,如果找到直接返回给客户端;Step2:找到最合适的用于查询的服务器;Step3:向这些服务器发出请求,直到得到响应;Step4:分析结果:如果响应给出了结果或包含名字错误,缓存数据并返回给客户端如果响应指出更
20、合适的服务器,缓冲授权信息,转Step2;如果响应显示CNAME,但并不是答案,缓冲CNAME,将SNAME改为CNAMERR中的统一名称,然后转Step1;如果响应显示服务器失败或其它不可识别的内容,从SLIST中删除此服务器,然后转Step3。1 DNS背景介绍2 域名空间和资源记录(DNSandRR)3 域名服务器(NS)4 解析器(Resolver)5 常用结构常用结构常用结构常用结构常用结构常用结构中国信息社会重要的基础设施建设者、运行者和管理者北京市海淀区中关村南四街四号中科院软件园 邮编: 55 以以上上有有不不当当之之处处,请请大大家家给给与与批批评评指指正正,谢谢谢谢大大家家!