| シリーズの一部 | ||||
| ネットワーク科学 | ||||
|---|---|---|---|---|
| ネットワークの種類 | ||||
| グラフ | ||||
| ||||
| モデル | ||||
| ||||
| ||||
| オペレーティングシステム |
|---|
| 共通の特徴 |
コンピュータネットワークにおいて、localhost は、アクセスに使用されている現在のコンピュータを指すホスト名です。localhostという名前はループバックのために予約されています。[ 1 ]これは、ループバックネットワークインターフェースを介してホスト上で実行されているネットワークサービス にアクセスするために使用されます。ループバックインターフェースを使用すると、ローカルネットワークインターフェースのハードウェアがバイパスされます。
ローカルループバックメカニズムは、物理的なネットワークインターフェースを必要とせず、またコンピュータが接続されているネットワークからサービスにアクセスできるようにすることなく、ホスト上でネットワークサービスを実行するために使用できます。例えば、ローカルにインストールされたウェブサイトに、WebブラウザからURL http://localhostでアクセスしてホームページを表示できます。
IPv4ネットワーク標準では、アドレスブロック127.0.0.0 / 8(1600万以上のアドレス)全体がループバックの目的で予約されています。 [ 2 ]つまり、これらのアドレスに送信されたパケットはすべてループバックされます。アドレス127.0.0.1はIPv4ループバックトラフィックの標準アドレスです。残りはすべてのオペレーティングシステムでサポートされているわけではありません。ただし、これらを使用して、ホスト上に複数のサーバーアプリケーションを設定し、すべて同じポート番号でリッスンすることができます。IPv6アドレス指定アーキテクチャ[ 3 ]では、ループバックに割り当てられているアドレスは:: 1だけです。この標準では、このアドレスを物理インタフェースに割り当てることは禁止されており、リモートホストに送信されるパケットの送信元アドレスまたは宛先アドレスとして使用することも禁止されています。
通常、 名前localhost はIPv4ループバックアドレス127.0.0.1に解決され、IPv6ループバック アドレス::1に解決されます。
この解像度は通常、オペレーティング システムのhosts ファイル内の次の行によって構成されます。
127.0.0.1 ローカルホスト ::1 ローカルホスト
この名前はドメインネームシステム(DNS)サーバーによって解決されることもありますが、この名前の使用に関しては 特別な考慮事項があります[ 1 ] 。
localhostはループバックアドレス ( 127.0.0.1および::1 )にマッピングされるだけでなく、他の IPv4 (ループバック) アドレスにもマッピングできます。また、任意のループバックアドレスに他の名前や追加の名前を割り当てることもできます。hostsファイルまたは DNS で指定されたループバックアドレス範囲以外のアドレスにlocalhostをマッピングした場合、アプリケーションが内部的に名前をマッピングする可能性があるため、期待どおりの効果が得られるとは限りません。
ドメインネームシステムでは、.localhostという名前はトップレベルドメイン名として予約されており、もともとホスト名localhostとの混同を避けるために確保されていた。[ 4 ]ドメイン名登録機関は、トップレベルドメインの.localhostにドメイン名を委任することができない。[ 1 ]
1981年、 127.0.0.0 / 8ブロックは「予約」状態となり、[ 5 ]汎用クラスA IPネットワークとして割り当てられなくなりました。このブロックは1986年にループバック用途として正式に割り当てられました。[ 6 ]特殊用途IPv4アドレスブロック としての用途は、 1994年、 [ 7 ]、2002年[ 8 ]、2010年[ 9 ]、そして最後に2013年に確認されました。 [ 2 ]
当初、1995年に単一のIPv6ループバックアドレス::1が定義されました。[ 10 ]その目的と定義は1998年、[ 11 ]、2003年、[ 12 ]、そして2006年の現在の定義まで変更されていません。[ 3 ]
ループバックアドレスに送信されるパケットの処理は、TCP/IPスタックのリンク層で実装されます。このようなパケットは、ネットワークインターフェースコントローラ(NIC)やハードウェアデバイスドライバに渡されることはなく、コンピューティングシステムの外部に現れたり、ルーターによってルーティングされたりすることはありません。これにより、ハードウェアネットワークインターフェースが存在しない場合でも、ソフトウェアテストやローカルサービスが可能になります。
ループバックされたパケットは、宛先のIPアドレスによってのみ、TCP/IPスタックを通過する他のパケットと区別されます。したがって、最終的にループバックされたパケットを受信するサービスは、指定された宛先に応じて応答します。例えば、HTTPサービスは、127.0.0.99: 80と127.0.0.100:80宛のパケットを、異なるWebサーバーにルーティングすることも、異なるWebページを返す単一のサーバーにルーティングすることもできます。このようなテストを簡素化するために、各アドレスに適切な名前を付けるようにhostsファイルを設定することができます。
ループバックではないインターフェースで受信され、ループバックの送信元または宛先アドレスを持つパケットは破棄する必要があります。このようなパケットは、Martianパケットと呼ばれることもあります。[ 13 ]他の偽のパケットと同様に、悪意のあるパケットである可能性があり、 Bogonフィルタリングを適用することで、それらが引き起こす可能性のある問題を回避できます。
MySQLデータベースのリリースでは、ホスト名localhostの使用とアドレス127.0.0.1および::1の使用が区別されています。[ 14 ]アプリケーションのクライアントコネクタインターフェースでlocalhostを宛先として使用する場合、MySQLアプリケーションプログラミングインターフェースはUnixドメインソケットを使用してデータベースに接続しますが、ループバックインターフェースを介したTCP接続では明示的なアドレスを直接使用する必要があります。
127.0.0.0 / 8アドレスの使用に関する注目すべき例外の 1 つは、マルチプロトコル ラベル スイッチング(MPLS) トレースルート エラー検出での使用です。この場合には、ルーティングできないという特性により、障害のあるパケットがエンド ユーザーに配信されるのを回避する便利な手段が提供されます。