мойперсональный сайтВ Интернете вы можете лучше найти исторические статьи, и вы можете оставить сообщение в статье, добро пожаловать в гости
Может быть, все знают или задавали вопрос, который является классическим «что произошло от ввода URL-адреса в браузере до отображения страницы». Хотя этот вопрос прост, он действительно может увидеть разрыв в уровне между разными людьми из различных деталей ответа.
В этой статье в основном рассказывается о первом шаге после ввода URL-адреса —DNS
доменное имя похожеwww.google.com, а через ping
командой, вы можете запросить IP-адрес соответствующего доменного имени.
Так зачем вам доменное имя и IP?
Доменное имя, сосуществование IP
Прежде всего, позвольте мне объяснить, почему существует такая ситуация, когда доменные имена и IP-адреса сосуществуют. Есть два основных момента:
- Улучшить пользовательский опыт
- Повышение операционной эффективности
Объясните отдельно, длина IP-адреса 32 бита, если обычно выражать в десятичном виде, то будет такой длины, как это-192.168.1.0
, но представьте, что если мы хотим посетить определенный веб-сайт, нам нужно ввести такой длинный ряд чисел, опыт должен быть довольно плохим.Во-первых, многим людям очень больно запоминать такой длинный ряд чисел , не говоря уже о том, что веб-сайтов, которые мы обычно используем, должно быть больше одного.
Кроме того, если вы рекламируете свой веб-сайт другим людям, вы бла-бла-бла-бла-бла-бла-бла, а затем говорите: «Если вам интересно, посетите наш веб-сайт 192.168.1.0», а потом ничего.
Вот почему доменные имена до сих пор используются для облегчения запоминания человеческим мозгом.
Итак, зачем вам нужен IP-адрес? Поскольку IP-адреса в IPv4 нужны только4 байта, а доменное имя, представленное строкой, требует длины не менее десятков байт и даже сотен байтов, что значительно увеличивает нагрузку на базовый маршрутизатор.
Вот почему IP-адреса все еще используются. Люди используют доменные имена, а уровень маршрутизатора использует IP-адреса, точно так же, как мы пишем символы, которые можем распознать, и, в конце концов, компьютеры распознают набор двоичных файлов.
разрешение DNS
Зная эту предысторию, мы можем взглянуть на то, как «доменное имя» становится «IP-адресом».
Во-первых, мы знаем, что запрос будет отправлен на DNS-сервер, поэтому возникает вопрос, откуда браузер знает адрес DNS-сервера?
ответпредварительно сконфигурированный. Конечно это не единственный способ, DNS можно и через DHCP(Dynamic Host Configuration Protocol) распределяется динамически.
Например, конфигурация DNS в MacOS выглядит так.
Конечно, вы также можете просматривать и изменять через командную строку, адрес находится по адресу/etc/resolv.conf
.
С DNS-сервером вы можете подумать, что следующая вещь очень проста:
Я передам вам доменное имя, а вы сможете вернуть мне соответствующий IP-адрес. Вопрос в том, что сейчас в интернете десятки тысяч DNS-серверов, как мне узнать, на каком сервере находятся данные? Вы хотите просмотреть и запросить эти десятки тысяч серверов один за другим?
Я полагаю, что вы, конечно, не осознавали, что ввод доменного имени в браузере для отображения страницы займет так много времени, что также означает, что она определенно не проходится одним сервером.
Состав доменного имени
Чтобы понять, как DNS его оптимизирует, нам нужно сначала узнать компоненты доменного имени. Увидев это, вы, скорее всего, думаете:
Из чего он состоит? Разве это не просто набор строк?
На самом деле доменные имена создаются разнымиплощадьсостоит из каждого.
Отделяемая часть представляет собойплощадь.
Вот пример, предполагающий, что анализируемое нами доменное имяwww.google.com
, судя по нашему инерционному мышлению написания адреса доставки экспресс-доставки, размер каждой части этого домена может быть следующим:
www > google > com
Но на самом деле это не так, это:
. > com > google > www
Вы даже узнали, что самый большой по-прежнему.
. На самом деле полное доменное имя должно бытьwww.google.com.
,.
представлятькорневой домен, так как корневой домен имеет одинаковое значение для всех доменных имен, поэтому последний пункт мы обычно опускаем.
У каждого домена есть собственное имя собственное:
. > com > google > www
Корневой домен | Домен первого уровня | Доменное имя второго уровня | (имя поддомена) | Имя хоста
Конечно, мы знаем, что поддомены также могут быть разделены для доменных имен второго уровня, аналогичноmail.google.com
.
Итак, увидев это, вы должны быть в состоянии понятьДоменные имена иерархичныЭта концепция, позвольте мне привести более общий пример.
www подразделения google компании com.Купил.Google.com/bought/U/0/#i…
Условничество ДНС
Разобравшись с многоуровневыми доменными именами, вы узнаете, как оптимизируется DNS.DNSПроблема решена, то есть - многослойность.
DNS-сервер будет хранить данные доменного именираспределенныйДанные хранятся на каждом DNS-сервере, но данные одного и того же домена будут храниться на одном и том же DNS-сервере, и один и тот же DNS-сервер может хранить данные нескольких доменов.
Это может быть немного абстрактно, картинка стоит тысячи слов, но на самом деле это так:
С многослойностью данных запрос данных будет оченьчувство ритма.
Запрос данных доменного имени
Картинка стоит тысячи слов, при многоуровневом механизме весь процесс запроса будет выглядеть так:
Во-первых, он будет запрашивать настроенный DNS-сервер, который обычно является DNS-сервером в локальной сети или интрасети. Если не найду, спрошукорневой доменДа, скажи, приятель, мне это нужно здесьwww.google.com
IP-адрес пользователя.
Глядя на корневой домен, у меня его здесь нет, но я знаюcom
Адрес DNS-сервера домена, который он может знать.
потомcom
Посмотрите на DNS-серверы домена,www.google.com
Я тоже не знаю IP-адреса, но знаюgoogle.com
Адрес доменного сервера DNS, он может знать, вы у него спросите.
Просто продолжайте спрашивать, и в конце концов вы найдетеwww.google.com
соответствующий IP-адрес.
корневой сервер имен
После прочтения описанного выше процесса у вас могут остаться некоторые сомнения. Потому что при поиске DNS-сервера для запроса IP-адреса IP-адрес исходного DNS-сервера является конфигурацией локального компьютера. Затем в иерархическом запросе, как мне узнать, какойкорневой сервер? И как узнать IP-адреса этих корневых серверов?
Ответ встроен.
Наши устройства или все устройства, имеющие доступ к Интернету, имеют встроенный список корневых серверов. Всего существует 13 корневых DNS-серверов, которые[a-m].root-servers.net
, адреса этих корневых серверов можно получить напрямую, вообще не запрашивая.
Конечно, если немного подумать, 13 серверов сложно выдержать запросы интернет-пользователей по всему миру.зеркальный сервер.
видеть значит верить
Сказав так много виртуальных понятий, мы переходимdig
команду, чтобы действительно сделать это.
Видно, что вQUESTION SECTION
Полное доменное имя подwww.google.com.
дакорневой доменда, заднийIN
а такжеA
Что это значит?
Это связано с тем, что при запросе DNS-сервера для запросаТребуются три параметра, соответственно:
- доменное имя (например,www.google.com)
- Тип сети (В начале проектирования Класса рассматривался сценарий, при котором сосуществуют несколько сетей, но на самом деле существует только одна сеть — Интернет, поэтому значение этого параметра всегда будет —
IN
) - тип (например
A
представляет собой IP-адрес, иMX
адрес почтового сервера)
пока вANSWER SECTION
, это результат ответа службы DNS, на рисунке выше видно, что всегда есть6
Записи DNS, за которыми следуют соответствующие им IP-адреса.
из которых69
Это TTL, единица измерения — секунды, а это значит, что запрос не нужно повторно отправлять в течение 69.
Внизу находится статистическая информация, время, затраченное на этот DNS-запрос, а также адрес и порт запрошенного DNS-сервера. Этот адрес сервера является адресом DNS-сервера, настроенного на нашей машине.
Острые глаза, возможно, обнаружили, что приведенная выше картина не предназначена для того, чтобы быть правильной.корневой серверзапрос. Это потому, что эта команда дает эту частьопущен, мы можем добавить+trace
аргументы командной строки для подробного просмотраИерархический процесс запроса.
На этот раз мы используемwww.36kr.com
Например.
Как видите, на приведенном выше рисунке перечислены все корневые серверы доменных имен, а затем перейдите кcom
домен, а затем найти36kr.com
Домен пошел просить и наконец получилwww.36kr.com
IP-адрес пользователя.
механизм кэширования
Конечно, начинать каждый раз смотреть вниз с корневого сервера явно неразумно, ведь соответствие между доменными именами и IP-адресами меняется не часто, поэтому DNS-сервер будет кешировать результаты.
И, на изображении ниже:
Я только написал, что один DNS-сервер имеет одинаковый уровень информации о домене, а на самом делеИнформация о домене на разных уровнях может существовать на одном и том же DNS-сервере.,Например,com
домен иgoogle.com
Домены могут быть на одной машине.
Однако этот кеш действителен. Если данные DNS изменятся в течение этого срока действия, данные в кеше будут неверными, и DNS необходимо будет удалить вручную.
Эта статья была помещена в моемGithub github.com/sh-blog, добро пожаловать в Звезду. Следите за поиском в WeChat【Заметки о полном стеке SH】
Если вы считаете, что эта статья полезна для вас, не волнуйтесь.поставить лайк,обращать внимание,доля,оставьте сообщение.