Как поддомен передается на веб-сервер?


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?

Ответы:


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 ведет к нескольким серверам, и у них просто есть запись для каждого сайта, который имеет соответствующий заголовок хоста.


1
Ницца! Примечание: тот факт, что два веб-сайта имеют общий IP-адрес, не обязательно означает, что они всегда размещаются на одном компьютере. Балансировщик нагрузки может также заглянуть в эти заголовки и делегировать их различным машинам. (Для Суперпользователя и др. См. Также Нью-Йоркский центр обработки данных Stack Overflow , который я сам на самом деле не читал ...)
Арджан

@Arjan +1 хороший момент ... Я упомянул балансировщики нагрузки, но, очевидно, это могли быть только IP-адреса балансировщиков нагрузки, а затем они распределяли запросы по многим серверам.
Уильям Хилсум

1
Помечено как ответ для подробной информации и ссылок на дальнейшие исследования. Благодарность!
Джошуа Франк

6

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

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

3

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

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


Я думаю, может быть, я не понимаю что-то важное здесь. Позвольте мне отредактировать и уточнить мой вопрос. Благодарю.
Джошуа Франк

Вы говорите, что если sub.example.comне разрешается, example.comбудет использоваться IP-адрес ? Я думаю, что браузеры этого не делают. (Если не будет какой-нибудь записи DNS с подстановочными знаками, но тогда субдомен действительно разрешится, я бы сказал.)
Арджан

1

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

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


1
Вы говорите, что в моем примере blogspot у "xyz.blogspot.com" не будет выделенной записи dns, поэтому dns будет искать "blogspot.com" и найдет ее по адресу 11.22.33.44. Но он отправит весь URL-адрес «xyz.blogspot.com» в качестве поля хоста, и это на сервере, чтобы проанализировать это и отправить страницу xyz в браузер?
Джошуа Франк

Да все верно.
Джоэл Коухорн

nslookup dummy.example.comвыходы server can't find dummy.example.com- как это соответствует вышеупомянутому тогда? (Что касается примера в комментарии @ Джошуа?)
Арджан

извините, вам все еще нужна запись A для вашего субдомена - просто он может дать тот же IP, если хотите.
Джоэл Коухорн

Тогда я снова запутался. Если существуют миллионы поддоменов xyz.blogspot.com, все они не могут иметь записи A, так как же выполняется маршрутизация? А конфигурация записи А - на стороне сервера. Мне интересно, как клиент узнает, учитывая URL, является ли xyz правильным поддоменом или чем-то, что отображается на стороне сервера. В частности, всегда ли безопасно кешировать IP на некоторое время, потому что вы знаете, что x.domain.com и y.domain.com находятся на одном сервере, или вы никогда не узнаете, просто посмотрев URL-адрес?
Джошуа Франк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.