Как корневые серверы имен могут обрабатывать все запросы DNS?

18

Несколько дней назад я читал о DNS и узнал, как обрабатываются запросы. Если вы зайдете на сайт www.example.com, то запрос отправится на корневые серверы имен, чтобы узнать, кому принадлежит этот адрес .com, затем другой запрос отправится на другой, более локальный DNS-сервер, чтобы узнать, кому принадлежит example.com. адрес и тд.

Как технически возможно, что 13 корневых серверов имен могут обрабатывать все запросы, сделанные миллиардами земных пользователей Интернета одновременно, без необходимости ddos: ed?

Rox
источник
11
Кстати, ваше резюме работы DNS неверно. Вопрос, заданный корневому серверу имен, звучит не так: «кому принадлежит .com?» но "каков IP-адрес www.example.com?" (корневой сервер имен отвечает ссылкой на владельца .com). Корневой сервер имен видит весь запрос (что полезно для статистики, сбора данных и т. Д.).
Борцмейер
@bortzmeyer Основная причина, по которой все имя отправляется на корневые серверы, заключается в том, что не каждая точка в имени обязательно является границей полномочий. На практике я считаю, что всегда существует граница полномочий чуть ниже ДВУ, но в принципе это не гарантируется. Следовательно, в какой-то момент в будущем может быть принято решение ввести специальный TLD, где второй уровень обрабатывается корневыми серверами, так что при запросе корневых серверов a.b.c.exampleвам будет сказано, кто отвечает, c.exampleа не кто отвечает example.
kasperd

Ответы:

51

Это 13 высокодоступных кластеров серверов, а не просто 13 серверов.

Помимо прочего, операторы корневых серверов имен должны иметь достаточную пропускную способность, чтобы в три раза превышать нормальную нагрузку трафика ( RFC 2870 ). Это приводит к довольно большим кластерам.

Тем не менее, корневые сервера имена служат только для ответов доменов верхнего уровня, то есть сам com., net., uk., ae., и т.д., и сервера имен , которые запрашивают корень может кэшировать эту информацию до 48 часов , что значительно снижает нагрузку на корневых серверах имен. Это приводит к меньшим кластерам.

Корневые серверы имен находятся в более чем 130 физических местах в 53 странах; только с 13 именами серверов это делается с помощью магии IPv4 anycast.

Корневые серверы имен также имеют свой собственный веб-сайт , который может вас заинтересовать.

Майкл Хэмптон
источник
48 ч - TTL записей NS в корне. Но это может быть отменено серверами имен самого TLD. Например, для .jp это всего 24 часа.
bortzmeyer
Ну, мы будем говорить о корневых серверах имен здесь. :)
Майкл Хэмптон
RFC 2870 довольно устарел сегодня. Из-за dDoS-атак корневой сервер имен должен быть готов ответить намного больше, чем в три раза, по сравнению с обычным трафиком.
bortzmeyer
8
53 страны? это совпадение или они выбрали именно так, как порт DNS-запроса? : D
amyassin
10

Они не Корневые серверы имен просто должны сказать вам, что обрабатывают серверы имен com. С этого момента вам не нужно обращаться к ним для обработки любого домена внутри com. Корневые серверы имен не имеют ни малейшего представления, кому они принадлежат example.com. Они корневые серверы имен, а не com- серверы имен.

То, что сказал Слисупергеро, тоже верно. Многие крупные серверы имен используют anycast, чтобы иметь один IP-адрес, обслуживаемый несколькими серверами по всему миру.

Дэвид Шварц
источник
Но если бы 1 миллиард пользователей одновременно просматривал разные адреса .com, будут ли корневые серверы имен обрабатывать все запросы?
Рокс
3
Нет. Во-первых, пользователи общаются только с рекурсивными серверами имен (которые соединяются с другими серверами имен для получения ответов), а корневые серверы имен не являются рекурсивными (они служат только локальной информацией, которую они уже знают). Пользователи общаются со своими собственными серверами имен (обычно предоставляемыми их интернет-провайдером), которым нужно только один раз запросить корневые серверы имен для серверов, которые обрабатывают com.
Дэвид Шварц
1
@DavidSchwartz - это правильно, поэтому вместо одного миллиарда запросов от одного миллиарда пользователей они получат примерно один миллион запросов от одного миллиона интернет-провайдеров, каждый из которых обслуживает тысячу пользователей.
Шадур
@Shadur: Теперь серверы имен, comс другой стороны, должны быть намного более массовыми.
Дэвид Шварц
1
И я уверен, что они масштабированы и сгруппированы соответствующим образом.
Шадур
6

Каждый корневой сервер на самом деле не является сервером, это огромные кластеры серверов. Кроме того, ответы DNS кэшируются, поэтому не каждый запрос достигает корневого сервера.

Gevial
источник
3

Обратите внимание, что вы не используете корневые серверы. Обычно вы используете DNS-сервер, предоставленный вашим интернет-провайдером, который обычно может немедленно ответить, если нужная вам информация находится в их локальном кэше. Только если не кэшировано, запрашивается их вышестоящий DNS-сервер, и только в конечном итоге запрашивается корневой сервер (и этот ответ затем кэшируется).

Турбьерн Равн Андерсен
источник
0

На самом деле его 13 Anycast IP-адрес, который разрешает множество серверов по всему миру. Вы можете посмотреть ссылку, чтобы найти эти серверы, если это необходимо. Все эти серверы управляются соответствующим органом.

Тот факт, что мы по-прежнему используем только 13 IP-адресов (и кластер серверов, имеющих одинаковый IP-адрес), заключается в том, чтобы гарантировать, что размер пакета не превысит 512 байт. Тогда почему? у нас есть TCP, который может выходить за рамки этого размера пакета, почему мы не можем его использовать? Дело в том, что TCP требует очень больших накладных расходов, поскольку включает в себя несколько шагов и процедур для установления TCP-соединения. Из-за этого весь процесс DNS-запроса будет идти медленно.

Такие вещи, как DNS, никогда не могут быть медленными, и поэтому мы все еще используем ту же старую систему.

Jaison
источник
Ответ на запрос .больше не умещается в 512 байт. Поскольку IPv6 теперь является необходимостью, ответ вырос до 811 байтов. С EDNS, который может быть возвращен в одном ответе. Однако запросы .не нужны так часто, что пара циклических обходов - это шоу-стоппер. В первую очередь это необходимо для рекурсоров, чтобы узнать последние изменения в IP-адресах корней, которые редко меняются.
kasperd
@kasperd Я не уверен. Я проверил dig + trace для обычной записи A или записи AAAA, и все ответы (от серверов корневого уровня, серверов верхнего уровня или серверов имен) имеют размер от 508 до 509 байт. Можете ли вы объяснить немного больше об этом?
Jaison
Вам нужно использовать EDNS или TCP, чтобы получить полный ответ. UDP-запросы без EDNS никогда не могут получить ответ более 512 байт.
Касперд