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

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

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

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

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

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

Спасибо.

4
задан 12 February 2019 в 14:18
3 ответа

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

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

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

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

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

22
ответ дан 3 December 2019 в 02:17

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

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

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

1
ответ дан 3 December 2019 в 02:17

Теги

Похожие вопросы