Что такое DNS и IP-адрес и как это работает?
В двух словах о DNS: что это такое, как работает система доменных имен и как решить вопрос медленного интернета с текущим DNS-сервером.
Что такое DNS?
Понятие DNS расшифровывается как Domain Name System, или, по-русски, Система Доменных Имен. Данный инструмент используется в качестве средства преобразования доменных имен в IP-адреса в момент отправки запроса на сервер. И в дополнение к основному функционалу, DNS является хранилищем этих обменных данных.
Обобщив, DNS можно рассматривать как регистр посещаемости разных веб-сайтов. В нем хранятся доменные имена и их IP (Internet Protocol).
История DNS
Истоки DNS берут свое начало во временах ARPANET, когда база данных интернета состояла всего из нескольких компьютеров. В ней присутствовал текстовый файл “hosts.txt”, который поддерживался Cтэнфордским научно-исследовательским институтом и использовался для хранения информации и общения между всеми существовавшими ПК.
Несколько позже, в 1983 году, Джон Постел обратился к Полу Мокапетрису с идеей создания чего-то похожего на то, каким мы сейчас видим DNS. Результатом работы стала служба BIND для машин Unix (Berkeley Internet Name Domain, 1984г), спроектированная четырьмя студентами: Дугласом Терри, Марком Пейнтером, Девидом Ригглом и Сонгняном Чжоу. В 1985 году был совершен переход на мультиплатформу и началось формирование DNS уже во всеми известной Windows.
Принцип работы DNS
Самый простой способ объяснить принцип работы DNS — провести параллель. И нет лучшей параллели, чем модель функционирования отеля.
Представьте, что вам нужно навестить друга в гостинице. Ваши следующие действия? Вы набираете номер ресепшена и спрашиваете у администратора номер комнаты друга. Для этого обязательно нужно назвать его имя, чтобы администратор мог найти вашего товарища в базе данных и позвонить ему с оповещением, тем самым узнав доступен он или нет.
Проводя параллель отеля с DNS, мы получаем следующую картину: вы — клиент, посылающий запрос на DNS сервер, который является администратором; клиент предоставляет информацию относительно имени товарища — это доменное имя, и номер его комнаты — IP-адрес.
Грубо говоря, когда вы набираете в браузере адрес сайта, браузер посылает запрос на DNS-сервер и проверяет зарегистрировано ли имя в базе данных. Получив положительный результат, сервер отвечает вам IP-адресом сайта, к которому вы пытаетесь получить доступ. Условный вид IP-адреса: 123.456.789.10 .
Углубляем знания. Доменное имя и IP-адрес
Для примера рассмотрим доменное имя www.google.com . Схема идентифицирования адресов работает по принципу “справа-налево”. В самом начале DNS-сервер проанализирует домен, который в данном случае носит название com , что означает commercial или, по-русски, коммерческий . Такой домен принадлежит к доменам верхнего уровня. Далее проводится работа над google , который является субдоменом (поддомен). Точка же используется для разделения доменов от субдоменов. Полное доменное имя может состоять из 253 символов.
Если вам вдруг понадобится узнать доменное имя, зарегистрированное на определенный IP-адрес, работа будет опять проходить через DNS-сервер. Например, вы отправили IP-адрес 31.13.79.246 . Сначала сервер обработает цифры 31 , затем 13 , 79 и наконец 246 , на которых он определит, что IP-адрес принадлежит ресурсу www.fb.com .
В DNS существует своя иерархическая структура. Чем-то она может напомнить биологическую, но все же она компьютерная и тут есть определенные отличия. В компьютерных структурах данных существует древо, в котором адрес 31 занимает верхнюю позицию и является первичным доменом ; адреса же 13, 79 и 246 являются последовательными субдоменами . Будучи завершающим цепочку, номер 246 представляет собой адрес серверной машины на которой расположен ресурс www.fb.com .
Эволюция DNS
На старте развития, основной файл базы данных поддерживался главным сервером, который требовал ручного обновления после каждого нового запроса и далее происходило копирование полученной информации на другие сервера. С ростом количества сайтов нагрузка возрастала и в скором времени главный сервер начал терять свою эффективность и встал острый вопрос автоматизации процесса. Это и стало стартом развития DNS.
Например, если вы создаете свой веб-сайт, теперь потребуется всего 24 часа, чтобы он занял свое почетное место в базах данных DNS.
В процессе развития разработчики ввели систему общения серверов “Начальник — Подчиненный”. В ней главный сервер ведет базу данных, а сервер-подчиненный занят лишь копированием ее информации, поддерживая возможность своевременного обновления. Для облегчения динамических апдейтов ввели механизмы NOTIFY и IXFR .
В NOTIFY, когда главный сервер обновляет базу данных, он посылает уведомления подчиненным серверам, которые затем копируют всю информацию. IXFR же устраняет необходимость копирования всей БД каждый раз при создании новых записей. Это существенно ускоряет динамический процесс обновления.
Алгоритмы поведения DNS
Как мы говорили в прошлых статьях, DNS проводит преобразования доменных имен в IP-адреса в момент отправки запроса на сервер. Способов таких преобразований существует два: рекурсивный и итеративный.
- Рекурсивный:
В этом случае происходит полное преобразование имени в адрес IP. Если в DNS присутствует информация о ресурсе и возможности доступа к нему, он ответит клиенту положительно. Если же DNS не находит нужной информации, то он переходит к итеративным запросам. - Итеративный:
В данном случае происходит преобразование только части имени. Например, в случае с сайтом www.google.com , сначала DNS выполняет запрос к серверу домена com , а затем только к поддомену google . То есть, происходит постепенная обработка информации.
DNS кэш
Отличительной особенностью DNS является возможность хранения запросов в виде кэша. Это позволяет сократить время ответа, если какой-либо другой сервер совершает аналогичный запрос и повышает нагрузку на сеть. Время в течении которого информация кэша остается действительной, задается администратором сайта индивидуально.
Уязвимости DNS
Как и любая другая система или служба, DNS также имеет свои уязвимости.
- Отравление кэша DNS:
Данная уязвимость выражается в подделывании DNS. Она часто используется злоумышленниками для изменения данных кэша и правильности распознавания IP-адресов. Таким образом пользователь может быть переадресован на вредоносный сайт, где впоследствии может заполучить вирус на свой компьютер. - Фишинговые атаки:
Такие атаки могут быть спланированы за счет визуального сходства некоторых символов на экране пользователя. Например, буква б и цифра 6 выглядят одинаково, пользователь кликает на них и получает переадресацию на вредоносный сайт.
Использование пользовательских DNS-серверов
В некоторых случаях DNS-сервер теряет свою производительность и открытие страниц тех или иных сайтов занимает целую вечность. В этом случае есть смысл задуматься над использованием пользовательских DNS.
Популярные DNS сервера
Поисковой гигант Google установил несколько серьезных серверов, способных одновременно обрабатывать многомиллионное количество запросов. Более того, они абсолютно бесплатны и доступны каждому пользователю.
8.8.8.8 и 8.8.4.4
Это частная компания, предоставляющая бесплатные и надежные DNS-сервера.
208.67.222.222 и 208.67.220.220
Заключение
DNS — это важный посредник между пользователем и сервером ресурса. Без него не было бы возможно интернет-подключение вовсе, ведь всей информации в сети нужна какая-то база данных, которая смогла бы обрабатывать многомиллионный поток пользователей. Это та самая незаметная частица, которая помогает нам уберечься от хаоса.