DNS: что это такое и как её используют
Рассказываем, как устроена DNS, зачем ей нужны серверы и как браузеры ищут IP-адреса.
Кадр: мультфильм «Душа»
Чтобы вы могли лайкать мемы в соцсетях и смотреть гайды по Python на YouTube, вам придётся зайти на эти сайты, а браузерам — как-то найти нужные адреса. Для этого используется DNS (domain name system, или система доменных имён), которая является чем-то вроде сталкера в мире интернета.
Рассказываем, как работает DNS и её серверы, а также разбираемся, зачем всё это вообще нужно.
Всё о системе DNS:
- что это такое;
- как она работает;
- что такое DNS-серверы;
- зачем нужны эти серверы и какие они бывают;
- как записывают данные на серверах;
- где находятся главные DNS-серверы;
- что такое DNS-протокол;
- что запомнить.
Что такое DNS
До того как появилась DNS, всю информацию о сайтах заносили в общую базу вручную. Это было во времена работы ARPANET — первой компьютерной сети, которую создали американские программисты. Она походила на огромную таблицу с тысячами сайтов. Чтобы добавить в неё новый, нужно было позвонить в сетевой информационный центр и рассказать им, что у вас за ресурс.
В какой-то момент ARPANET стала слишком сложна в обслуживании: появлялось всё больше сайтов, а запись в таблицу всё ещё велась вручную. Поэтому разработчики придумали новую — на этот раз автоматизированную — систему, DNS.
DNS — это распределённая система, которая помогает браузерам находить адреса сайтов по их именам. Работает она благодаря разветвлённой сети серверов, на которых хранится информация обо всех сайтах интернета. То есть сам принцип работы остался прежним — база данных (табличка) с перечнем всех сайтов мира, просто заносятся в неё данные уже не вручную, одним оператором, а автоматически.
Например, когда вы заходите на сайт Skillbox, вы вводите в адресной строке его имя: skillbox.ru. Но браузер не сможет подключить вас к нему просто по имени, потому что ему нужен IP-адрес.
На самом деле весь интернет работает именно с системой IP-адресов, а привычные нам названия нужны только для удобства людей: их проще запоминать и вводить. Поэтому всё, что вам нужно, — написать в адресной строке браузера skillbox.ru и нажать Enter. Дальше браузер всё сделает сам: отправит нужные запросы, разыщет IP-адрес и откроет страницу.
Вообще, DNS состоит из двух частей: протокола и сети серверов. Протокол отвечает за способ передачи данных по сети, а серверы представляют собой машины, которые помогают протоколу эффективно работать. Но когда говорят о DNS, чаще всего подразумевают именно протокол. Разберём его подробнее, но для начала посмотрим, как сама система работает.
Как работает DNS
Принципы DNS применяют уже довольно давно. По сути, это что-то вроде телефонной книги — как у наших бабушек и дедушек. Благодаря этим телефонным книгам они могли легко определить, кто пытался им позвонить, или найти номер телефона соседа, родственника, друга. Если же номер в книге не находился — значит, звонил какой-то незнакомец и разговаривать с ним вообще не нужно.
Когда вы заходите на сайт, вы вводите «номер», или его имя — например, vk.com, в браузере (аналоге телефона). Затем «телефонная станция», или DNS-сервер, соединяет вас с нужным абонентом. А чтобы сделать это, у сервера есть своя внутренняя «телефонная книга» с адресами разных сайтов. Если он нашёл в списке сайт с введённым вами именем, он без проблем подключит вас к нему. Если нет — браузер выдаст ошибку.
Единственное различие между телефонной книгой и DNS заключается в том, что по телефону вы звоните с помощью номеров, а к сайтам подключаетесь по их названиям. Но при этом у каждого есть свой номер — IP-адрес, по которому как раз и ищет DNS. Поэтому, когда вы набираете имя сайта и просите систему соединить вас с ним, на самом деле вы просите его узнать, есть ли IP-адрес с таким названием, и вернуть вам этот адрес.
Кстати, в браузер можно вводить и IP-адреса, просто запоминать их муторно и неудобно. Хотя до того, как придумали DNS, программисты именно так и подключались к сайтам — по их адресам напрямую.
Например, вы заходите на www.skillbox.ru и просите браузер подключить вас к нему. Он обращается к серверу, а тот — к своей базе адресов, чтобы найти похожее название. Если находит — возвращает браузеру IP-адрес, а браузер, в свою очередь, использует его, чтобы запросить главную страницу и показать её вам. Сайту skillbox.ru соответствует IP-адрес 178.248.237.96 (кстати, попробуйте ввести в адресную строку браузера эти циферки).
Что такое DNS-сервер
Информацию обо всех сайтах (а их очень много) нужно где-то хранить. Для этого используют DNS-серверы.
Сервер — это один или несколько специальных компьютеров, на которых хранятся IP-адреса сайтов. Каждый такой адрес привязан к своему имени, а имена нужны, чтобы их писать в адресной строке браузера.
В интернете таких серверов очень много. Они точно есть у каждого интернет-провайдера, VPN-сервиса или других IT-компаний поменьше. Через них каждую минуту проходят мегабайты информации от пользователей со всего мира.
Кроме крупных, есть ещё и маленькие, или персональные. Персональный — это тот, который можно настроить даже на телефоне. Благодаря нему можно, например, заблокировать рекламу.
Зачем нужны DNS-серверы и какими они бывают
Главная задача серверов — хранить данные о доменах и предоставлять информацию о них по запросам пользователей. А ещё они кэшируют DNS-записи с других серверов. Это позволяет браузерам быстрее получать данные о сайтах.
Один сервер не может хранить информацию обо всех сайтах в интернете. Поэтому они всегда работают в связке.
Давайте подробнее рассмотрим, как браузер обращается к серверам и как они после этого ищут нужный IP-адрес.
Когда пользователь вводит имя сайта в адресную строку браузера, компьютер сначала обращается к локальному файлу настроек DNS — файлу hosts. В нём содержатся IP-адреса всех сайтов, на которые пользователь заходил с этого устройства. Если нужного адреса там нет, компьютер направляет запрос на локальный сервер интернет-провайдера пользователя.
На локальном сервере происходит взаимодействие между другими серверами из региона, в котором находится запрошенный сайт. Локальный сервер несколько раз обращается к разным региональным и наконец получает информацию о сайте, а затем отправляет его обратно пользователю.
Чтобы локальный сервер облегчил себе жизнь в будущем и меньше обращался к другим, при получении нужного IP-адреса он сохраняет его у себя в памяти. Это и называется кэшированием.
Теперь при повторном обращении к сайту он откроется быстрее, потому что информация находится недалеко. Но кэш не хранится вечно — время от времени он очищается, а значит, редко запрашиваемые сайты почти каждый раз будут искаться «где-то там».
Бывает так, что IP-адрес меняется, — например, когда сайт переходит на другого хостинг-провайдера. В этом случае при попытке зайти на него пользователи будут некоторое время попадать на прежний IP-адрес, на котором уже ничего нет. Но в течение суток кэш локальных серверов обновится и всё начнёт открываться как надо.
Что такое типы записей DNS-сервера
В DNS есть специальные файлы, которые хранят связи между доменами и их IP-адресами. Также они хранят там информацию о поддоменах и почтовых серверах, если те есть у сайта. И всё это называется DNS-зоной.
Зоны содержат разные виды записей и помогают серверам понять, что за домен перед ними. Вот основные типы записей:
- A — IP-адрес обычного сайта;
- MX — адрес почтового сервера;
- CNAME — запись для поддоменов, которая указывает, к каким адресам прикреплён основной домен;
- NS — адрес сервера, где находятся все ресурсные записи;
- TXT — текстовая информация, которая относится к конкретному домену;
- SPF — список серверов, которые могут отправлять сообщения от имени указанного домена;
- SOA — главная запись зоны, где указаны все сведения о сервере.
Где находятся главные DNS-серверы
Всего существует 13 главных DNS-серверов. Они называются корневыми, и в них содержится информация обо всех сайтах интернета. Чтобы обезопасить Сеть и не потерять все данные разом из-за катаклизмов или чего-то ещё, у этих изначальных корневых есть полные копии, которые размещены в разных странах мира. Вместе с копиями количество корневых выросло до 123.
Распределились они так:
- 40 — в Северной Америке;
- 35 — в Европе;
- 6 — в Южной Америке;
- 3 — в Африке;
- 39 — в остальных странах.
Такое расположение связано с интенсивностью обращений к ним по регионам. В России находится пять копий корневых — в Москве, Санкт-Петербурге, Ростове-на-Дону, Новосибирске и Екатеринбурге.
DNS как протокол
DNS принадлежит к семейству интернет-протоколов и модели OSI (а именно прикладному уровню). Он по умолчанию содержится во всех операционных системах, чтобы компьютер мог общаться с другими машинами по сети. Плюс в него включены разные дополнительные фичи — для проверки целостности передаваемых данных и тому подобного.
Например, в 2010 году в DNS встроили расширение DNS Security Extensions (DNSSEC), которое отвечает за то, чтобы браузер получал надёжную, проверенную информацию. Конечно, фейковые новости это расширение не отсеет, а вот атаки злоумышленников, которые могут попытаться подменить нужный вам IP-адрес на что-то своё негодяйское, отразит.
Система должна обладать следующими важными характеристиками:
- распределённость администрирования — за разные части системы отвечают разные люди или организации;
- распределённость хранения информации — каждый сервер должен хранить информацию, которая находится в его зоне ответственности, а также данные из корневых серверов;
- кэширование информации — для обеспечения снижения нагрузки на DNS сервер может временно хранить данные не из своей зоны ответственности;
- иерархическая структура — серверы объединены в древовидную структуру, где каждый вышестоящий может делегировать работу нижестоящим;
- резервирование — одну и ту же информацию обслуживают несколько серверов, которые должны быть разделены физически и логически, чтобы обеспечить сохранность данных.
Такая сложная структура нужна для поддержания порядка и эффективности работы интернета.
Что запомнить
- DNS — это проводник в интернете. Он помогает браузерам находить адреса сайтов и успешно подключаться к ним.
- DNS состоит из двух частей: протокола и серверов. Протокол отвечает за передачу данных и поиск IP-адресов сайтов, а серверы хранят всю информацию о них.
- На самих серверах данные хранятся в упорядоченном виде. Там есть разные виды записей, которые говорят о том, что это за сайт, чтобы сделать поиск удобнее.
- Всего в мире существует 13 главных серверов, на которых располагается вся информация об интернете. Но, чтобы не потерять эти данные, серверы скопировали и разместили в разных странах — и всего их 123 штуки.