Как DNS-запросы формируются из URL-адресов? - PullRequest
0 голосов
/ 24 ноября 2011

Проще говоря, я хотел бы получить низкоуровневое объяснение того, как приложение, такое как веб-браузер, будет анализировать URL-адрес, запрашивать DNS-сервер, а затем фактически устанавливать TCP-соединение.

Мой примерthis:

http://site.example.com:7902/svn

Теперь в этой ситуации при нормальной записи хоста DNS-запрос просто не попытается преобразовать часть site.example.com в IP-адрес?

Какфактор номера альтернативного порта в ситуацию?Я думаю, что номер порта не имеет значения для базового разрешения DNS.Как и следовало ожидать, DNS разрешит site.example.com, а затем будет использовать номер порта при формировании пакетов TCP.Тогда я бы ожидал, что каталог /svn будет просто передан после установления TCP-соединения.


Теперь для моей мотивации:

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

Итак, моя проблема заключалась в том, что это работало нормально:

http://xx.xx.xxx.xxx:7902/svn   // this works fine with my external IP

... но не удалось при использовании DNS:

http://site.example.com:7902/svn  // this didn't resolve

С этой проблемой я использовал другого провайдера DNS (вместо dyndns), и все работало нормально.Поэтому я задал этот вопрос, потому что мне любопытно, почему я не мог использовать альтернативный номер порта с моим именем хоста dyndns.

Спасибо за попытку разобраться в этом ...

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

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

Host: site.example.com

... как часть запроса.Веб-сервер будет использовать это, чтобы выяснить, как сопоставить запрос с заданным сайтом.Это необходимо только в том случае, если к данному IP-адресу привязано несколько сайтов, но это часто так.Причина, по которой у вас могли быть разные результаты, когда вы запрашивали IP-адрес и имя, могла быть связана с наличием этого заголовка хоста и с тем, как веб-сервер настроен на него.

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

Наконец, прокси-серверы также могут создавать сложности.Все ставки отключены, когда задействован прокси-сервер, поскольку это может полностью изменить способ обработки запроса.

0 голосов
/ 24 ноября 2011

DNS разрешает IP-адрес, период (ну ... существуют различные типы записей DNS, такие как записи A, записи CNAME, записи MX, но они не имеют отношения к вашему вопросу).

Порты не являются частью разрешения DNS, но являются аспектом сервера за IP-адресом.

Попробуйте разрешить site.example.com из командной строки и посмотрите, получите ли вы ожидаемый IP-адрес. Для Windows и Unix вы можете использовать

nslookup site.example.com

В Windows, если вы запускаете nslookup без каких-либо параметров, вы входите в командный режим nslookup, где затем можете набрать

сервер 8.8.8.8

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

Вы можете просто набрать

site.example.com

и посмотрите, как разрешается IP. Попробуйте разные DNS-серверы и посмотрите, получите ли вы один и тот же IP-адрес.

Обратите внимание, что распространение DNS может занять некоторое время. Если IP-адрес изменяется, каждому DNS-серверу в мире может потребоваться до нескольких дней, чтобы получить уведомление об изменении (хотя на практике в наши дни для получения обновления достаточно всего нескольких часов). Возможно, недавно изменился IP-адрес, а dyndns еще не получил обновление?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...