DNS (Domain Name System)

В связи с тем, что обычному пользователю пользоваться Ip адресами для посещения веб ресурсов не удобно, придумали доменные имена. Смысл прост, пользователь вводит легко запоминающееся название (google.com, youtube.com, mail.ru, yandex.ru), которое еще и короче IPv4 адресов, а если сравнивать с IPv6, то тут комментарии и не нужны.

Здесь нам нужно знать пока о <то></то>м, как это примерно работает.

Принцип работы

f160564efad249418bccfad7aadcbe38.png

Если очень упростить схему, то есть DNS сервер, цель которого, на ваш DNS запрос по доменному имени, предоставить информацию. Это может быть IPv4, IPv6 адреса.

Так как из информации выше, нам необходим ip адрес ресурса, поэтому ваша система, когда видит, что в URL не IPv4/IPv6 адрес, делает запрос по протоколу DNS до DNS сервера, и получает в ответ IPv4/IPv6 адрес. Далее когда получен IPv4/IPv6 адрес, делает уже запрос по протоколу HTTP.

P/s в "по протоколу DNS и HTTP" я имею в виду, что верхним уровнем модели TCP/IP является соответствующий протокол. Когда данные уже "правильно" инкапсулировались.

Более подробную схему, нарисовала Julia Evans (https://twitter.com/b0rk)

9f3066b63cd8411b9bf50bae3c1b2838.png

7b5b6b0161ab48d69d108325525d7e85.png

Рассмотрим структуру DNS запроса:

Untitled

Transaction ID - уникальный идентификатор транзакции, с помощью него мы можем определить, что пакет принадлежит одной и той же сессии “запрос-ответ”.

Флаги:

Response (QR) - если 0, то пакет является запросом, если 1, то пакет является ответом.

Opcode - тип запроса, имеет следующие значения: 0 для стандартного запроса, 1 для инверсного запроса, 2 для запроса статуса сервера.

Trancated (TC) - актуально только для ответов, поэтому в данном случае 0.

Recursion desired (RD) - если 1 устанавливается в запросе, то значит, что клиент просит вернуть только ip адрес в ответ и не сообщать промежуточные ответы, также копируется в ответ.

Questions - количество записей в секции запросов, в данном случае 1.