Назад | Перейти на главную страницу

Как мой браузер узнает, откуда брать данные с сервера?

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

Я очень хорошо знаю, как работают сами серверы, и довольно хорошо разбираюсь в большинстве компьютерных вещей.

Возьмем, к примеру, serverfault.com.

Я печатаю http://www.serverfault.com/ в адресную строку моего браузера. В этот момент мой компьютер выполняет обеспечить регресс DNS-поиск, чтобы получить IP-адрес.

Я знаю, что информация о DNS находится на DNS-сервере, но как мой компьютер узнает, где ее немедленно искать? Существуют ли DNS-серверы с фиксированными IP-адресами, которые мой компьютер автоматически ищет?

Во-вторых, как только мой компьютер получает IP-адрес serverfault.com, он переходит (в моем случае) в comcast, чтобы начать свой путь к серверам serverfaults. Как работает этот процесс? При запуске маршрута трассировки к serverfault.com он делает около 16 переходов, пока не найдет именно то, что я ищу.

Очевидно, что он не может установить прямое соединение с serverfault.com, потому что он будет использовать прямой физический маршрут к серверу, но что контролирует запрос через сеть? Что заставляет его использовать маршрут, который я вижу в маршруте следа?

Я знаю, что этот вопрос безумно открыт, но если бы я мог хотя бы получить несколько ссылок на внешние источники или знать, что искать в Google, это было бы очень полезно.

(Я опаздываю на эту вечеринку, но давайте посмотрим, что я могу с этим сделать.)

Вы спрашиваете о двух совершенно разных вещах - разрешении имен через DNS и IP-маршрутизации. Давайте разберемся с ними индивидуально.

Часть DNS

Я знаю, что информация о DNS находится на DNS-сервере, но как мой компьютер узнает, где ее немедленно искать? Существуют ли DNS-серверы с фиксированными IP-адресами, которые мой компьютер автоматически ищет?

Обычно клиентские компьютеры информируются об IP-адресах DNS-серверов, которые они должны использовать, посредством данных в «опциях», предоставленных им их DHCP-сервером (сервером, который предоставляет клиенту «аренду» неиспользуемого IP-адреса. использовать).

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

(Существуют более эзотерические методы для получения информации о DNS-сервере клиентам, но два вышеперечисленных покрывают более 90% случаев.)

Похоже, ваш компьютер находится в домашней сети и, вероятно, получает свой IP-адрес от DHCP-сервера, работающего либо на маршрутизаторе в вашей домашней сети, либо на DHCP-сервере вашего интернет-провайдера.

В случае домашнего маршрутизатора он получит IP-адрес от DHCP-сервера вашего интернет-провайдера и, в ходе получения этого IP-адреса, узнает IP-адрес (а) DNS-серверов, которые ваш интернет-провайдер намеревается использовать. . Некоторые домашние маршрутизаторы предоставляют адреса DNS-сервера ISP клиентам DHCP-сервера маршрутизатора. Другие домашние маршрутизаторы сами будут запускать «мини» DNS-сервер и направлять DHCP-клиентов на свой «мини-» DNS-сервер. Обычно этот «мини» DNS-сервер просто перенаправляет запросы на DNS-серверы провайдера.

Если ваш компьютер подключен напрямую к сети интернет-провайдера без маршрутизатора, то, скорее всего, ваш компьютер получает IP-адреса DNS-серверов провайдера от DHCP-сервера провайдера.

Дейтаграммы IP содержат IP-адрес назначения, а не имя, удобочитаемое человеком. Чтобы «разговаривать» с удаленным сервером, вашему компьютеру нужен IP-адрес этого удаленного сервера. Процесс «преобразования» удобочитаемого имени в IP-адрес (подходящий для включения в дейтаграммы IP в качестве адреса назначения) называется прямым поиском DNS.

Я не буду здесь подробно описывать рекурсивное прямое разрешение DNS, но, по сути, ваш клиентский компьютер отправляет запрос на свой DNS-сервер (тот, о котором он узнал от DHCP или который статически настроен) для имени «www.serverfault .com ". В конечном итоге этот запрос поступит на DNS-сервер вашего интернет-провайдера. DNS-сервер вашего интернет-провайдера сделает запрос одному из списка известных «корневых DNS-серверов». Ответ, который возвращает корневой DNS-сервер, в свою очередь, направит запрос DNS-сервера провайдера на DNS-сервер ".com", а затем на DNS-сервер "serverfault.com". В конечном итоге ответ будет возвращен DNS-сервером интернет-провайдера на ваш компьютер (возможно, через DNS-сервер в вашем домашнем маршрутизаторе, как упоминалось выше).

Я бы посоветовал вам изучить еще несколько технических описаний того, как работает протокол DNS, если вас интересуют подробности.

Это поможет нам разобраться в той части вашего вопроса, которая связана с DNS. Теперь перейдем к части вопроса, касающейся IP-маршрутизации.

Часть IP-маршрутизации

Что заставляет его использовать маршрут, который я вижу в маршруте следа?

Результатом всех этих DNS-запросов будет IP-адрес (или несколько IP-адресов, если говорить технически). Ваш браузер инициирует TCP-соединение с одним из адресов, возвращаемых DNS-запросом. Это приведет к тому, что ваш компьютер отправит IP-дейтаграмму (предназначенную для IP-адреса, возвращенного нашим предыдущим запросом DNS) на «шлюз по умолчанию», известный вашему компьютеру. Этот «шлюз по умолчанию» - не что иное, как IP-адрес другого компьютера (обычно маршрутизатора), которому ваш компьютер «передает» пакеты для доставки в Интернет. Предполагая, что вы используете Ethernet, особенности того, как ваш компьютер «передает» IP-дейтаграмму, включают протокол ARP и особенности, которые, вероятно, слишком глубоки для этого ответа.

Вы можете спросить: как ваш компьютер узнает IP-адрес своего шлюза по умолчанию?

Аналогично тому, как компьютеры получают адреса своих DNS-серверов от DHCP, компьютеры получают «шлюз по умолчанию» с помощью «опции», получаемой, когда IP-адрес «арендуется» для них от DHCP. Если компьютер имеет статически назначенный IP-адрес, то, как правило, его «шлюз по умолчанию» также будет статически назначен.

По сути, IP-маршрутизация - это игра в «передачу» пакетов от одного компьютера (маршрутизатора) к другому до тех пор, пока пакет не достигнет места назначения (или «умрет при попытке», если пакет пересылается слишком много раз). Каждый маршрутизатор имеет несколько сетевых интерфейсов, которые соединяют его с другими маршрутизаторами. Когда он получает пакет, маршрутизатор «решает», какой сетевой интерфейс будет «наилучшим» для выхода этого пакета, и после принятия этого «решения о маршрутизации» передает пакет другому маршрутизатору через выбранный сетевой интерфейс. Этот процесс повторяется, пока ваш пакет не достигнет места назначения.

Мой эпический ответ на подсети обсуждает основы статической IP-маршрутизации. При статической IP-маршрутизации каждый маршрутизатор имеет статически назначенный список сетей назначения и понимает «смежность» сетей с сетевыми интерфейсами маршрутизатора. В реальной жизниTM статическая IP-маршрутизация не используется в больших сетях, потому что ее слишком громоздко поддерживать, и она не принимает во внимание маршрутизацию вокруг перегрузок или неисправных каналов.

Выполняемая вами «трассировка» показывает результаты решений о маршрутизации, принимаемых маршрутизаторами на каждом «участке» пути вашего пакета. Эти маршрутизаторы используют протоколы динамической маршрутизации, такие как Border Gateway Protocol (BGP) или Open Shortest Path First (OSPF), чтобы принимать решения о том, как направить ваш пакет на другой маршрутизатор. Эти протоколы динамической маршрутизации могут учитывать такие факторы, как перегрузка или доступность канала, относительное «расстояние», на которое ваш пакет будет проходить по каждому предполагаемому пути, и, возможно, другие факторы (включая «политические» факторы, такие как соглашения о пиринге), чтобы определить, куда идет ваш пакет .

Специфика того, как работают отдельные протоколы динамической маршрутизации, выходит далеко за рамки этого ответа. К счастью, архитектура Интернета такова, что конечным точкам (например, вашему компьютеру или серверам на Serverfault.com) не нужно ничего знать о маршрутизации пакетов внутри «облака». Пока все маршрутизаторы внутри сети действуют согласно надлежащим правилам, пакеты будут доставляться (хотя IP допускает неупорядоченную доставку и потерю пакетов - протоколы более высокого уровня заботятся об обработке этих событий). Более того, новые протоколы динамической маршрутизации могут быть разработаны и реализованы внутри «облака», и ничего не нужно менять для всех конечных точек, чтобы воспользоваться преимуществами улучшенной маршрутизации.

В этот момент мой компьютер выполняет обратный поиск по DNS, чтобы получить IP-адрес.

Фактически, он выполняет прямой поиск. Обратный поиск DNS - это когда вы хотите сопоставить IP-адрес с доменом.

как мой компьютер узнает, где это немедленно искать?

Каждый домен имеет свои записи сервера имен. Эти записи серверов имен указывают на авторизованные DNS-серверы для домена. Ваш компьютер находит это, перейдя на собственные предварительно настроенные DNS-серверы. Вы можете подтвердить это в Windows:

C:\Users\mark.henderson>nslookup
Default Server:  enetsdc1.enets.local
Address:  192.168.161.2

> set q=ns
> serverfault.com
Server:  enetsdc1.enets.local
Address:  192.168.161.2

Non-authoritative answer:
serverfault.com nameserver = ns1.serverfault.com serverfault.com nameserver = ns2.serverfault.com serverfault.com nameserver = ns3.serverfault.com

ns1.serverfault.com     internet address = 64.34.119.33
ns2.serverfault.com     internet address = 64.34.119.34
ns3.serverfault.com     internet address = 69.59.196.217

Существуют ли DNS-серверы с фиксированными IP-адресами, которые мой компьютер автоматически ищет?

Да. Вроде, как бы, что-то вроде. Есть Корневые серверы, но вряд ли ваш локальный компьютер будет их использовать. Если вы находитесь в корпоративной сети, она, скорее всего, будет использовать корневые серверы, в противном случае ваш интернет-провайдер может их использовать.

он переходит (в моем случае) в comcast, чтобы начать свой путь к серверам serverfaults. Как работает этот процесс?

На вашем компьютере настроен шлюз по умолчанию (отображается в IPConfig)

C:\Users\mark.henderson>ipconfig

Windows IP Configuration
Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : enets.local
   Link-local IPv6 Address . . . . . : fe80::a9e4:733:8949:f70a%11
   IPv4 Address. . . . . . . . . . . : 192.168.161.103
   Шлюз по умолчанию . . . . . . . . . : 192.168.161.17

Этот шлюз по умолчанию - ваше окно в мир. У этого шлюза по умолчанию есть СОБСТВЕННЫЙ шлюз по умолчанию (ваш интернет-провайдер), и этот шлюз обычно подключен к остальной части Интернета через протокол, называемый BGP. Этот протокол BGP является способом объявления всех отдельных переходов и маршрутов к определенному месту назначения (IP-адрес ServerFault). Он переходит к следующему маршрутизатору, который затем пересчитывает лучший способ добраться туда, переходы и т. Д., Пока вы не дойдете до конца. Из-за этого два последовательных пакета могут достичь пункта назначения не по порядку, поэтому TCP имеет для этого встроенные средства управления.

Что заставляет его использовать маршрут, который я вижу в маршруте следа?

Протокол BGP поддерживает работоспособность каждой последующей ссылки, и когда состояние этой связи изменяется (слишком занято или выходит из строя, что угодно), тогда он выбирает другой переход для перехода.

  1. Ваш компьютер может найти DNS-сервер, потому что в его сетевой конфигурации указан адрес одного (или, желательно, нескольких) DNS-серверов. Эта информация либо получается динамически (из другого протокола, называемого DHCP) или он настроен статически для определенного сетевого интерфейса.

  2. Трафик на определенный IP-адрес, который не находится в вашей «физической» LAN, маршрутизируется через (как вы уже догадались) IP-маршрутизаторы, у которых есть частичные и полные таблицы, описывающие взаимосвязь всех сетей, образующих Интернет.

  3. При выполнении traceroute все переходы между вами и желаемым хостом представляют собой один из (потенциально) многих возможных маршрутов к этому хосту.

Существуют ли DNS-серверы с фиксированными IP-адресами, которые мой компьютер автоматически ищет?

Если вы посмотрите на свою IP-конфигурацию на компьютере, вы обнаружите, что у него есть список DNS-серверов, которые нужно спросить. Это ссылка. Как и используемый маршрутизатор, DNS - это настроенное значение, обычно поступающее через DHCP. Это часть конфигурации IP.

DNS-сервер провайдера затем обычно переходит к списку известных DNS-серверов, которые управляют всем Интернетом (так называемые ROOT-серверы). По сути, это ИЗВЕСТНЫЕ ОРГАНЫ для «зоны» «.», Которая является зоной верхнего уровня. Технически ".com" является субдоменом ".". Как я уже сказал, список корневых серверов "известен".

Больше информации на http://www.root-servers.org/

Что заставляет его использовать маршрут, который я вижу в маршруте следа?

Соединения, настроенные между всеми AS (автономными системами), назначенными поставщиками, которые обмениваются между ними через протокол BGP. В основном провайдер получает адреса из центрального реестра для AS, и он публикует известные другие системы на границах своей AS для других AS. Они обмениваются vviaBGP, как маршрутизировать в другие сети.

Больше информации на http://en.wikipedia.org/wiki/Border_Gateway_Protocol

Система доменных имен (DNS)

Прежде всего, процесс перехода с www.serverfault.com на ww.xx.yy.zz называется вперед Поиск DNS. Обратный поиск - это процесс, используемый для получения DNS-имени с IP-адреса.

Тем не менее, ваш компьютер подключается к DNS-серверу, указанному в его сетевых настройках (который управляется вашим интернет-провайдером / рабочим местом и называется «рекурсором»). Если компьютер автоматически получает IP-адрес через DHCP (т.е. вы не устанавливали его вручную), адрес DNS-сервера обычно также получается через DHCP.

Несмотря на кеширование, рекурсор обрабатывает ваш запрос, сначала начиная с одного из тринадцати IP-адресов «корневых серверов» DNS, хотя на самом деле существует более 13 корневых DNS-серверов, совместно использующих IP-адреса с помощью механизма, называемого «anycast».

Корневой сервер, конечно, не хранит записи DNS для все доменные имена. Вместо этого он просто направляет все запросы доменного имени .com на один из DNS-серверов .com. DNS-сервер .com, содержащий запись для serverfault.com, направляет запрос на этот DNS-сервер, который содержит искомую запись: IP-адрес www.serverfault.com (называемый записью A). Все это происходит в рекурсоре ISP (где результаты успешных поисков могут быть сохранены для дальнейшего использования), чтобы процесс работал эффективно и плавно; он возвращает только окончательный ответ.

IP-маршрутизация

Также в сетевых настройках компьютера указан IP-адрес «шлюза по умолчанию», который является адресом межсетевого экрана или маршрутизатора в вашей локальной сети. Все пакеты, отправляемые вашим компьютером, направляются на этот шлюз, если они не поступают на компьютер, напрямую подключенный к локальной сети, как это определено установленной маской подсети.

Маршрутизатор содержит «таблицу маршрутизации», содержащую список диапазонов IP-адресов и места для отправки предназначенных для них пакетов. Таблицы маршрутизации часто настраиваются автоматически. В сети вашего интернет-провайдера для этого может использоваться любой из нескольких протоколов, включая протокол информации о маршрутизации (RIP). Как только пакет покидает сеть вашего собственного интернет-провайдера (отправляется в открытый Интернет через вышестоящего провайдера, которым является интернет-провайдер), используется протокол, называемый протоколом пограничного шлюза (BGP). Пакеты продолжают пересылаться между маршрутизаторами, пока не достигнут конечного пункта назначения. Пакеты возвращаются на ваш компьютер таким же образом.

Как работает traceroute? Он управляет полем в пакете под названием «Время жизни», которое при нормальном использовании предназначено для предотвращения бесконечного зацикливания пакетов в случае ошибки в конфигурации маршрутизатора. Он определяется как количество маршрутизаторов, через которые может пройти пакет. Traceroute увеличивает TTL на 1 каждый раз и прослушивает сообщения об ошибках, генерируемые при превышении этого лимита (в форме пакетов ICMP). Он записывает IP-адрес маршрутизатора, сгенерировавшего ошибку, и при необходимости выполняет обратный поиск DNS для получения имени DNS, который может быть успешным, а может и нет.