DNS根服务器是什么?

DNS根服务器是什么?

DNS根服务器是什么?

最近经常听见人们提到所谓的“根服务器只有十三台”的传闻。这类传闻还有更加骇人听闻的展开,例如“13台根服务器,九个在美国[1],美国如此一来可以随便断网中国”。我暂且不考虑根服务器运营商的政治倾向,如果只考虑地理位置,我不认为这个观点是正确的。我将会在下面为大家科普一下根服务器相关的知识。

开始之前:基本概念和误区

DNS根服务器,就必须要先科普DNS。DNS是英文Domain Name System的缩写,这个全称翻译过来叫做“域名系统”。这个系统负责域名解析;在此我先举出一个例子,要上百度,你需要在地址栏中输入 [公式] 。 这里的 [公式] 就是一个域名。你要访问 [公式] ,光靠这个域名,你无法知道它到底在哪里。而通过DNS,计算机知道这个域名对应的IP地址是 [公式] 。有了IP地址,我们就可以用一个好记的名字访问百度了,[2]而如果我们没有DNS,我们要上百度就必须要记住一个跟网站名毫无关系的32位数[3]。

那么DNS根服务器是什么?DNS系统是一个树状的结构,我要获得百度的ip,需要经过如下过程:[4][5]

选择一个根服务器。

在根服务器查询com的地址。

在com查询baidu的地址。

在http://baidu.com查询www的地址。

我们可以发现,所有的域名查询都是从根服务器开始的。DNS根服务器有13组,标号从A到M,分别由12个运营商运营。[6][7]关于根服务器有一些误区:一个是“DNS根服务器有且只有13台”。一个是“你攻击根服务器就可以瘫痪互联网”。以下就是辟谣科普了。

地理位置:一个根有多个备份

为什么“根服务器只有13台”不正确呢?我在这里反问一句:运营商会傻到只架设一台服务器来处理所有DNS请求吗?一台服务器处理所有请求是一个很危险的状况:如果某一个有心人对你的服务器发起DoS[8],你的服务器就直接没了,搞不好甚至把处理器都烧了。所以,条件好一点的运营者,比如维基百科背后的维基媒体基金会,一般会架设多个服务器来处理收到的请求。根服务器同理[9]:从2002年开始[10],DNS根服务器的运营者便开始架设anycast[11]:用户访问一个根所对应的IP时,会优先选择对应该IP服务器中的地理位置较近的一台。

多点架设是一个双赢的措施:运营者不需要再担心有人会DoS掉他们的服务器了,一个倒下,别的顶上。对用户而言,不仅他们不再需要担心根服务器被DoS掉了,根服务器被架设在离他们近的地方还可以让延迟更小,访问速度更快。此外我们也无需担心阴招,美国拉了电闸,中国的网民不会受到影响。

用户端:DNS缓存

这个世界上有许多域名,但是我们需要面对的TLD是很少的。TLD全称为Top Level Domain,也可以叫顶级域,就是域名最后的.com、.cn、.net等。如果没有DNS缓存,为了查询一个TLD,我们可能需要大费周章地多次访问根服务器,安全性(如果有的话)也是一个问题。

顾名思义,DNS缓存是用来存放你最近的DNS查询的地方。这个地方就在你自己的电脑(手机)里头;通过DNS缓存,我们可以不问别人,自己就能够迅速查到com的IP地址。不仅仅是com,如果你频繁上百度,你也可以不问别人,迅速查出http://baidu.com到底在那里。访问外面的世界,一般少则十几毫秒,多甚至可以上千[12],但访问自己的电脑( [公式] )的延迟大多会小于1ms。因此,DNS缓存可以在访问互联网时减少不必要的延迟,同时也减少了我们对于根服务器的依赖。

DNS根服务器是什么?

结论

通过以上两个方面,我们便可以走出“只有13台根服务器”的误区,避免我们被少数文章拖向错误的结论,并且对我们的网络有更好的信任。