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

При указании «имени хоста» нам все равно нужно указывать порт?

https://en.wikipedia.org/wiki/Virtual_hosting говорит

Виртуальные хосты на основе имен используют несколько имен хостов для одного и того же IP-адреса.

Соответствует ли «имя хоста» IP-адресу или паре IP-адреса и порта?

При указании «имени хоста» нам все равно нужно указывать порт?

Если это имеет значение, подумайте только о виртуальном хостинге.

Спасибо.

Имена хостов не соответствуют кортежу {ipaddress, port}. Имя хоста - это только имя сервера, которое должно разрешаться в один или несколько IP-адресов. Порты вообще не имеют ничего общего с именами хостов.

«Виртуальный хост» - это просто функция программы, которая использует преимущества дополнительный контекст в просьбе действовать иначе.

Важно отметить, что сам TCP / IP ничего не знает об именах хостов; их основная цель - найти IP-адреса.

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

  • Пользователь запрашивает URL-адрес. Имя домена ищется в DNS, чтобы найти IP-адрес.
  • TCP-соединение открывается с определенным IP-адресом и портом. (Для HTTP по умолчанию используется порт 80; для HTTPS - порт 443).
  • Клиент отправляет запрос по этому соединению, который включает любую информацию, указанную используемым протоколом.
    • В HTTP 1.1 это включает заголовок «Host», который представляет собой доменное имя, которое пользователь искал, чтобы найти IP-адрес.
    • Для безопасного соединения подтверждение TLS может включать поле «Указание имени сервера», чтобы оно было доступно до согласования сертификатов.
  • Серверное программное обеспечение, прослушивающее IP-адрес и порт, теперь имеет все три части информации: IP-адрес, номер порта и имя хоста; он может использовать их, чтобы определить, какую конфигурацию применить к запросу. Эта конфигурация и есть «виртуальный хост».

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

Когда веб-сервер, на котором запущены виртуальные хосты, отвечает на запрос, он смотрит на заголовок запроса, чтобы узнать, поступил ли запрос от хоста, о котором он знает, а затем обслуживает правильную страницу. т.е. если у меня есть сервер с виртуальным хостом для initech.xyz, DNS укажет ему IP-адрес моего веб-сервера, который прослушивает порты http / s по умолчанию (80/443). В зависимости от конфигурации вы можете включать / выключать разные порты, на которые отвечает каждый виртуальный хост, но с точки зрения IP / порта, если порт включен, он открыт.

Также DNS может иметь несколько IP-адресов, разрешаемых на одно и то же имя, и наоборот.