根名称服务器如何处理所有DNS请求?


18

几天前,我在阅读有关DNS的文章,并了解了如何处理请求。如果您浏览www.example.com,则将向根名称服务器发送请求以查看谁拥有该.com地址,然后另一个请求将转至另一个更本地的DNS服务器以查看谁拥有example.com。地址等。

从技术上讲,这13个根名称服务器如何能够同时处理地球上数十亿互联网用户所进行的所有请求而又不会受到ddos:ed的困扰?


11
顺便说一句,您对DNS工作方式的总结是错误的。向根名称服务器询问的问题不是“谁拥有.com?” 但是“ www.example.com的IP地址是什么?” (根名称服务器通过引用对.com所有者的答复)。根名称服务器可查看整个查询(这对于统计信息,数据挖掘等非常有用)。
bortzmeyer

@bortzmeyer整个名称发送到根服务器的主要原因是,并不是名称中的每个点都不一定是权限的边界。实际上,我认为在TLD之下总是存在权限边界,但是原则上不能保证。因此,将来可能会决定引入一个特殊的TLD,其中第二层由根服务器处理,这样当您查询根服务器时,a.b.c.example您将被告知是谁负责c.example而不是谁负责example
kasperd 2015年

Answers:


51

它们是13个高可用性服务器群集,而不仅仅是13个服务器。

除其他事项外,要求根名称服务器操作员具有足够的能力来处理其正常流量负载的三倍(RFC 2870)。这导致相当大的集群。

然而,根名称服务器仅用于顶级域本身的响应,即com.net.uk.ae.,等等,并且其查询根可以缓存该信息的域名服务器长达48小时,这显着地降低了在根名称服务器的负载。这导致较小的群集。

根名称服务器位于53个国家/地区的130多个物理位置;只有13个服务器名称,这是通过IPv4任意播的魔力实现的。

根名称服务器也有自己的网站,您可能会发现一些有趣的文章。


48 h是根目录中NS记录的TTL。但是它可以被TLD本身的名称服务器覆盖。例如,对于.jp,仅24小时。
bortzmeyer

好了,我们这里谈论的根域名服务器。:)
迈克尔·汉普顿

RFC 2870今天已经过时了。由于dDoS攻击,根名称服务器必须准备好响应其正常流量的三倍以上。
bortzmeyer

8
53个国家?是巧合还是他们像DNS查询端口一样选择了它?:D
Amyassin

10

他们没有。根名称服务器只需告诉您名称服务器要处理的内容即可com。从那时起,您无需再去处理它们内部的任何域com。根名称服务器不知道谁拥有example.com。它们是名称服务器,而不是com名称服务器。

slimsuperhero所说的也是如此。许多高容量的名称服务器使用任播来拥有一个IP地址,该IP地址由世界各地的许多服务器提供服务。


但是,如果有10亿用户在同一时间浏览不同的.com地址,则根名称服务器会处理所有请求吗?
Rox

3
不能。一方面,用户仅与递归名称服务器(连接到其他名称服务器以获取答案的服务器)对话,而根名称服务器则不是递归的(它们仅提供他们已经知道的本地信息)。用户与他们自己的名称服务器(通常由其ISP提供)交谈,后者仅需向根名称服务器询问一次处理的服务器com
David Schwartz

1
@DavidSchwartz是正确的-因此,从十亿个用户那里收到十亿个请求,而不是从十亿个用户那里得到大约一百万个请求,每个ISP服务于一千个用户。
Shadur

@Shadur:现在,com另一方面,for的名称服务器必须承受更大的冲击。
David Schwartz

1
而且我相当确定它们已适当缩放和聚类。
Shadur

6

每个根服务器实际上不是服务器,它们是巨大的服务器集群。除此之外,DNS答复会被缓存,因此并非每个请求都到达根服务器。


3

请注意, 不使用根服务器。通常,您使用Internet服务提供商提供的DNS服务器,如果您需要的信息在其本地缓存中,则通常可以立即响应。仅在不缓存的情况下,才询问其上游DNS服务器,最后才问到根服务器(然后将该响应缓存)


0

实际上,它的13个Anycast IP地址可解析为全球许多服务器。如果需要,您可以查看链接以找到那些服务器。所有这些服务器均由相关机构管理。

我们仍然仅使用13个IP地址(以及具有相同IP地址的服务器集群)的事实是,确保数据包大小不会超过512个字节。那么为什么?我们拥有的TCP可以超出此数据包的大小,为什么我们不能使用它呢?事实是,TCP涉及非常高的开销,因为它包含建立TCP连接的多个步骤和过程。因此,DNS查询的整个过程将变慢。

像DNS这样的事情永远不会慢,这就是为什么我们仍然使用相同的旧系统。


查询的答案.不再适合512个字节。由于现在必须使用IPv6,因此答案已增长到811个字节。使用EDNS,可以在单个响应中返回。但是,查询的.频率不是很高,因此几次往返都是麻烦。递归者主要需要了解根IP地址的最新更改,而这些更改很少更改。
卡巴斯德(Kasperd)

@kasperd我不确定。我检查了dig + trace的正常A记录或AAAA记录,所有响应(来自根服务器,顶级服务器或名称服务器)均在508到509字节之间。您能对此多说明一点吗?
Jaison

您需要使用EDNS或TCP来获得完整的响应。没有EDNS的UDP请求永远不会获得超过512字节的响应。
卡巴斯德(Kasperd),2017年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.