首页 > 编程知识 正文

域名解析DNS的工作原理,简述DNS域名解析原理

时间:2023-05-05 11:33:57 阅读:205416 作者:4345

DNS — 域名服务器 一、概述 DNS是什么 DNS: 域名服务器(Domain Name Server)。域名解析就是域名到IP地址的转换过程,在Internet上域名与IP地址之间是一 一对应的。这个是本篇博客最重要的一句话,因为这就是DNS的本质。理解了这个我们就知道我们平时所见到的很多的域名其本质是什么了。 DNS 服务的类型

授权型 DNS:一种授权型 DNS 服务提供一种更新机制,供开发人员用于管理其公用 DNS 名称。然后,它响应 DNS 查询,将域名转换为 IP 地址,以便计算机可以相互通信。授权型 DNS 对域有最终授权且负责提供递归型 DNS 服务器对 IP 地址信息的响应。
递归型 DNS:客户端通常不会对授权型 DNS 服务直接进行查询。而是通常连接到称为解析程序的其他类型 DNS 服务,或递归型 DNS服务。递归型 DNS 服务就像是旅馆的门童:尽管没有任何自身的 DNS 记录,但是可充当代表您获得 DNS 信息的中间程序。如果递归型 DNS 拥有已缓存或存储一段时间的 DNS 参考,那么它会通过提供源或 IP 信息来响应 DNS 查询。如果没有,则它会将查询传递到一个或多个授权型 DNS 服务器以查找信息。

域名是什么

Internet域名是Internet网络上的一个服务器或一个网络系统的名字,在全世界,没有重复的域名。域名的形式是以若干个英文字母或数字组成,由“.”分隔成几部分,如WWW.CNNIC.NET.CN就是一个域名。

既然讲到了域名就不得不讲顶级域的划分,请见下图

世界上顶级域按两种形式划分:一种是以组织结构划分,比如net,gov,con,edu等等;一种以国家来划分,比如cn,jp等等;以国家划分的顶级域下面也可以按组织、功能等划分多个子域。 DNS查询类型

递归查询 - 在递归查询中,DNS 客户端要求 DNS 服务器(一般为 DNS 递归解析器)将使用所请求的资源记录响应客户端,或者如果解析器无法找到该记录,则返回错误消息。

迭代查询 - 在这种情况下,DNS 客户端将允许 DNS 服务器返回其能够给出的最佳应答。如果所查询的 DNS 服务器与查询名称不匹配,则其将返回对较低级别域名空间具有权威性的 DNS 服务器的引用。然后,DNS 客户端将对引用地址进行查询。此过程继续使用查询链中的其他 DNS 服务器,直至发生错误或超时为止。

非递归查询 - 当 DNS 解析器客户端查询 DNS 服务器以获取其有权访问的记录时通常会进行此查询,因为其对该记录具有权威性,或者该记录存在于其缓存内。DNS 服务器通常会缓存 DNS 记录,以防止更多带宽消耗和上游服务器上的负载。

二、DNS解析过程 前面讲到了,域名解析就是域名到IP地址的转换过程,那么这个转换过程具体是什么样的呢?请参考下面这幅图:

客户机提出域名解析请求,并将该请求发送给本地的域名服务器。

当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。

如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器(DNS),然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。

本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。

重复第四步,直到找到正确的纪录。

本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

这样来讲的话,肯定是不够生动的,所以举个例子:

一个用户在IE上打入一个网址www.sina.com.cn,按回车后。 系统首先查询本地DNS客户端缓存中是否有这个域名,如果你刚才已经访问过这个网站,那么缓存中就会有对应的IP,系统就可以直接根据这个IP来连接网站。如果本地缓存中无法找到对应的IP,系统将向DNS服务器提交查询请求。DNS服务器在收到请求后,先查询服务器的本地缓存中是否有对应的项,如果有,则返回。如果没有,DNS服务器将首先向 ".“根服务器查询 .cn的域名对应的DNS服务器。得到结果后,再在”.cn"服务器查询 “com.cn"的域名对应的DNS服务器;接着再向"com.cn"服务器查询 “sina.com.cn"对应的域名服务器。最后才能查到” www.sina.com.cn” 这个域名。

上面的图片略过于抽象,下面以一个实际例子来看:

用户打开 Web 浏览器,在地址栏中输入 www.example.com,然后按 Enter 键。

www.example.com 的请求被路由到 DNS 解析程序,这一般由用户的 Internet 服务提供商 (ISP) 进行管理,例如有线 Internet 服务提供商、DSL 宽带提供商或公司网络。
ISP 的 DNS 解析程序将 www.example.com 的请求转发到 DNS 根名称服务器。

ISP 的 DNS 解析程序再次转发 www.example.com 的请求,这次转发到 .com 域的一个 TLD 名称服务器。.com 域的名称服务器使用与 example.com 域相关的四个 Amazon Route 53 名称服务器的名称来响应该请求。

ISP 的 DNS 解析程序选择一个 Amazon Route 53 名称服务器,并将 www.example.com 的请求转发到该名称服务器。
Amazon Route 53 名称服务器在 example.com 托管区域中查找 www.example.com 记录,获得相关值,例如,Web 服务器的 IP 地址 (192.0.2.44),并将 IP 地址返回至 DNS 解析程序。

ISP 的 DNS 解析程序最终获得用户需要的 IP 地址。解析程序将此值返回至 Web 浏览器。DNS 解析程序还会将 example.com 的 IP 地址缓存 (存储) 您指定的时长,以便它能够在下次有人浏览 example.com 时更快地作出响应。
Web 浏览器将 www.example.com 的请求发送到从 DNS 解析程序中获得的 IP 地址。这是您的内容所处位置,例如,在 Amazon EC2 实例中或配置为网站终端节点的 Amazon S3 存储桶中运行的 Web 服务器。
192.0.2.44 上的 Web 服务器或其他资源将 www.example.com 的 Web 页面返回到 Web 浏览器,且 Web 浏览器会显示该页面。

三、DNS报文格式

DNS报文格式:由12个字节首部和4个长度可变的字段组成。

DNS查询报文中的问题部分格式如下,通常只有一个问题。

DNS响应报文中的资源记录部分:

标识字段由客户程序设置并由路由器返回结果。客户程序通过它来确定响应与查询是否匹配

16bit的标志字段被划分为若干子字段:

QR-1位,0表示查询,1表示响应报文。Opcode-4位,0表示标准查询,1表示反向查询,2表示服务器状态请求。AA-1位,表示授权回答。TC-1位,表示时可截断的,使用UDP时,它表示应当的总长度超过512字节时,只返回前512个字节。RD-1位,表示期望递归。该位能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为叠代查询。RA-1位,表示可用递归。如果名字服务器支持递归查询,则在响应中将该位置为1。rcode-4位返回码,0表示没有差错,3表示名字差错。名字差错只有从一个授权服务器上返回,它表示在查询中指定的域名不存在。随后的4个16位的字段说明最后4个变长字段中包含的条目数。对于查询报文,问题数通常是1,而其他3项均为0。对于应答报文,问答数至少为1,剩下的2项可以是0或非0。

查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。计数字节的值必须为0-63,因为标识符的最大长度仅为63。该字段无需以整32为为边界,即无需填充字节。

DNS响应报文中的最后三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录(RR)的相同格式。

域名是记录中资源数据对应的名字,它的格式和前面的查询名字段格式一样。

类型说明RR的类型码,它和前面的查询类型值是一样的。通常为1,表示互联网数据。

生存时间是客户程序保留该资源记录的秒数,资源记录通常的生存时间为2天。

资源数据长度说明资源数据的数量,该数据的格式依赖域类型字段的值,对于类型A资源数据是4字节的IP地址。

四、DDNS-动态域名服务 DDNS(Dynamic Domain Name Server)- 动态域名服务DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务项目器程序负责提供DNS服务并实现动态域名解析。
动态域名解析系统一般由两部分构成,如图所示。一部分是客户端程序,运行在用户的主机上。另一部分是服务器端程序,位于服务器端的主机上。服务器端分为响应服务器和DNS服务器,其中响应服务器负责响应用户的动态域名更新请求,DNS服务器可以采用国际上较为流行的Bind系统,实现域名解析服务并提供域名IP动态更新服务。当用户使用新的IP地址时,需向响应服务器申请更新该域名对应的IP地址。在收到客户端的更新数据后,响应服务器通过查询数据库,确认客户端的域名是否合法存在的,如果不是则不予理睬,若是合法存在的,响应服务器把相应的动态域名更新消息以命令的方式存储在数据库中,再由同步进程反映到DNS解析服务器,同时更新数据库中相应信息。完成了用户信息到DNS的传递,实现了动态更新。 五、DNS Proxy - DNS 代理 DNS 代理(DNS proxy)用来在DNS client 和DNS server 之间转发DNS 请求和应答报文,代替DNS Server 进行域名解析

DNS proxy 工作机制如下:

DNS client 把DNS代理设备当作DNS server,将DNS 请求报文发送给DNS Proxy设备,即请求报文的目的地址为DNS proxy 的IP 地址。

DNS Proxy设备收到请求报文后,首先查找本地的静态域名解析表,如果静态域名解析表中存在请求的信息,则DNS Proxy设备直接通过DNS 应答报文,将域名解析结果返回给DNS client。

如果静态域名解析表中没有请求的信息,则DNS Proxy设备将报文转发给DNS server,通过DNS Server 进行域名解析。

DNS Proxy设备收到DNS server 的应答报文后,将报文转发给DNS client。DNS client 利用域名解析的结果进行相应的处理。

ip name-server master 202.207.158.65 配置主DNS服务器。

ip name-server backup 222.222.222.222 配置备用DNS服务器

dnsproxy-enable 开启代理服务。

把PC的DNS client的Server设置为192.168.0.1(代理的IP)

六、DNS配置

常见DNS配置指令:

(no) ip domain lookup(关闭)激活基于DNS的名称地址解析(no)ip domain name-server(master/backup) ip-address(删除)指定(主/备用)域名服务器(no) ip domain name(删除)指定一个默认的域名(no)ip domain list name(删除)指定一个域名列表。ip domain primary-server address指定主域名服务器ip domain proxy enable/disable启动/关闭代理服务器功能show ip hosts detail显示默认域名、域名列表、域名服务器信息以及主机名-IP地址映射缓存表,消息ID(或回调函数地址)、提前通知的时间等。debug ip domain显示本模块的debug信息七、总结

我们都知道主机IP地址,是在网络通信过程中对我们主机的身份的标识。可是我们实现这个功能确是通过ARP协议来实现的,通过ARP协议我们可以从IP地址解析出我们主机的MAC地址(注意MAC地址从出厂的时候就被固定在我们的机器里面而且是全球唯一的,所以他能唯一标定我们的主机)。

同样的我们的IP地址,也可通过DNS域名解析服务来和相应的域名之间相互转换。他们之间的关系如下图所示:

我的另一篇有讲到ARP协议的博客可以参见:ARP-地址解析协议

如此,我们便可看出IP地址在我们网络通信当中的重要性了,但是IP地址是怎么来的或者说是怎么分配的呢?请参见:
DHCP服务机制分析

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。