Я встретил байты несколько дней назад
👦🏻: "Что произошло с браузером от ввода URL до отображения страницы?"
👧🏻: %^&@#^& (Как я мог не быть к этому готов? После разговора с сетью на рендер)
👦🏻: «Вы только что упомянули DNS, давайте поговорим о процессе запроса DNS»
👧🏻: «DNS Query - это рекурсивный итеративный процесс ...»
👦🏻: «А как насчет конкретной рекурсии и итерации?»
👧🏻: "..."
В то время у меня в голове был общий процесс, но я не мог вспомнить детали, поэтому сегодня я разберусь с контентом, связанным с DNS.Если что-то не так, надеюсь, вы укажете на это.
Что такое DNS
DNS означает систему доменных именDomain Name Sсистема Когда мы вводим URL-адрес в браузере, браузеру необходимо знать IP-адрес сервера, чтобы отправить запрос на сервер, соответствующий имени хоста URL-адреса.Для браузера роль DNS заключается вПреобразование имени хоста в IP-адрес. Вот концепции, взятые из книги «Компьютерные сети: нисходящий подход»:
ДНС это:
- Реализован многоуровневый DNS-серверРаспределенная база данных
- Тот, который позволяет хосту запрашивать распределенную базу данныхпротокол прикладного уровня
То есть DNS - это протокол слоя приложений, мы отправляем запрос, который содержит имя хоста, которое мы хотим запросить, он вернет нас IP, соответствующую имени хоста;
Во-вторых, DNS - распределенная база данных, вся DNS-система, диспергированная во многих серверах DNS, расположенных по всему миру, на каждом DNS-сервере выполняется некоторые данные, эти данные позволяют нам наконец найти имя хоста, соответствующего IP.
Таким образом, процесс DNS-запроса, грубо говоря, заключается в том, чтобы спросить эти DNS-серверы, знаете ли вы, что такое IP этого имени хоста?Я не знаю? Знаете ли вы, какой DNS-сервер вы можете найти, чтобы найти его? пока нужный мне IP не будет найден.
Распределенная иерархическая база данных
Что распространяется?
В этом мире нет DNS-сервера, у которого есть сопоставление всех хостов в Интернете, и каждый DNS отвечает только за часть сопоставления.
Что такое слои?
Существует 3 типа DNS-серверов: корневые DNS-серверы, DNS-серверы домена верхнего уровня (TLD) и полномочные DNS-серверы. Их иерархия показана на рисунке ниже:
Источник изображения: «Компьютерные сети: подход сверху вниз»
- корневой 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.com
IP-адрес, он пройдет следующие шаги:
-
Во-первых, хозяин
m.n.com
отправить сообщение DNS-запроса на свой локальный DNS-сервер, содержащее имя хоста, которое нужно перевестиa.b.com
; -
Локальный DNS-сервер перенаправляет пакет на корневой DNS-сервер;
-
Корневой DNS-сервер замечает
com
префикс, он возвращается на локальный DNS-серверcom
Список IP-адресов соответствующих DNS-серверов домена верхнего уровня (TLD).Я имею в виду, я не знаю
a.b.com
IP, но эти серверы TLD могут знать, вы должны спросить их; -
Локальный DNS-сервер отправляет сообщение с запросом на один из серверов TLD;
-
Сервер TLD замечает
b.com
префикс, IP-адрес полномочного DNS-сервера возвращается на локальный DNS-сервер.Я имею в виду, я не знаю
a.b.com
IP, но эти авторитетные серверы могут знать, надо у них спросить; -
Локальный DNS-сервер отправляет запрос на один из авторитетных серверов;
-
Наконец авторитетный сервер вернулся
a.b.com
IP-адрес пользователя; -
Локальный DNS-сервер будет
a.b.com
Сопоставление с IP-адресом возвращается хостуm.n.com
,m.n.com
вы можете использовать этот IP дляa.b.com
Отправить запрос.
«Вы так много сказали, а как насчет рекурсии? А как насчет итерации?»
Не торопитесь, этот одноклассник, на самом деле рекурсия и итерация уже включены в вышеописанный процесс.
хозяинm.n.com
на локальный DNS-серверdns.n.com
Выданный запросрекурсивный запрос, этот запрос является хостомm.n.com
Запросите желаемое сопоставление IP-адресов с локального DNS-сервера от своего имени, и локальный DNS-сервер напрямую вернет результат сопоставления хосту.
И три последующих запросаитеративный запрос, в том числе локальный DNS-сервер, отправляющий запрос на корневой DNS-сервер, локальный DNS-сервер, отправляющий запрос на сервер TLD, и локальный DNS-сервер, отправляющий запрос на полномочный DNS-сервер,Все запросы выполняются локальным DNS-сервером, и все ответы возвращаются непосредственно на локальный DNS-сервер..
Итак, вот проблема, все DNS-запросы должны следовать этомурекурсия + итерацияРежим?
конечно, нет.
Теоретически,Любой DNS-запрос может быть как рекурсивным, так и итеративным.. Все запросы на рисунке ниже являются рекурсивными и не включают итерацию.
Увидев это, у вас может возникнуть вопрос, знает ли TLD IP-адрес полномочного DNS-сервера?
emmm...
Не обязательно, иногда TLD просто знает промежуточный DNS-сервер, и тогда этот промежуточный DNS-сервер находит полномочный DNS-сервер. В настоящее время для всего процесса запроса требуется больше пакетов DNS.
Кэш DNS
Для того, чтобы мы могли быстрее получить желаемый IP, DNS широко использует технологию кэширования. Принцип DNS-кэширования очень прост. Во время DNS-запроса, когда DNS-сервер получает ответ DNS (например, содержащий сопоставление имени хоста с IP-адресом), он может кэшировать сопоставление локально. Следующий запрос может напрямую использовать содержимое в кеше. Конечно, кеш не является постоянным. Каждая запись сопоставления имеет соответствующее время жизни. По истечении срока жизни запись должна быть удалена из кеша.
Фактически,При кэшировании большинство DNS-запросов обходят корневые DNS-серверы., существует очень мало запросов, которые должны инициировать запрос к корневому DNS-серверу.
Мысли об интервью
Интервью было весьма полезным.Некоторые вещи я думал, что понял и мог понятно объяснить, но когда я действительно хотел это сказать, я не мог полностью разобраться.Описание спотыкалось, и я терял баллы в интервью. .
Так что не ленитесь, не рискуйте, учитесь на практике. взаимное поощрение.