0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

localhostへのリクエストはどのようにされているのか?

Posted at

はじめに

ローカル環境でサーバーを構築し、ブラウザからlocalhostを通じて接続した際のパケットの流れを解説します。
本記事では、余計な情報を省き、localhostへの接続時にどのようにデータが流れるかに焦点を当てています。


localhostに接続した際のパケットの流れ

前提

ポート8000でサーバーが起動しており、HTTPリクエストを待ち受ける設定になっている。

1. ブラウザからのリクエスト送信

  • ユーザーがブラウザにhttp://localhost:8000/を入力。
  • ブラウザは以下を確認してリクエストを作成します。
    • プロトコル: HTTPで通信する。
    • ホスト名: localhostはループバックアドレス127.0.0.1に解決される。
    • ポート番号: 8000を指定。

2. ネットワークスタックを通過

データはTCP/IPスタックを通じてパケットに分割され、以下の手順で送信されます。

  • アプリケーション層:
    • HTTPリクエストが生成されます。
  • トランスポート層:
    • TCPが信頼性のある形でデータをパケット化。
    • ポート番号8000が付加されます。
  • ネットワーク層:
    • パケットに宛先IPアドレス(127.0.0.1)が付加されます。
  • データリンク層:
    • パケットがイーサネットフレームに変換され、物理層に送信されます。

3. ループバックインターフェースでの処理

ループバックインターフェースは、127.0.0.1宛のパケットをネットワーク外に送出せず、自身のネットワークスタック内で処理します。

具体例:

  • ローカル開発環境のテスト:
    Webアプリケーションを開発中に、外部公開せずに動作確認を行えます。
  • 自己診断:
    サーバーやネットワークサービスの応答確認を行います。
  • 仮想環境での利用:
    Dockerや仮想マシン内のサービス通信にもループバックが活用されます。

以下は処理フローの図解です:

ブラウザ (http://localhost:8000)
    ↓
ネットワークスタック
    ↓
ループバックインターフェース (127.0.0.1)
    ↓
ローカルサーバー (ポート8000)

物理的なルーターを介さないため、通信は非常に高速です。

4. サーバーへの到達とレスポンス

  • サーバーはポート8000でリクエストを待ち受けています。
  • HTTPリクエストを解析し、指定されたリソースを処理します。
  • レスポンスデータを作成し、逆のルートでブラウザに送信します。

HTTPリクエスト例

GET / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0
Accept: text/html

HTTPレスポンス例

HTTP/1.1 200 OK
Content-Type: text/html

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

まとめ

localhostに接続した際のパケットの流れは以下のように進行します:

  1. ブラウザがリクエストを作成し、ネットワークスタックを通過。
  2. パケットがループバックインターフェースで処理され、外部に出ることなくローカルサーバーに到達。
  3. サーバーがリクエストを処理し、レスポンスを返送。

この一連の流れを理解することで、ローカル環境でのネットワーク動作を効率的に把握できます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?