КАК РАБОТАЕТ ИНТЕРНЕТ? DNS



Привет друзья!
Мы разобрали базовые системы в устройстве локальной сети, а сегодня я расскажу о DNS и том, как адреса сайтов превращаются в имена!

В прошлых статьях мы узнали, что компьютеры различаются по IP и MAC адресам, а NAT организует маршрутизацию между  локальной и глобальной сетью, но почему мы попадаем в гугл через адрес google.com, а не 216.58.217.36
Об этом и расскажу, поехали!

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

Тема это настолько сложная, что даже администраторы крупных организаций не всегда её полностью понимают. 
Я попытаюсь рассказать то, что знаю сам!

Система доменных имён многоуровневая. В схеме работы мы имеем дерево серверов DNS, каждый из которых отвечает за некоторую часть зоны доменных имён.

Когда наш телефон хочет узнать IP адрес доменного имени, вроде maps.google.com, он отправляет запрос на доменное имя в корневой домен, который передаёт запрос к серверу, отвечающему за .com, а с этого сервера затем передаётся запрос к серверу google, и с сервера google уже на maps.

Серверы DNS работают в двух режимах:
1. Итеративный - это когда если сервер отвечает за нужную доменную зону - возвращает ответ, а если не отвечает, то возвращает адрес DNS сервера, который должен иметь запрашиваемый адрес.

2. Рекурсивный - это когда сервер сам выполняет запросы к другим серверам DNS в поисках нужного адреса.

Два режима работы необходимы потому, что в системе DNS используется два типа серверов. Серверы, которые хранят информацию об отображении имён в адресах - работают в итеративном режиме, т.к. на них приходит большое количество запросов и для рекурсивного режима у них не хватит производительности. 
А есть серверы, которые занимаются разрешением имён для клиентов. Они работают в рекурсивном режиме, получают запрос от клиента, выполняют поиск в дереве серверов, получают ответ и возвращают его клиенту. 

Как правило сервер разрешения имён находится в локальной сети и предоставляется провайдером либо организацией. Адреса этих серверов наши компьютеры зачастую получают автоматически вместе с IP адресом по DHCP протоколу.

Другой вариант - использовать открытые серверы разрешения имён, которые предоставляют некоторые компании. Например - Google (8.8.8.8).

Это может быть полезно в вопросах безопасности.

После того, как DNS нашел IP адрес для доменного имени - он записывает его в кэш. Это позволяет оптимизировать производительность работы, но в этом случае администратор зоны имён может подменить адрес для определённого компьютера.

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

2. Незаслуживающий доверия ответ - это ответ, который получен от сервера, не являющегося ответственным за эту зону. Такие ответы могут прийти от DNS Resolver, который закешировал полученный ранее ответ. С момента создания записи данные могли измениться, поэтому данные доверия не заслуживают.

Протокол DNS использует модель клиент-сервер. В качестве клиента может выступать как клиент DNS, так и сервер DNS в рекурсивном режиме, который пересылает запросы другим серверам и таким образом выступает в качестве клиента в режиме запрос-ответ по протоколу UDP 53 порта.

Пакет DNS состоит из двух частей, заголовка и данных.
Заголовок состоит из 6 полей. 
Первое поле - идентификатор запроса (любое число должно быть одинаково в запросе и ответе). Второе поле "флаги" и третье поле состоит из четырёх полей, указывающих сколько данных в пакете (кол-во DNS запросов, ответов, авторитетных и дополнительных ответов.

В поле данных мы имеем информацию о запросах DNS, в которых указано доменное имя компьютеров, у которых хотят узнать IP адрес.

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

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

Поле "флаги" состоит из нескольких полей. 
1. QR -тип операции. Запрос или ответ.
2. OPCODE - тип запроса.
3. АА - флаг, указывающий, является ли ответ авторитетным (доверенным)
4. TC - указывает, был ли пакет обрезан.
5. RD - запрос на рекурсивный режим.
6. RA - рекурсивный режим доступен.
7. Z - зарезервировано.
8. RCODE - статус.

Формат DNS запроса очень простой, содержит только имя, тип и класс записи.

Формат ответа DNS более сложный,
Содержит 6 полей, это имя,тип записи и класс записи, время жизни пакета (время сохранения в кэше записи), длинна данных и данные ответа.

Наш твитр: @derkodierer

Comments

Popular posts from this blog

DATA FLOW: СТАТИЧЕСКИЙ АНАЛИЗ ПОТОКА ДАННЫХ

THE ANONYMOUS SHIELD

HOW'S ROUTER WORKING? DHCP