互联网是通过IP地址进行互联的,比如百度的地址是61.135.169.121,在浏览器中输入这个IP就可以直接打开百度页面。但是,我们平时在浏览器中写的是百度的域名,域名其实就是IP地址的名字,显然名字比IP地址容易记得多。但是在茫茫的互联网海洋中,我们如何才能找到域名对应的IP呢?这就需要我们的主角DNS了。
DNS( )是域名解析服务的中文名称,提供域名到 IP 的解析服务。DNS 是 C/S 架构,有客户端和服务端两部分。服务端一般是 BIND(Name );客户端一般是其他应用程序调用的共享库。DNS 的主要服务端口是 UDP 53。
在了解DNS服务器之前,我们先来了解一下互联网上域名空间的结构,如下图所示:
从上图可以看出,域名是一个树形结构,有严格的层次结构。最高级节点称为根域名服务器(通常用‘.’表示),也是最重要的域名服务器。全球共有13台根域名服务器。
顶级域名服务器负责管理DNS中向顶级域名服务器注册的下一级域名(二级域名)。所有顶级域名服务器的名称和IP地址都必须向根域名服务器注册,也就是说,根域名服务器知道所有顶级域名服务器的名称和IP地址。
权威域名服务器是负责一个区域的域名服务器。权威域名服务器通常是指管理顶级域名以下的二级、三级、四级域名的服务器。顶级域名服务器也可以看作是权威域名服务器,但由于其特殊性,我们专门把它归为一类。
好了,现在我们可以看到一个域名是怎么生成的了。比如说它是一个三级域名,属于''的二级域名服务器,''属于'com'的顶级域名服务器,'com'属于根域名服务器。那么这个域名的完整形式应该是''。我们一般不会在浏览器中输入最后一个点,但实际上浏览器在处理的时候会帮我们自动补全。
说到域名查询,就不得不提本地域名服务器(Local DNS)。该类服务器不属于上述层次结构。个人电脑浏览器发送DNS请求时,查询请求被发送到本地域名服务器。本地域名服务器作为域名查询的代理,负责整个域名的查询并将查询结果返回给主机。以访问''为例:
1.用户在浏览器地址栏中输入。
2、浏览器向本地域名服务器查询“ ”的IP地址。
3、本地域名服务器向根发出查询,根确认自己没有' '对应的地址,但是知道这个域名属于'com',所以返回顶级域名'com'的名称服务器地址。
4、本地域名服务器继续向'com'查询,'com'确认自己没有''对应的地址,但是知道这个域名是属于''的,所以返回''的名称服务器地址。
5、本地域名服务器继续查询'',''确认有这个域名对应的IP地址,则返回''的IP地址。
6、本地域名服务器获取到地址后,将该地址返回给浏览器。
7.使用浏览器访问地址,打开网站页面。
这种逐层查询,直至找到查询结果的过程,就叫做迭代查询。为了保证迭代查询能够顺利进行,每一级域名服务器都有下一级域名服务器的名称和地址。也就是说,域名服务器如果想让互联网上所有人都能访问自己,就需要向上一级域名服务器注册。比如要增加一个新的域名,比如 ' ',就需要向 'com' 域名服务器注册,并申请将所有 ' ' 的请求转发给自己进行解析。
上面介绍了域名空间的结构和查询访问流程,可以看出越高级的域名服务器访问量就越大,DNS服务于全体互联网用户。为了减轻各级域名服务器的压力,DNS引入了缓存机制,浏览器、操作系统、本地域名服务器都会缓存DNS解析的结果,当用户下次访问同一个域名时,可以立即返回已经查询过的结果,大大减少了迭代查询带来的服务器压力和延迟。当然这种缓存机制也带来一些弊端,如果此时域名改变了绑定的IP地址,用户无法及时查询到新的IP地址,只有当缓存时间到期,用户重新发起完整的查询,才能获取地址。
缓存时间可以在域名所在的权威域名服务器上设置,光大银行的域名缓存时间为30秒,如果缓存时间设置过短,会给服务器造成过大压力,如果设置过长,又会导致更新不及时。
以上就是DNS的一些基本原理,现在我们再来看看基于域名的一些主要应用。
在办公网络内部部署办公域名解析系统,实现办公系统域名到IP地址的转换。除了这种主要部署场景外,商业银行一般部署互联网边界域名解析系统,在不同数据中心的每个互联网出口部署一套。多个数据中心意味着多个互联网出口,多个出口肯定有不同的互联网地址。用户访问的网站不会关心经过哪个数据中心,只想输入一个域名,快速打开需要的页面。在这种场景下,运维人员一般面临以下需求:
1、多个网点同时为用户服务,分担各个数据中心承担的线路带宽压力和流量压力。
2.保证良好的用户体验,让用户访问最快的链接。
3、当一条线路发生故障时,用户需要优先接入同一运营商的另一条线路,当某家运营商所有线路发生故障时,确保用户能够切换到其他运营商的线路,保证网站的可用性。
DNS是如何满足上述需求的呢?这里需要引入一个新的概念——“动态解析”。动态解析打破了名称与IP一对一的绑定模式,将同一个网站的不同地址返回给不同的用户,达到引导用户从不同的互联网入口访问的目的。动态解析需要做两件事:
1、了解用户的位置,引导用户访问距离用户物理位置最近的网站。我们知道距离越远,网络延迟就会越大,所以访问距离用户最近的数据中心会得到最好的访问体验。
2、访问站点的运营商应该和用户使用的宽带是同一个运营商,电信用户访问电信站点会比联通站点速度快,联通用户访问联通站点会更好。
为此,DNS引入了域名解析的拓扑算法。拓扑算法并不神秘,在DNS中预先配置了一个拓扑地址表,这个表明确定义了互联网地址的运营商和物理位置。当本地域名服务器在DNS上查询IP地址时,DNS就能知道本地域名服务器IP地址的运营商和位置,然后根据位置分配一个最近的网站的地址。这样就完美满足了上述两个需求。
拓扑算法最重要的依据就是拓扑地址表,如果本地域名服务器的地址在拓扑地址表中不存在怎么办?接下来我们讲一下DNS RTT算法,我们在每个互联网出口部署一个DNS,每个出口的DNS在获取到本地域名服务器的IP地址后,会反向探测用户侧的本地域名服务器,并根据丢包率、时延等网络数据,确定网络质量最好的出口地址返回给用户。
容灾切换是如何实现的?切换最重要的是感知服务网站的状态。对于DNS上配置的多个出口地址,DNS会定期检测并监控该地址的端口,如果发现不可用,则会将其标记为不可用。对于不可用的站点,即使满足拓扑或RTT的最优选择,也不会将该地址返回给用户,而是选择次优的可用地址。
以上这些DNS优化是对传统DNS功能的补充和延伸,也被称为智能DNS系统。当然,它也有一定的局限性,因为DNS是根据本地域名服务器的地址来确定用户的运营商和所在地,但本地域名服务器的网络状况并不能代表用户真实的网络环境,特别是如果用户不是通过运营商自动获取本地域名服务器,而是手动配置域名服务器(比如常见的8.8.8.8、114.114.114.114),那么DNS就有可能根据错误的信息进行错误的解析。当然这种情况比较少见,而且即使DNS分配的地址不是最优的,也不会影响用户访问。
CDN的全称是内容分发网络( )。CDN系统通过放置在网络各处的节点服务器组成的缓存服务器网络,根据网络流量和各节点的连接、负载情况,以及与用户的距离、响应时间等综合信息,将用户的请求实时重定向到距离用户最近的服务节点。其目的是使用户能够就近获取所需的内容,解决网络拥塞问题,提高用户访问网站的响应速度。
从CDN的描述中我们可以看出,CDN实现用户就近访问的原理是DNS动态解析,将用户的请求引导到距离用户最近的CDN节点。很多流量大的网站都使用了CDN技术,比如迅雷、淘宝、优酷、各大银行的门户网站等等,他们有的自建CDN网络,有的向CDN运营商购买服务,但最核心的基础是需要一套智能的DNS解析系统。
今天我们介绍了DNS的一些基础知识和智能DNS的一些应用,实际实现中还有很多细节和关键技术需要去了解,后续我们还会继续深挖DNS的技术细节,揭秘DNS劫持、DNS攻击与防护的秘密。
另外,还会有专门的文章介绍最近比较火的HTTP DNS技术,希望大家持续关注。
扫一扫在手机端查看
-
Tags : ip域名解析查询_浅谈DNS域名解析系统
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。