IP

July 18, 2018

IP の特徴

IP (Internet Protocol) はネットワーク改装モデルではネットワーク層に位置するプロトコルである。
IP はコネクションレスなプロトコルであり、通信する両端のホスト間でパケットを伝送する機能、パケット単位のエラーチェック機能、MTU を超えるパケットの分割機能/再構築機能を持つ。
パケット廃棄の見地及び再送が必要な場合は、上位層に TCP を用いて通信する。

IP はコネクション方式とは異なり、パケットの順序管理、パケット廃棄に伴う再送要求、ウィンドウを用いたフロー制御、輻輳制御等を行わない。
よって、コネクション確率フェーズ、確認応答処理、再送処理、スロースタートといった、コネクション管理に特化したやりとりに伴う遅延は発生しない。

なお、本エントリでは IPv4 を想定している。

IP ヘッダ

IP パケットは、以下のような構造のヘッダを持つ。

f:id:shiro_kochi:2018××××××××:plain:w100:left

  • Version (4)
    バージョン 4 を表す 0x04 が格納される。
  • IHL (4)
    ヘッダ長であり、単位は 4 バイトとなる。オプションがない場合 IP ヘッダは 20 バイトなので、0x05 が格納される。
  • Type Of Service (8)
    ルータがこのパケットを転送する際のサービス品質を表す。
  • Identification (16)
    送信側で IP パケットを送出するたびに ID を割り当てる。
  • Flags (3), Fragment Offset (13)
    ルータは IP データグラムを転送する際、データグラムの長さがリンクの MTU (Max Transfer Unit) を超えていると、MTU に収まるように IP データグラムを分割する。
    分割した各々のデータグラムに IP ヘッダを付加し、複数個の IP パケットを生成する。(IP フラグメンテーション)
    分割された IP パケットは宛先ホストで再構築される。このフラグメント処理を行うため、IP ヘッダにフラグとフラグメントオフセットが定義されている。
    フラグの種類には、フラグメント化禁止ビット、分割パケットの末尾であるかを表示するビットがある。
    送信ホストによって分割禁止がセットされていた場合、その IP データグラムの長さが MTU を超えるとその IP データグラムはルータによって破棄される。
    その際、ルータは送信元ホストに ICMP パケット (宛先到達不能) を送信する。
    以下にフラグフィールドの構造を示す。
ビット 意味
0 未使用 0
1 分割可能か 0 = 分割可能/1 = 分割禁止
2 最後のパケットか途中のパケットか 0 = 最後のパケット/1 = 途中のパケット

フラグメントオフセットには、分割されたデータグラムがオリジナルデータのどこに位置していたかを示すオフセット値 (単位は 8 バイト) が入っている。
分割されたパケットが全て届いていれば、順番通りでなくても、フラグメントオフセットを用いて元どおりに復元できる。

  • Time To Live (8)
    ルータを経由するごとに、この値が 1 つずつ減ってゆく。この値が 0 になるとパケットは破棄され、ルータから ICMP パケット (時間超過) が送信元ホストへ送信される。
  • Protocol (8)
    上位層のプロトコルを識別する番号で、ICANN により管理されている
    主要なプロトコルは以下。
プロトコル番号 プロトコル
1 ICMP
2 IGMP
4 IP in IP (encapsulation)
6 TCP
17 UDP
46 RSVP
50 ESP
51 AH
89 OSPF (OSPFIGP)
  • Header Checksum (16)
    IP ヘッダのビットレベルの整合性チェックを行う。TTL がルータを経由するたびに1つ減るため、このヘッダチェックサムもその度に再度計算される。
  • Source/Destination Address (32)
    IP アドレスは ICANN により管理されており、用途に応じて以下の範囲が予約されている。
IP アドレスの範囲 用途
127.0.0.0 ~ 127.255.255.255 ループバックアドレス。通常は 127.0.0.1 が使用される。
169.254.0.0 ~ 169.254.255.255 リンクローカルアドレス。自動プライベート IP 指定 (APIPA: Automatic Private IP Addressing) で使用される。APIPA とは DHCP サーバがない時、ホスト自身がこの範囲から IP アドレスをランダムに設定する機能である。
244.0.0.0 ~ 239.255.255.255 マルチキャストアドレス
255.255.255.255 ~ 255.255.255.255 制限ブロードキャストアドレス。ネットワークアドレスを指定せずに、送信元ホストが所属するサブネットにブロードキャストを送信するときに使用する。
10.0.0.0 ~ 10.255.255.255 / 172.16.0.0 ~ 172.31.255.255 / 192.168.0.0 ~ 192.168.255.255 プライベートアドレス

IP パケット

IP パケットはその到達範囲により以下の 3 つに分類できる。

  • ユニキャストパケット
    宛先が 1 台のホストであるパケット
  • マルチキャストパケット
    宛先が特定の機能や役割をもつ複数のホストであるパケット
  • ブロードキャストパケット
    宛先が同一ネットワーク内全てのホストであるパケット

ブロードキャストパケットが到達する範囲をブロードキャストドメインと呼び、ブロードキャストパケットには次に示す 3 つの種類がある。

種類 説明
ディレクテッドブロードキャスト 指定されたサブネットの全ホストを宛先とするブロードキャスト。自分と異なるサブネットを指定することが可能。宛先 IP アドレスはネットワーク部に送信対象のネットワークアドレスが指定され、ホスト部は全てのビットが 1 となる。
ローカルブロードキャスト ディレクテッドブロードキャストの一種であり、自分と同じサブネットの全ホストを宛先とするブロードキャスト。宛先 IP アドレスはネットワーク部に自ネットワークアドレスが指定され、ホスト部は全てのビットが 1 となる。
制限ブロードキャスト 宛先 IP アドレスに 255.255.255.255 を使用し、自分と同じサブネットの全ホストを宛先とするブロードキャスト。制限ブロードキャストパケットを使用しているプロトコルの例は DHCP である。DHCP クライアントは、ホストを起動した直後に DHCP 発見パケットを送信する。起動時には IP アドレスやサブネットなどの情報がないので、宛先 IP アドレスに制限ブロードキャストアドレスが用いられる。

ルータはローカルブロードキャストと制限ブロードキャストパケットを中継しない。
一方、他ネットワーク宛てのディレクテッドブロードキャストはルータを超えて中継されるが、DoS を防ぐために、デフォルトで禁止しているルータもある。(Cisco IOS など)


 © 2023, Dealing with Ambiguity