12

Я знаю, что dns разрешает адрес, например example.com, в IP-адрес, например 11.22.33.44, но меня немного смущает, как разрешаются субдомены, поэтому при вводе http://subdomain.example.com, что на самом деле передается на сервер в 11.22.33.44? Другими словами, example.com = 11.22.33.44, но subdomain.example.com/path = ???

Передаются ли "поддомен" и "путь" как заголовки http или каким-либо образом отображаются в URL, или как?

Заранее спасибо.

Редактировать: Если я правильно понимаю, BloodPhilia говорит, что subdomain.example.com на самом деле является другим доменом, который в принципе может разрешить совершенно другой IP. Но если это так, то как насчет хостов, которые имеют огромное количество (как выглядят) поддоменов, но которые на самом деле соответствуют некоторому пути на сайте. Например, blogspot содержит миллионы блогов, и все они выглядят так:

aaa.blogspot.com
bbb.blogspot.com
...millions more...
yyy.blogspot.com
zzz.blogspot.com

Это явно не субдомены с их собственными IP-адресами, а скорее какое-то отображение, например aaa.blogspot.com -> www.blogspot.com/aaa, но как это сделать? Что на самом деле передается на веб-сервер blogspot.com?

4 ответа4

18

Домены, субдомены, суб-субдомены и суб (x)-под-субдомены (созданные последними двумя!)Одинаково обрабатываются DNS для конечного пользователя и веб-сервера.

Например, сервер DNS может возвращать разные результаты для domain.com www.domain.com или mysite.domain.com

Теперь, как вы, наверное, знаете, в мире гораздо больше доменов, чем IP.

Из-за этого серверы используют что-то, известное как "заголовки узла", для предоставления правильного содержимого.

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

Хорошим инструментом для тестирования / обучения / диагностики является Wfetch, его можно скачать здесь.

Вот пример заголовков, отправленных во время доступа к superuser.com

альтернативный текст

Вот конфигурация для заголовков узлов в IIS (веб-сервер):

альтернативный текст

(Изображение отсюда)

Если вас это заинтересовало, Serverfault.com и Superuser.com используют один и тот же IP-адрес, и этот метод используется для разделения сайтов и предоставления различного контента.

Для получения дополнительной информации по этой теме вы можете прочитать статью в Википедии о виртуальном хостинге.

(Я знаю, что вы понимаете основы, но я подумал, что было бы хорошо сказать немного больше, чтобы каждый, кто изучает Google, мог бы немного узнать, если захочет!)

редактировать

Итак, в соответствии с вашим примером, я бы предположил, что у кого-то такого большого, как blogspot, скорее всего, есть запись DNS с подстановочными знаками (запись с подстановочными знаками возвращает тот же результат для любого запроса), которая указывает на балансировщик нагрузки, затем балансировщик нагрузки отправит его многим различным веб-серверам, у которых, вероятно, нет отдельного сайта для каждого заголовка узла, но вместо этого один сайт / сценарий, по которому анализируется набранный адрес (заголовки узлов или нет), и тут же извлекает правильное содержимое из их CDN.

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

6

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

GET / HTTP/1.1
Host: data.stackexchange.com
3

Субдомены не подходящее слово. Обычно поддомен является доменом сам по себе, поэтому sub.example.com сначала передается в DNS, если для этого поддомена не найдена конкретная запись, запрос передается на IP верхнего домена. (example.com) На этом сервере запрос сделан снова, и сервер будет действовать соответственно.

Другими словами, запрос к example.com на самом деле не отличается от запроса к sub.example.com.

1

Subdomain.example.com не разрешается до 11.22.33.44 - для вашего вопроса он обычно имеет свою собственную запись DNS A и разрешается по другому адресу.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .