Я хочу знать, как веб-сервер может различать запросы с разными именами 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".
Большинство других протоколов - пофиг.