После злоупотребления Byte Interview пришло время разобраться в DNS

внешний интерфейс DNS

Я встретил байты несколько дней назад

👦🏻: "Что произошло с браузером от ввода URL до отображения страницы?"

👧🏻: %^&@#^& (Как я мог не быть к этому готов? После разговора с сетью на рендер)

👦🏻: «Вы только что упомянули DNS, давайте поговорим о процессе запроса DNS»

👧🏻: «DNS Query - это рекурсивный итеративный процесс ...»

👦🏻: «А как насчет конкретной рекурсии и итерации?»

👧🏻: "..."

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

Что такое DNS

DNS означает систему доменных именDomain Name Sсистема Когда мы вводим URL-адрес в браузере, браузеру необходимо знать IP-адрес сервера, чтобы отправить запрос на сервер, соответствующий имени хоста URL-адреса.Для браузера роль DNS заключается вПреобразование имени хоста в IP-адрес. Вот концепции, взятые из книги «Компьютерные сети: нисходящий подход»:

ДНС это:

  1. Реализован многоуровневый DNS-серверРаспределенная база данных
  2. Тот, который позволяет хосту запрашивать распределенную базу данныхпротокол прикладного уровня

То есть DNS - это протокол слоя приложений, мы отправляем запрос, который содержит имя хоста, которое мы хотим запросить, он вернет нас IP, соответствующую имени хоста;

Во-вторых, DNS - распределенная база данных, вся DNS-система, диспергированная во многих серверах DNS, расположенных по всему миру, на каждом DNS-сервере выполняется некоторые данные, эти данные позволяют нам наконец найти имя хоста, соответствующего IP.

Таким образом, процесс DNS-запроса, грубо говоря, заключается в том, чтобы спросить эти DNS-серверы, знаете ли вы, что такое IP этого имени хоста?Я не знаю? Знаете ли вы, какой DNS-сервер вы можете найти, чтобы найти его? пока нужный мне IP не будет найден.

Распределенная иерархическая база данных

Что распространяется?

В этом мире нет DNS-сервера, у которого есть сопоставление всех хостов в Интернете, и каждый DNS отвечает только за часть сопоставления.

Что такое слои?

Существует 3 типа DNS-серверов: корневые DNS-серверы, DNS-серверы домена верхнего уровня (TLD) и полномочные DNS-серверы. Их иерархия показана на рисунке ниже:

DNS 的层次结构.jpeg

Источник изображения: «Компьютерные сети: подход сверху вниз»

  • корневой DNS-сервер

Прежде всего, нам нужно уточнить, что такое корневое доменное имя, напримерwww.baidu.com, некоторые учащиеся могут ошибочно подумать, чтоcomфактически является корневым доменным именемcomдомен верхнего уровня,www.baidu.comПолное написаниеwww.baidu.com., последний.является корневым доменным именем.

Какова роль корневого DNS-сервера? Это следующий уровень, который управляет им, DNS-серверы домена верхнего уровня. Запрашивая корневой DNS-сервер, мы можем узнать IP-адрес DNS-сервера домена верхнего уровня, соответствующего имени хоста, а затем продолжать инициировать запросы запросов к DNS-серверу домена верхнего уровня.

  • DNS-сервер домена верхнего уровня

Кроме вышеупомянутогоcomЭто доменное имя верхнего уровня, а распространенные доменные имена верхнего уровняcn,org,eduЖдать. DNS-сервер домена верхнего уровня или TLD предоставляет IP-адрес авторитетного DNS-сервера следующего уровня.

  • Авторитетный DNS-сервер

Полномочный DNS-сервер может вернуть окончательное сопоставление хост-IP.

Что касается того, как взаимодействуют эти уровни серверов, мы поговорим о конкретном процессе запроса DNS далее, В сочетании с процессом запроса всем нетрудно понять взаимосвязь между ними.

локальный DNS-сервер

Учащиеся, которые уже имели представление о DNS, могут обнаружить, что в иерархии DNS в предыдущем разделе почему не упоминается локальный DNS-сервер? потому чтоСтрого говоря, локальные DNS-серверы не принадлежат к иерархии DNS., но это важно для иерархии DNS. Так что же такое локальный DNS-сервер?

У каждого интернет-провайдера есть локальный DNS-сервер, например, у домашнего интернет-провайдера, университетского интернет-провайдера, институционального интернет-провайдера, у всех есть один или несколько локальных DNS-серверов. Когда хост делает DNS-запрос, запрос отправляется на локальный DNS-сервер,Локальный DNS-сервер действует как прокси, и отвечает за запросВпередв иерархию DNS-серверов.

Далее, давайте через простой пример, посмотрите на процесс DNS-запроса - это то, как увидеть, как между клиентом и локальным DNS-сервером иерархией DNS-сервера интерактивна.

рекурсивный запрос, итеративный запрос

Как показано ниже, предполагается, что хостm.n.comхочу получить хостa.b.comIP-адрес, он пройдет следующие шаги:

DNS.png

  1. Во-первых, хозяинm.n.comотправить сообщение DNS-запроса на свой локальный DNS-сервер, содержащее имя хоста, которое нужно перевестиa.b.com;

  2. Локальный DNS-сервер перенаправляет пакет на корневой DNS-сервер;

  3. Корневой DNS-сервер замечаетcomпрефикс, он возвращается на локальный DNS-серверcomСписок IP-адресов соответствующих DNS-серверов домена верхнего уровня (TLD).

    Я имею в виду, я не знаюa.b.comIP, но эти серверы TLD могут знать, вы должны спросить их;

  4. Локальный DNS-сервер отправляет сообщение с запросом на один из серверов TLD;

  5. Сервер TLD замечаетb.comпрефикс, IP-адрес полномочного DNS-сервера возвращается на локальный DNS-сервер.

    Я имею в виду, я не знаюa.b.comIP, но эти авторитетные серверы могут знать, надо у них спросить;

  6. Локальный DNS-сервер отправляет запрос на один из авторитетных серверов;

  7. Наконец авторитетный сервер вернулсяa.b.comIP-адрес пользователя;

  8. Локальный DNS-сервер будетa.b.comСопоставление с IP-адресом возвращается хостуm.n.com,m.n.comвы можете использовать этот IP дляa.b.comОтправить запрос.

bqb4.jpeg

«Вы так много сказали, а как насчет рекурсии? А как насчет итерации?»

Не торопитесь, этот одноклассник, на самом деле рекурсия и итерация уже включены в вышеописанный процесс.

хозяинm.n.comна локальный DNS-серверdns.n.comВыданный запросрекурсивный запрос, этот запрос является хостомm.n.comЗапросите желаемое сопоставление IP-адресов с локального DNS-сервера от своего имени, и локальный DNS-сервер напрямую вернет результат сопоставления хосту.

И три последующих запросаитеративный запрос, в том числе локальный DNS-сервер, отправляющий запрос на корневой DNS-сервер, локальный DNS-сервер, отправляющий запрос на сервер TLD, и локальный DNS-сервер, отправляющий запрос на полномочный DNS-сервер,Все запросы выполняются локальным DNS-сервером, и все ответы возвращаются непосредственно на локальный DNS-сервер..

Итак, вот проблема, все DNS-запросы должны следовать этомурекурсия + итерацияРежим?

конечно, нет.

Теоретически,Любой DNS-запрос может быть как рекурсивным, так и итеративным.. Все запросы на рисунке ниже являются рекурсивными и не включают итерацию.

DNS2.png

Увидев это, у вас может возникнуть вопрос, знает ли TLD IP-адрес полномочного DNS-сервера?

emmm...

bqb7.png

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

Кэш DNS

Для того, чтобы мы могли быстрее получить желаемый IP, DNS широко использует технологию кэширования. Принцип DNS-кэширования очень прост. Во время DNS-запроса, когда DNS-сервер получает ответ DNS (например, содержащий сопоставление имени хоста с IP-адресом), он может кэшировать сопоставление локально. Следующий запрос может напрямую использовать содержимое в кеше. Конечно, кеш не является постоянным. Каждая запись сопоставления имеет соответствующее время жизни. По истечении срока жизни запись должна быть удалена из кеша.

Фактически,При кэшировании большинство DNS-запросов обходят корневые DNS-серверы., существует очень мало запросов, которые должны инициировать запрос к корневому DNS-серверу.

Мысли об интервью

Интервью было весьма полезным.Некоторые вещи я думал, что понял и мог понятно объяснить, но когда я действительно хотел это сказать, я не мог полностью разобраться.Описание спотыкалось, и я терял баллы в интервью. .

Так что не ленитесь, не рискуйте, учитесь на практике. взаимное поощрение.

Ссылаться на

Компьютерные сети (оригинальная книга, 7-е издание)