logo
Published on

IPがどのように機能するか

Authors

IPがどのように機能するか自信を持って説明できるようになるための記事です。
クライアントとサーバーがパケットをやり取りする流れをまとめます。

対象読者は、IPを一度でも学んだことがある人です。
具体的には、IPに関する入門書を読んだり、基本情報技術者試験のネットワーク分野を学んだりした経験がある人です。

クラウドサービス利用時などIPの知識が役に立つ場面は多いので、ぜひ最後までご覧ください。

Table of Contents

シナリオ

インターネット経由で、ブラウザからWebページを閲覧するシナリオを想定します。

シナリオ

ルーターとエンドノードは、イーサネットで接続されているとします。

PCがパケットを送信

IPヘッダーとMACヘッダーを作ります。

IPヘッダーの作成

まずはIPヘッダーです。
色々なフィールドがあります1が、重要なのは宛先IPアドレスと送信元IPアドレスです。

宛先IPアドレスには、TCPから通知された通信相手のIPアドレスを設定します。

送信元IPアドレスには、PCのLANアダプタに割り当てられたIPアドレスを設定します。
経路表を使ってアドレスを取得します。

  1. 宛先IPアドレスと経路表の宛先&ネットマスク欄を照合して行を特定。
  2. その行のインターフェース欄が送信元IPアドレス。

MACヘッダーの作成

次はMACヘッダーです。
フィールドはこちらです。

  • 宛先MACアドレス
  • 送信元MACアドレス
  • イーサ・タイプ

宛先MACアドレスには、最寄りのルーターのMACアドレスを設定します。
経路表とARPを使ってアドレスを取得します。

  1. 先ほど特定した経路表の行のゲートウェイ欄が最寄りのルーターのIPアドレス。
  2. ARPを使ってそのIPアドレスからMACアドレスを取得。

送信元MACアドレスには、PCのLANアダプタに割り当てられたMACアドレスを設定します。
LANアダプタ内のROMから取得します。

イーサ・タイプには、IPを示す0800を設定します。


パケットが準備できたので、最寄りのルーターに向けて、LANアダプタにパケットを送り出してもらいます。

ルーターがパケットを受信

ルーターにパケットが届いてからの流れです。
PCの最寄りルーターと、サーバーの最寄りルーターは、動きがほとんど同じなのでまとめて説明します。

  1. MACヘッダーの宛先MACアドレスが自分に該当するかどうか調べる。該当しないならパケットを棄てる。
  2. MACヘッダーを棄てる。

ルーターがパケットを中継

IPヘッダーの内容を見て、パケット中継動作に入ります。

  1. 経路表で中継先を調べる。PCの最寄りルーターならデフォルト経路が使われ、サーバーの最寄りルーターならサーバーへの経路が使われる。
  2. IPヘッダーのTTLを1減らす。
  3. パケットが大きければフラグメンテーション機能で分割する。IPヘッダーのフラグ・フィールドが分割不可になっていたらパケットを棄てて、ICMP2メッセージで送信元に通知する。

ルーターがパケットを送信

PCと同様に、MACヘッダーを作ります。

宛先MACアドレスには、PCの最寄りルーターなら次のルーターのMACアドレスを設定し、サーバーの最寄りルーターならサーバーのMACアドレスを設定します。
アドレスを特定するには、上述と同様経路表とARPを使います。

送信元MACアドレスには、出力側のポートに割り当てられたMACアドレスを設定します。

これで送信準備ができたので、パケットを電気信号に変換してポートから送信します。

サーバーがパケットを受信

サーバーにパケットが届いてからの流れです。

  1. 宛先IPアドレスが自分宛になっているかどうかを調べる。
  2. フラグメンテーションによるパケット分割の有無を調べる。分割されていたら復元する。
  3. TCPにパケットを渡す。

ここまでで説明は終わりです。
サーバーからの応答は、PCに向けて同じ流れで送信されるからです。

最後までご覧いただき、ありがとうございました。

参考

Footnotes

  1. IPv4 - Wikipedia参照。

  2. Internet Control Message Protocol - Wikipedia参照。