web-dev-qa-db-ja.com

「ホスト名」を指定する場合でも、ポートを指定する必要がありますか?

https://en.wikipedia.org/wiki/Virtual_hosting は言う

名前ベースの仮想ホストは、同じIPアドレスに対して複数のホスト名を使用します。

「ホスト名」はIPアドレスまたはIPアドレスとポートのペアに対応していますか?

「ホスト名」を指定する場合でも、ポートを指定する必要がありますか?

それが重要な場合は、仮想ホスティングのみを検討してください。

ありがとう。

4
Tim

ホスト名は{ipaddress、port}タプルに対応していません。ホスト名はサーバーの名前にすぎず、1つ以上のIPアドレスに解決できる必要があります。ポートはホスト名とはまったく関係ありません。

22
Jenny D

「仮想ホスト」とは、異なる動作をするリクエストでextra contextを利用するソフトウェアの機能です。

注意すべき重要な点は、TCP/IP自体はホスト名について何も知らないということです。それらの主な目的は、IPアドレスを見つける方法としてです。

古典的な例は、名前ベースの仮想ホスティングを使用するHTTPサーバーで、次のように機能します。

  • ユーザーがURLを要求します。ドメイン名はDNSで検索され、IPアドレスが検索されます。
  • A TCP接続は特定のIPアドレスとポートに対して開かれます(HTTPの場合、これはデフォルトでポート80になり、HTTPSの場合、ポート443になります)。
  • クライアントは、その接続で、使用されているプロトコルで指定されている情報を含む要求を送信します。
    • HTTP 1.1では、これには「ホスト」ヘッダーが含まれます。これは、ユーザーがIPアドレスを見つけるために検索したドメイン名です。
    • 安全な接続のために、TLSハンドシェイクには「サーバー名表示」フィールドを含めることができるため、証明書が合意される前にこれを使用できます。
  • これで、IPアドレスとポートをリッスンするサーバーソフトウェアに、IPアドレス、ポート番号、ホスト名の3つの情報がすべて含まれるようになりました。これらを使用して、要求に適用する構成を決定できます。この構成は「仮想ホスト」です。
9
IMSoP

ホスト名はDNS(またはホストファイルのような他の名前解決)によって処理されます。ウェブサーバーはIP /ソケットをリッスンしますが、仮想ホストを実行しているときは、ページのリクエストに使用されたFQDNのリクエストヘッダーも確認します。

仮想ホストを実行しているWebサーバーが要求に応答すると、要求ヘッダーを調べて、要求が認識しているホストからのものかどうかを確認し、正しいページを提供します。つまり、initech.xyzの仮想ホストを備えたサーバーがある場合、DNSはそれをデフォルトのhttp/sポート(80/443)でリッスンしているWebサーバーのIPにポイントします。構成に基づいて、各仮想ホストが応答するさまざまなポートをオン/オフにすることができますが、IP /ポートの観点から、ポートが有効になっている場合、ポートは開いています。

また、DNSは、同じ名前に解決する複数のIPを持つことができ、その逆も可能です。

1
Steve Butler