DNS的概念、用途、查询算法

您所在的位置:网站首页 域名的两种解析方式是什么 DNS的概念、用途、查询算法

DNS的概念、用途、查询算法

2024-07-09 19:25| 来源: 网络整理| 查看: 265

目录

DNS服务器分类

DNS查询算法

DNS域名称空间的组织方式

域名解析记录方式

DNS负载均衡

全局负载均衡GSLB

DNS缓存

​​​​​​HTTP DNS

       DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

        通俗的讲,我们更习惯于记住一个网站的名字,比如www.baidu.com,而不是记住它的ip地址,比如:167.23.10.2。而计算机更擅长记住网站的ip地址,而不是像www.baidu.com等链接。因为,DNS就相当于一个电话本,比如你要找www.baidu.com这个域名,那我翻一翻我的电话本,我就知道,哦,它的电话(ip)是167.23.10.2。

        DNS是由解析器以及域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。DNS使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。

        域名到IP地址的解析过程的要点如下:当某一个应用进程需要主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。

        若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

DNS服务器分类

DNS 的核心系统是一个三层的树状、分布式服务,基本对应域名的结构:

根域名服务器(Root DNS Server):管理顶级域名服务器,返回com、net、cn等顶级域名服务器的 IP 地址;

       全世界目前有13组域名根节点,由少数几个国家进行管理,而国内仅有几台根节点镜像,算上其他国家共有数百台的镜像,保证一定能够被访问到。

顶级域名服务器(Top-level DNS Server):管理各自域名下的权威域名服务器,比如 com 顶级域名服务器可以返回 apple.com 域名服务器的 IP 地址;

权威域名服务器(Authoritative DNS Server):管理自己域名下主机的 IP 地址,比如 apple.com 权威域名服务器可以返回 www.apple.com 的 IP 地址。

非权威域名服务器:许多大公司、网络运行商都会建立自己的 DNS 服务器,作为用户 DNS 查询的代理,代替用户访问核心 DNS 系统。

        这些 DNS 服务器的数量要比核心系统的服务器多很多,而且大多部署在离用户很近的地方。比较知名的 DNS 有 Google 的“8.8.8.8”,Microsoft 的“4.2.2.1”,还有 CloudFlare 的“1.1.1.1”等等。

DNS查询算法

        主机向本地域名服务器的查询一般都是采用递归查询,即如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步的查询。因此,递归查询返回的查询结果或是所要查询的IP地址,或是报错。

        本地域名服务器向根服务器的查询通常采用迭代查询,即当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“下一次应向那个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。根域名服务器通常把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应当向哪一个权限域名服务器进行查询。本地域名服务器就这样进行迭代查询。

虽然核心的 DNS 系统遍布全球,服务能力很强也很稳定,但如果全世界的网民都往这个系统里挤,即使不挤瘫痪了,访问速度也会很慢。

所以在核心 DNS 系统之外,还有两种手段用来减轻域名解析的压力,并且能够更快地获取结果,基本思路就是“缓存”。

其一是使用非权威域名服务器,另外的,操作系统里也会对 DNS 解析结果做缓存,如果你之前访问过“www.apple.com”,那么下一次在浏览器里再输入这个网址的时候就不会再跑到 DNS 那里去问了,直接在操作系统里就可以拿到 IP 地址。

另外,操作系统里还有一个特殊的“主机映射”文件,通常是一个可编辑的文本,在 Linux 里是“/etc/hosts”,在 Windows 里是“C:\WINDOWS\system32\drivers\etc\hosts”,如果操作系统在缓存里找不到 DNS 记录,就会找这个文件。

有了上面的“野生”DNS 服务器、操作系统缓存和 hosts 文件后,很多域名解析的工作就都不用“跋山涉水”了,直接在本地或本机就能解决,不仅方便了用户,也减轻了各级 DNS 服务器的压力,效率就大大提升了。

DNS域名称空间的组织方式

        我们在前面有说到根DNS服务器,域DNS服务器,这些都是DNS域名称空间的组织方式。按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例

域名解析记录方式

域名解析记录主要分为A记录、MIX记录、CNAME记录、NS记录和TXT记录:

A记录:A代表Address,用来指定域名对应的ip,例如将www.hello.com指定到 113.112.3.xxx, A记录可以将多个域名解析到一个ip地址,但是不能讲一个域名解析到多个ip地址

MIX记录:Mail Exchange,就是可以将某个域名下的邮件服务器直线给自己的Mail Server

CNAME记录:Canonical Name,即别名解析。所谓别名解析就是可以为一个域名设置一个或者多个别名,如将aaa.com解析到bbb.net、将ccc.com也解析到bbb.net,其中bbb.net分别是aaa.com和ccc.com的别名

NS记录:为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS服务器解析

TXT记录:为某个主机名或域名设置说明,如可以为ucloud.cn是指TXT记录为“中立安全科信赖”这样的说明

DNS负载均衡

        当一个网站有足够多的用户的时候,假如每次请求的资源都位于同一台机器上面,那么这台机器随时可能会蹦掉。处理办法就是用DNS负载均衡技术,它的原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等。

全局负载均衡GSLB

GSLB是Global Server load Blance的缩写,即全局负载均衡。目的是实现互联网上不同地域的服务器间的流量调配,保证使用户的请求能被离用户最近或者服务质量更好的服务器来处理。从而确保服务质量。

能通过判断服务器的负载,包括CPU占用、带宽占用等数据,决定服务器的可用性,同时能判断用户(访问者)与服务器间的链路状况,选择链路状况最好的服务器。因此GSLB是对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务,实现异地服务器群服务质量的保证。

DNS缓存

DNS 解析是迭代或递归查询,需要经过 根 DNS 服务器 ->顶级DNS服务器->权威DNS服务器这三步查找才能解析到域名对应的 ip,可想可知这个解析是有多么耗时,所以一般会有 DNS 缓存,DNS 缓存主要有「浏览器缓存」,「操作系统缓存」,「路由器缓存」,「ISP 缓存」四种

每次发起一个域名解析请求,都会依次在以上四个缓存里查找,如果命中缓存,则直接返回此域名对应的 IP,其中像 Chrome 缓存 1 分钟, ISP 缓存可能高达 1~2 个小时 

​​​​​​HTTP DNS

HTTP DNS使用HTTP与DNS服务器交互,代替传统的基于UDP的DNS协议,域名解析请求直接发送到HTTP DNS服务端,从而绕过运营商的Local DNS,其主要应用在通过 App 提供服务的业务上,因为在 App 端可以实现灵活的服务器访问策略,如果是 Web 业务,实现起来就比较麻烦一些,因为 URL 的解析是由浏览器来完成的,只有 Javascript 的访问可以像 App 那样实现比较灵活的控制。

优点:

灵活:HTTP-DNS 可以根据业务需求灵活的设置各种策略。

精准调度:HTTP-DNS能够直接获取到用户的IP地址,从而实现精确定位与导流

可控:HTTP-DNS 是自己开发的系统,IP 更新、策略更新等无需依赖外部服务商。

防止域名劫持:由于 HttpDns 是通过 IP 直接请求 HTTP 获取服务器 A 记录地址,不存在向本地运营商询问 domain 解析过程,所以从根本避免了劫持问题。

及时:HTTP-DNS 不受传统 DNS 缓存的影响,可以非常快地更新数据、隔离故障。

缺点:

开发成本高:没有通用的解决方案,需要自己开发。

侵入性:需要 App 基于 HTTP-DNS 进行改造。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3