想象一下,你在一个陌生的城市,想去一家餐厅品尝美食。你知道这家餐厅的名字,但却不知道它的具体位置。
这时,你可能会打开手机地图,输入餐厅的名字,然后地图会告诉你如何到达那里。
在互联网世界里,DNS(域名系统)就扮演了类似导航、带路人的角色。
DNS的诞生
在互联网的早期,计算机之间的通信是通过IP地址来进行的。
然而,由于IP地址是一串难以记忆的数字,如192.168.1.1,这对于人类的记忆和使用带来了极大的不便。
于是,为了解决这个问题,DNS应运而生。它的核心功能就是将容易记忆的域名(如www.dnspod.cn)转换为实际的IP地址(如183.60.155.197),以便我们更好的访问互联网。
DNS的运作原理
D妹在浏览器中输入一个网址www.dnspod.cn,然后快速地打开了想要访问的网站,这背后究竟发生了什么?
为了让大家更好的理解DNS的“上班”路线,下面请随D妹来探个究竟👇🏻
当D妹从浏览器中输入www.dnspod.cn后,将会进行以下过程:
01
本地 DNS 服务器首先向根 DNS 服务器发送请求查询顶级 DNS 服务器地址,既dnspod.cn的.cn地址。
02
获取顶级 DNS 服务器.cn地址后,本地 DNS 服务器向顶级 DNS 服务器发送请求查询权威 DNS 服务器地址。
03
因dnspod.cn域名解析托管在 DNSPod,则会获取到 DNSPod 权威 DNS 服务器地址。获取地址后,本地 DNS 服务器向 DNSPod 权威 DNS 服务器发送请求查询网站服务器地址。
04
权威 DNS 服务器返回网站服务器地址到本地 DNS 服务器。本地 DNS 服务器获取网站服务器地址后,浏览器向网站服务器地址发送请求,网站响应后则返回网页内容。
简单来说,我们从浏览器中输入网站域名后,会依次向根域名服务器、顶级域名服务器、权威域名服务器查询网站服务器的IP地址,获取IP地址后浏览器发送请求,网站响应后返回网页内容,然后就看到网站了。
从DNS的”上班“路线我们可以看出,我们要正常访问一个网站,DNS在机器背后可走了不少路。DNS域名解析包括两种查询模式,一种是递归查询,另一种是迭代查询。
递归查询
递归查询是客户端向本地 DNS 服务器发起的查询请求,要求本地 DNS 服务器必须返回一个结果。这个结果可以是目标IP地址,也可以是一个错误信息。
在递归查询中,本地 DNS 服务器如果没有请求的信息,它会向其他 DNS 服务器发起查询请求,并一直查询下去,直到找到结果或者返回错误信息。对于客户端来说,只需要发起一次请求,然后等待DNS服务器返回结果。
举个🌰:假设D妹想访问 dnspod.cn,D妹的设备会向本地 DNS 服务器发起一个递归查询请求。如果本地 DNS 服务器没有这个域名的缓存记录,它会向其他 DNS 服务器查询,比如向根服务器、顶级域服务器和权威域服务器查询,直到找到IP地址。最后,本地 DNS 服务器将结果返回给D妹的设备。
迭代查询
迭代查询是客户端向本地 DNS 服务器发起的查询请求,但 DNS 服务器不需要返回一个确切的结果。
如果本地 DNS 服务器没有请求的信息,它会返回一个其他可能知道结果的 DNS 服务器的地址。客户端需要自己去联系这个新的 DNS 服务器,发起新的查询请求。这个过程会不断重复,直到客户端找到目标IP地址或者返回错误信息。
举个🌰:假设D妹想访问 dnspod.cn ,D妹的设备会向本地 DNS 服务器发起一个迭代查询请求。如果本地 DNS 服务器没有这个域名的缓存记录,它会返回一个根服务器的地址。D妹的设备会向根服务器发起新的查询请求。根服务器可能会返回一个顶级域服务器的地址,D妹的设备继续查询,直到找到IP地址。
递归查询中,本地 DNS 服务器负责查询其他服务器并返回结果,客户端只需发起一次请求;而迭代查询中,客户端需要不断地向其他域名服务器发起新的请求,直到找到结果。
到这里,相信你对DNS已经有一定的认识了。那么再回到最开始,D妹在浏览器中输入一个网址www.dnspod.cn,然后会发生什么?
一般来说,就会像我们上面讲的DNS运作原理一样,会经过递归查询和迭代查询,最终看到网页的内容。(再来复习一下这张图)
再进阶一下,如果D妹访问的这个本地 DNS 服务器,服务区域内经常有很多用户访问这个网站,那么本地 DNS 服务器会将这个网站的IP地址保存在缓存里,那么D妹访问的时候可以直接从本地 DNS 服务器的缓存中查找IP地址,也就是只走递归查询,不需要再走迭代查询。这样可以减少每次查询时的性能消耗。
再再进阶一下,如果D妹经常访问这个网站,只要没有对缓存策略(cache-control)做特殊设置,一般D妹的浏览器会把网站对应的IP地址保存在缓存里,那么D妹就不需要走递归查询和迭代查询,直接就能向网站服务器发起请求,响应后就能看到网站的内容啦。
DNS核心作用就是实现域名与IP地址的相互转换,这样我们就可以通过输入域名访问网站,而不需要记住复杂的IP地址。它就像是网络世界的导航仪,为我们提供了方便、快捷、安全的网络访问服务。
所以,下次当你在浏览器中输入一个网址时,别忘了感谢那个默默为你指路的导航仪——DNS!
栏目介绍:
《D课堂》是腾讯云轻量云产品中心推出的一档内容丰富、实用性强的科普栏目。本栏目以域名、DNS解析、证书、备案等产品为核心,呈现寓教于乐的科普内容,同时还将分享实用的产品使用技巧,助您轻松驾驭云产品。
《D课堂》旨在通过每期的精彩分享,我们将由浅入深地剖析各类产品原理,与您一起学习DNS相关的知识,解答您在使用产品过程中遇到的各种疑问。欢迎您持续关注《D课堂》!
本期互动
关于DNS,你还有哪些感兴趣的内容or疑问?欢迎评论区留言告诉我们,在下一次《D课堂》中,期待能为你解答!