10分钟详解DNS 域名解析协议

视频讲解DNS 域名解析协议的架构设计,解析实现以及基于DNS 实现负载均衡和就近访问。

你好,我是好刚,一般我们在访问某个网站的时候输入浏览器的是域名,但是电脑实际是用IP 地址进行访问的。这就得有一个地址簿,可以根据网址域名查看具体的IP 地址。在网络世界,这个地址簿就是DNS 服务器。这一讲我们就来了解DNS 域名解析协议。

这期内容需要对域名的相关知识有基本了解,建议先学习我之前的一期视频《8分钟讲解根域名的知识》。

先说明视频内容来源:这期视频内容来源于极客时间刘超老师的课程《趣谈网络协议》第18 讲的内容。这是《趣谈网络协议》课程的地址。

1.DNS 服务器

首先我们来看看DNS 服务器的设计。所有人只要上网就需要使用DNS 域名解析,一旦DNS 服务器出了故障,整个互联网都会瘫痪;而且上网的人分布在全世界各地,所以DNS 域名解析一定要设计成高可用和分布式的。

在这种要求下,DNS 服务器被设计成了一种树状的层次结构:

•最上面是根DNS 服务器,用来查询顶级域DNS 服务器的IP 地址,常见的顶级域有:,, 等等;•然后是顶级域DNS 服务器,用来查询权威DNS 服务器的IP 地址,像 ,;•最后是权威DNS 服务器,它会返回域名的服务器IP 地址。

同时为了提高DNS 的解析性能,很多网络还会就近部署DNS 缓存服务器。

这里如果你对根域名,顶级域名不太了解,可以查看我之前的一期视频《8分钟讲解根域名的知识》。

2.DNS 解析

知道了DNS 服务器的设计结构,我们再来看看,对于一次典型的DNS 解析,它的处理流程是什么样的?

假设我们的电脑发起一个DNS 解析请求,问 的IP 是啥?

1.电脑会先看看本地电脑的 文件,看看里面有没有自定义设置,如果有就直接使用。2.如果没有,请求会发给本地DNS 解析服务器。这个本地DNS 服务器一般是由你的网络服务商,也就是电信,联通或者移动分配,它通常就在服务商的机房里。3.本地DNS 解析服务器收到请求后,会先看看缓存中有没有 的IP 地址,如果有就直接返回。如果没有,本地DNS 就会去问根域名服务器:“老大,能告诉我 的IP 地址吗?”。根域名服务器是最高层次的解析服务器,全球一共有13 套。4.根DNS 收到请求,发现后缀是 ,就会回复 顶级域名服务器的地址,让本地DNS 去问它。5.本地DNS 就转向问顶级域名服务器:“老二,请告诉我 的 IP 地址”。顶级域名服务器负责管理二级域名,它会回复 的权威DNS 服务器的地址。6.本地DNS 再转向权威DNS 服务器,问 对应的IP 是啥呀?权威DNS 服务器就会返回对应的IP 地址。7.最后本地DNS 将IP 地址返回给我们的电脑,电脑通过IP 和目标服务器建立连接。

这就是一次DNS 解析的全过程。需要注意一点:站在电脑的角度,它只发起了一次请求,整个DNS 递归查询过程都是本地DNS 服务器在处理,电脑只要坐等结果就行。

3. 负载均衡

在解析域名的过程中,DNS 除了可以返回域名对应的IP 地址外,它还可以做另外一件事,就是负载均衡和就近访问。

为了保证我们的应用高可用,我们往往会将代码和数据部署在多个机房,每个机房都有自己的 IP 地址。同时对于用户的访问,我们肯定希望北京的用户就近访问北京的数据中心,上海的用户访问上海的,使用电信宽带的用户访问电信机房的数据中心,联通的用户访问联通机房的,这样访问速度最快,用户体验最好。

一般我们是用全局负载均衡器(GSLB) 来做这种多机房和就行访问的事情。这里我们还是通过一个DNS 解析的例子,来看一看它的实现方式。

假设你的应用在全国有多个数据中心,托管在多个运营商。当一个客户端要访问 的时候,首先需要将域名转换为 地址进行访问,所以它要请求本地DNS 解析器。

本地DNS 递归地从根DNS 服务器,查到 的顶级域名服务器,最终查到 的权威DNS 服务器。

为了实现跨地域和跨运营商的就近访问,在 的权威DNS 服务器中,配置的就不是 的IP 地址,而是配置 别名,通过 的方式能让本地DNS 服务器去请求 GSLB 解析这个域名。

GSLB 在解析这个域名的时候,通过查看请求它的本地DNS 服务器所在的运营商和地址,就能知道用户的运营商和地址,这样GSLB 就会返回和用户相同运营商并且离用户最近机房的IP 地址给本地DNS 服务器。这里为了高可用,机房的IP 地址一般会配置多个,每个都能访问。

本地DNS 服务器拿到结果后会缓存一份,同时将结果返回给客户端。客户端拿到多个IP 地址,它可以随机选择一个IP 进行访问。

这样通过DNS 协议就实现了用户就近访问资源,减少访问时延,提升了用户体验。

4. 小结

最后小结,DNS 是网络世界的地址簿,通过它可以查询域名的IP 地址。DNS 服务器是按照树状结构组织的,并且通过缓存来增强性能。在解析域名的过程中,我们可以实现负载均衡和就近访问。

这就是全部内容,我是好刚,如果这个讲解对你有所帮助,也请你帮忙关注和转发。

内容声明,这篇视频是极客时间刘超老师《趣谈网络协议》课程第18 讲DNS 协议的学习笔记,内容没有原版课程详细,如果你想深入了解网络协议,就请订阅课程,这是《趣谈网络协议》课程的地址。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190620A0KI8O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券