Сверхдетальное разрешение протокола DNS

опрос

🔊 Эта статья включена в ⭐CS-Wiki (предметы, рекомендованные Gitee, 0,9 тыс. звезд), добро пожаловать, звезда ~ 😊


0. Предисловие

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

1. Что такое протокол DNS

Прежде чем изучать протокол DNS, давайте сначала разберем два понятия доменного имени и IP-адреса:

  • айпи адрес: длинная строка цифр, однозначно идентифицирующая компьютер в сети.
  • доменное имя: Также известный как домен, это имя компьютера или группы компьютеров в Интернете, состоящее из строки имен, разделенных точками, которое используется для определения местоположения компьютера во время передачи данных (иногда также относится к географическому местоположению), напримерwww.baidu.com

Не знаю, не перепутают ли одноклассники доменное имя иURL-адресПонятие , можно понять таким образом, URL-адрес содержит доменное имя. Например:www.gitee.com/veal98URL-адрес иwww.gitee.com это доменное имя

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

💡 Протокол DNS может использовать UDP или TCP для передачи, а используемый номер порта — 53. ноDNS в основном транспортируется с использованием UDP.

2. Подробное доменное имя

❓ Кто определяет и управляет доменными именами? Нельзя просто так написать?

Высшим авторитетом в мире по доменным именам является организация под названием ICANN (Интернет-корпорация по присвоению имен и номеров) со штаб-квартирой в Калифорнии, США.ICANN управляет работой всемирной системы доменных имен..

Доменные имена на самом деле имеют определенную иерархическую структуру, сверху вниз:корневое доменное имя,домен верхнего уровня(домен верхнего уровня, TLD),дополнительный домен, (доменное имя третьего уровня)

① ДВУ

Давай сначала поговоримдомен верхнего уровня(TLD), доменное имя высшего уровня. Проще говоря, это последняя часть URL. Например, URLwww.baidu.comДомен верхнего уровня это.com. Основная часть работы ICANN заключается в том, чтобы определить, какие строки квалифицируются как домены верхнего уровня. По состоянию на июль 2015 года насчитывается 1058 TLD, которые можно условно разделить на две категории:

  • КлассрДВУ(gTLD), такие как.com,.net,.edu,.org,.xxxИ так далее, всего их более 700.
  • Другой типнДВУ(нДВУ), представляющие разные страны и регионы, такие как.cn(Китай),.io(Британская территория Индийского океана),.cc(Кокосовые острова),.tv(Тувалу) и др., всего более 300.

Разумеется, сама ICANN не будет управлять этими доменами верхнего уровня, потому что просто не может. Подумайте об этом, существует более 1000 доменных имен верхнего уровня, и под каждым доменным именем верхнего уровня находится много оптовиков, управлять каждым из которых было бы слишком хлопотно. Политика ICANN заключается в том, что каждый домен верхнего уровня имеетХозяинВсе дела этого доменного имени отвечает за хостинг. ICANN контактирует только с управляемыми продавцами, которыми легче управлять. Например,.cn Национальным доменным именем верхнего уровня является Китайский информационный центр сети Интернет (CNNIC), который определяет.cnРазличные политики для доменных имен.

② Доменное имя второго уровня

а такжедополнительный домен(Домен второго уровня, SLD) имеет разные значения в gTLD или ccTLD:

  • Доменное имя второго уровня под общим доменным именем верхнего уровня: обычно относится к сетевому имени, выбранному владельцем доменного имени, напримерyahoo.com(Бизнес-организации обычно используют свои собственные товарные знаки, торговые наименования или другие бизнес-символы в качестве собственного онлайн-имени, например,baidu.com)
  • Доменное имя второго уровня под доменным именем верхнего уровня страны: обычно относится к знаку, аналогичному общему доменному имени верхнего уровня, указывающему категорию и функцию владельца регистрации. Например, в.com.cnВ структуре доменного имени.comВ настоящее время он размещен в национальном доменном имени верхнего уровня..cnДоменное имя второго уровня под , представляет коммерческую организацию в Китае и так далее.

Домен уровнякакwww.baidu.comДоменное имя можно рассматривать как поддоменное имя доменного имени второго уровня, особенностью которого является то, что доменное имя содержит два.. Для владельцев/пользователей доменов все домены третьего уровня являются дополнениями к доменам второго уровня без отдельной платы.Доменное имя третьего уровня даже нельзя назвать доменным именем, его вообще называют "каталогом второго уровня" под доменным именем.

③ Имя корневого домена

Почемукорневое доменное имяГде это находится? Разве корневой домен не является самым верхним в иерархии? Почему вы не видите его в доменном имени?

Поскольку ICANN управляет всеми доменами верхнего уровня, это узел доменного имени самого высокого уровня, известный как корневой домен. В некоторых случаях,www.xxx.comзаписывается какwww.xxx.com., то есть в конце будет еще одна точка. Эта точка является корневым доменным именем.

Теоретически,Все запросы доменного имени должны сначала запрашивать имя корневого домена., потому что только имя корневого домена может сказать вам, какой сервер управляет TLD. На самом деле это так,ICANN ведет список (список корневых доменов) доменов верхнего уровня и соответствующих хостеров..

Например, я хочу посетитьabc.xyz, также сначала нужно запросить список корневых доменов, он мне скажет.xyzХостинг доменного имени принадлежит компании CentralNic. Список корневых доменных имен также содержит записи:.googleХостинг Google Inc.,.appleХостинг от Apple и не только.

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

3. Подробное объяснение сервера доменных имен

Сервер доменных имен относится к хосту и соответствующему программному обеспечению, управляющему доменным именем, которое может управлять соответствующей информацией иерархического домена, в котором оно расположено. Иерархия, управляемая сервером доменных имен, называетсяЗона (ЗОНА). Каждый уровень доменного имени имеет сервер имен:

  • корневой сервер имен
  • сервер доменных имен верхнего уровня
  • Авторитетный сервер доменных имен

Следующая картина очень интуитивно понятна:

Помимо указанных выше трех DNS-серверов, есть еще один DNS-сервер, не входящий в иерархию DNS, но очень важный, а именнолокальный сервер имен. Давайте объясним, для чего используются эти четыре сервера 👇

① Корневой сервер имен доменов

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

Поскольку ранний DNS-запрос оказался 512-байтным UDP-пакетом. Этот пакет может содержать до 13 адресов серверов, поэтому предусмотрено, что в мире существует 13 корневых серверов доменных имен, пронумерованных отa.root-servers.netдоm.root-servers.net. Десять из них расположены в США, по одному в Нидерландах, Швеции и Японии.

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

② Сервер домена домена верхнего уровня

Согласно логике корневого сервера доменных имен, управляющего доменным именем верхнего уровня, очевидно, что сервер доменных имен верхнего уровня используется дляУправление всеми доменами второго уровня, зарегистрированными в домене верхнего уровня.из,Запишите IP-адреса этих доменов второго уровня..

③ Авторитетный сервер доменных имен

Согласно приведенной выше логике, полномочный сервер доменных имен должен управлять всеми доменными именами третьего/четвертого уровня, зарегистрированными под доменным именем второго уровня, но это не так. доменное имя уровня/четвертого уровня соответствует серверу доменных имен, доменное имя Количество серверов будет большим, нам нужно использоватьРазделениеспособ решить эту проблему. Затем авторитетный сервер имен отвечает за управление "Площадь'' серверы имен.

❓ Что такое район? Как разделить участок?

Регионы и регионы на самом деле разные, и регионы можно разделить по-разному. Взяв в качестве примера Baidu, мы предполагаем, чтоfanyi.baidu.com,ai.baidu.com,tieba.baidu.comТри доменных имени третьего уровня. Мы можем разделить так,fanyi.baidu.comа такжеtieba.baidu.comпомещатьbaidu.comавторитетные серверы имен,ai.baidu.comпомещатьai.baidu.comАвторитетный сервер имен. а такжеbaidu.comавторитетные серверы имен иai.baidu.comАвторитетные серверы именравный статусКонкретное разделение определяется Baidu в зависимости от количества доменных имен и количества посещений.

Нарисуйте картинку, чтобы понять интуитивно:

④ Локальный сервер доменных имен

Помимо указанных выше трех DNS-серверов, есть еще один DNS-сервер, не входящий в иерархию DNS, но очень важный, т. е.локальный сервер имен(также называетсяавторитетный сервер имен). Локальный сервер доменных имен — это когда компьютер разрешаетПо умолчаниюСервер доменных имен, то есть предпочтительный DNS-сервер и альтернативный DNS-сервер, установленные на компьютере. Общие локальные службы DNS, такие как China Telecom, China Unicom, Google, Ali и т. д.

Каждый интернет-провайдер или университет, или даже отдельные факультеты университета могут иметь локальный сервер доменных имен.Когда хост отправляет запрос DNS-запроса, сообщение с запросом запроса отправляется на локальный сервер доменных имен хоста..Локальный сервер доменных имен управляет разрешением и сопоставлением локальных доменных имен и может запрашивать сервер доменных имен верхнего уровня..

Так как же локальный сервер доменных имен перенаправляет запрос на сервер доменных имен верхнего уровня?

4. Метод DNS-запроса

Существует два конкретных метода запроса DNS:

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

Так называемая рекурсия заключается в том, что если получатель запроса не знает содержания запроса, тоПолучатель будет выступать в роли запрашивающего, делать соответствующие запросы до тех пор, пока не будет получено желаемое содержимое, а затем возвращать содержимое исходному запрашивающему.

👍 В общих чертах, в рекурсивном запросе, если А запрашивает Б, то Б, как получатель запроса, должен дать ответ, который хочет А; в то время как итеративный запрос означает, что если у получателя Б нет того, что запрашивающий А нуждается в точном содержании, получатель B сообщает запрашивающему A, как получить содержимое, но не делает запрос.

Вообще говоря,Между сервером имени доменных имен использует итеративный запрос, чтобы избежать корневого сервера корня на давлении слишком велик. Это хорошо видно из следующих двух графиков.

1) Рекурсивный запрос:

2) Итеративный запрос:

5. Кэширование доменного имени

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

Записи DNS на компьютере кэшируются локально двумя способами: кэшем браузера и кэшем операционной системы.

1)кеш браузера: после того, как браузер получит фактический IP-адрес доменного имени веб-сайта, он кэширует его, чтобы уменьшить потерю сетевых запросов. Каждый браузер имеет фиксированное время кэширования DNS. Например, время истечения срока действия Chrome составляет 1 минуту. В течение этого периода DNS повторно запрашиваться не будет.

2)Кэш ОС: Кэш операционной системы — это фактически файл hosts, сконфигурированный пользователем. Например, файл hosts в Windows10 хранится в папке C:\Windows\System32\drivers\etc\hosts.

Система Windows открывает службу Cache DNS по умолчанию, имя обслуживанияDNSClient, вы можете кэшировать некоторые часто используемые доменные имена.

использовать командуipconfig/displaydnsВы можете просмотреть доменные имена, кэшированные на вашем компьютере.

⭐ При доступе в браузере сначала будет запрашиваться кеш браузера, если он не попадет, будут продолжаться запросы к кешу операционной системы, и, наконец, будет опрошен локальный сервер доменных имен, а затем локальный сервер доменных имен. рекурсивно искать запись доменного имени и, наконец, возвращать результат.Метод запроса между хостом и локальным сервером имен представляет собой рекурсивный запрос., то есть хост запрашивает локальный сервер доменных имен, тогда локальный сервер доменных имен как получатель запроса должен дать хосту желаемый ответ.

6. Полный процесс разрешения имени

Хорошо, объедините процедуру запроса DNS-запроса между доменным именем доменного имени, которое является кешем доменного имени, и представляет собой полный протокол DNS для разрешения доменного имени. Здесь мы используем прямой анализ в качестве примера (анализ доменного имени в IP-адрес):

1) Первый поискDNS-кэш браузера, поддерживает в кэше таблицу соответствия между доменными именами и IP-адресами;

2) Если попадания нет, продолжаем поискDNS-кэш ОС;

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

4) Если DNS-кэш локального сервера доменных имен не поражен, локальный сервер доменных имен будет запрашивать сервер доменных имен верхнего уровня следующими способами:итеративный запрос(Примечание: запрос между локальным сервером доменных имен и другим сервером доменных имен является итеративным запросом, корневые серверы имен во избежание чрезмерного давления):

  • Во-первых, локальный сервер именкорневой сервер именИнициируя запрос, корневой сервер доменных имен высшего уровня не указывает напрямую IP-адрес, соответствующий доменному имени, а возвращает адрес сервера доменных имен верхнего уровня, а значит, указывает путь к локальному сервер доменных имен и пусть идет сюда, чтобы найти ответ
  • Локальный сервер имен получает этосервер доменных имен верхнего уровняПосле адреса инициировать к нему запрос, получитьАвторитетный сервер доменных именадрес
  • Локальный сервер доменных имен инициирует запрос к нему по адресу авторитетного сервера доменных имен и, наконец, получает IP-адрес, соответствующий доменному имени.

4) Локальный сервер доменных имен возвращает полученный IP-адрес операционной системе, и в то же время сам кеширует IP-адрес

5) Операционная система возвращает IP-адрес браузеру, а также кэширует сам IP-адрес

6) В этот момент браузер получил IP-адрес, соответствующий доменному имени, и кэшировал IP-адрес.

Интуитивное понимание со следующим рисунком:

🎉 Подпишитесь на официальный аккаунт | Feitian телятина, получайте мгновенные обновления

  • Блогер является аспирантом Юго-восточного университета и использует свое свободное время для запускаПубличный аккаунт "Летучая телятина", впервые открывшийся 29 декабря 2020 г. и посвященный обмену оригинальными техническими статьями, связанными с основами работы с компьютером (структура данных + алгоритм + компьютерная сеть + база данных + операционная система + Linux), основами Java и руководством по проведению собеседований. Цель этого общедоступного номера состоит в том, чтобыЧтобы каждый мог быстро усвоить ключевые знания, целевые. Я надеюсь, что вы можете поддержать меня и расти вместе с телятиной 😃