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

Как веб-сервер различает разные DNS-имена?

Я хочу знать, как веб-сервер может различать запросы с разными именами DNS на одном сервере (с одинаковым IP)?

например, в моем университете есть два сайта:

fea.kau.edu.sa
engineering.kau.edu.sa

и когда я использую nslookup в Windows у меня одинаковый IP-адрес для обоих доменных имен. Объясните пожалуйста?

HTTP 1.1 требует, чтобы все клиентские системы отправляли заголовок, Host, который указывает серверу, для какого имени хоста они отправляют запрос.

Это позволяет серверу читать этот заголовок и отвечать контентом для соответствующего сайта.

Без этой функции для каждого сайта потребовался бы другой IP-адрес; мы бы исчерпали пространство IPv4 еще раньше, если бы у нас не было этого.

Запустите свой любимый пакетный трассировщик (что-то вроде WireShark) и посмотрите, что на самом деле происходит при подключении.

Очень простой запрос может выглядеть так:

GET / HTTP/1.1
Host: www.example.com
​

(обратите внимание на пустую строку в конце, если вы хотите воссоздать это самостоятельно, используя, например, telnet. Вы также можете увидеть много этого в Википедии)

В Host: Часть запроса сообщает веб-серверу, к какому сайту получить доступ.

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

Просто.

С давних пор каждый HTTP-запрос .... ... ВКЛЮЧАЕТ ДОМЕН.

По сути, PAYLOAD (не tcp, структура HTTP-запроса) сообщает веб-серверу, для чего предназначен домен.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

имеет поля, переданные при просмотре. Есть одно "HOSTNAME".

Большинство других протоколов - пофиг.