web-dev-qa-db-ja.com

localhost 127.0.0.1はどのように機能しますか?

これに関連する記事をいくつか見つけましたが、それらは私には十分ではありませんでした。 localhostの仕組みを知りたいのですが、なぜそれが多くの異なるマシンで同じなのですか?

Webサイトをブロックするためにlocalhostファイルで使用する場合、HostはWebサイトへのアクセスをどのようにブロックしますか?

17
avirk

Windowsのケースについては少し異なるので、ここでは触れませんが、これを言いましょう。すべてのUnixライクなオペレーティングシステムには、2つのネットワークデバイスがあります。

  • ループバックデバイス
  • イーサネットデバイス

最初のものは純粋に「仮想」です。見えないイーサネットプラグのようなものです。 2つ目は、コンピュータのイーサネットプラグに関係しています。

enter image description here

ループバックインターフェイスは何をしますか? ループバックに送信するすべてのトラフィックは戻ってきます。

イーサネットデバイスがIPアドレス(たとえば、192.168.1.20)を取得するように、ループバックデバイスもIPアドレス、つまり127.0.0.1を持ちます。簡単にするために、localhostからもアクセスできます。

典型的なUnix /etc/hostsファイルを見ると、127.0.0.1が「localhost」にマッピングされていることがわかります。したがって、「localhost」と入力するたびに、コンピュータは127.0.0.1を呼び出すことを認識します。

そして、これがアプリケーションを「ブロック」できる理由です。コンピューターからMicrosoftにデータを送信したくないとします。次に、代わりにすべてのリクエストをMicrosoft.comに127.0.0.1にリダイレクトするだけです。 Microsoft.comに連絡しようとすると、失敗します。

*実際にハードウェアイーサネットポートを持つすべてのシステム

23
slhck

インターネットプロトコル(IP)アドレスは、4つの基本カテゴリのいずれかに分類されます。

  1. 世界中の他のコンピュータとの通信に使用されるアドレス、
  2. 特定の会社またはネットワーク内のコンピューターとの通信に使用されるアドレス
  3. ネットワーク上のコンピューター間で情報をブロードキャストするために使用されるアドレス
  4. コンピュータが自分自身と通信できるようにするために使用されるアドレス。

合意により、127.0.0.1は、これらのカテゴリの最後に該当するアドレスの1つです。

人間として、私たちはIP番号をよく覚える傾向はありませんが、superuser.com、www.google.com、およびその他の同様の名前のような名前を覚えても問題はありません。インターネットが小さい(非常に小さい)とき、人間は「ホスト」ファイルをインターネット上の他の人々と共有したため、数字を覚える必要がありませんでした。そのhostsファイルには、IPアドレスと1つ以上のホスト名のペアが含まれていました。誰かがその名前でホストにアクセスしようとしたとき、コンピューターソフトウェアはそれをhostsファイルで検索するのに十分知っていました。それ以来インターネットは非常に成長しており、ドメインネームシステム(DNS)を使用して、名前をIP番号に解決するだけでなく、古いスタイルのhostsファイルを使用しています。ほとんどのコンピューターは、最初にhostsファイルで名前を検索し、それが失敗した場合はDNSで検索するように設定されています。

背景がわかったので、次はその仕組みです(通常)。

このエントリをhostsファイルに追加すると、コンピュータがwww.foo.comを検索しようとするたびに、wwwのインターネットアドレスであると伝えたため、IPアドレス127.0.0.1でそのサイトに到達しようとします。 foo.com。 127.0.0.1を使用すると、コンピューターが自分自身と通信できるようになるため、ブラウザーで127.0.0.1にアクセスしようとすると、コンピューター上のWebサーバーに接続しようとします。 127.0.0.1の代わりに2.3.4.5を入力した場合、www.foo.comを開くときにアドレス2.3.4.5のコンピューターに接続しようとします。

127.0.0.1 localhost
127.0.0.1 www.foo.com
127.0.0.1 foo.com

このような目的でhostsファイルを使用することの悪い点は、hostsファイルにエントリを追加すると、その情報を最新に保つ責任を負うことになります。 hostsファイルにエントリを入力しない場合、コンピューターはDNSを使用してIPアドレスを検索し、そのIPアドレスを使用してサーバーに接続しようとします。

それの良いところは、あなたのコンピュータのホスト名だけで誰もがwww.foo.comに話すことを決して許可したくない場合、ホストファイルにエントリを追加することで(キーワード-かもしれません)それが起こらないようにするかもしれません。 (ホスト名だけでなく)何らかの方法で特定のサイトに到達しないようにすることが目標である場合、ファイアウォールを適切に使用するなどの方法でそれが発生するのを防ぐための、より信頼性の高い方法が他にもあります。

8
KB CMDBA

Localhostまたは127.0.0.1は、ローカルコンピューターの組み込みの「名前」です。

つまり、127.0.0.1は、マシンを指すポインタにすぎないため、「ループバック」と呼ばれます。これは予約済みのIPアドレスであり、定義によりlocalhostとして書き込むこともできます。

この目的は、信号を外部に送信してからループバックすることにより、自分のコンピューターと通信できるようにすることです。これにより、同じコンピューターでも信号が読み取られます。

マシンでサーバーを実行しているとしましょう-アクセスするには、サーバーにリクエストを送信し(パケットを127.0.0.1に送信)、サーバーはそれを読み取る必要があります(システムはパケットをループバックします) 127.0.0.1上のローカルシステムは、サーバーソフトウェアによって読み取られます)。

7
akseli

私は TCP/IPガイド でのプレゼンテーションを発見しました。

通常、TCP/IPアプリケーションが情報を送信する場合、その情報はプロトコルレイヤーを下ってIPに移動します IPデータグラムにカプセル化 。次に、そのデータグラムは、デバイスの物理ネットワークのデータリンク層に渡され、IP宛先への途中で次のホップに送信されます。

ただし、1つの特別なアドレス範囲は、 ループバック 機能性。これは、127.0.0.0〜127.255.255.255の範囲です。ホストから127に送信されたIPデータグラム。バツバツバツ ループバックアドレスは、送信のためにデータリンク層に渡されません。代わりに、IPレベルでソースデバイスに「ループバック」します。本質的に、これは通常のプロトコルスタックの「短絡」を表します。データはデバイスのレイヤー3 IP実装によって送信され、すぐに受信されます。


また、ラトガースには ネットワーキングコース が含まれています この図 を含む通常のホスト間通信、

normal, inter-Host communication

ループバックデータフローの this one

 loopback data flow

5
Scott

質問の2番目の部分で、アドレス127.0.0.1のホストファイルにWebサイトのホスト名を入力すると、正しいアドレスを見つけるためにDNSを使用する代わりにブラウザにアドレスを入力したときに、アドレスが見つかります。あなたのhostsファイルで最初にそれをlocalhostに解決し、ウェブサイトのアドレスに行く代わりにあなたのマシンと話し始め、それがウェブサイトのロードに失敗する原因になります。

4
Col