3. インターネット層プロトコル (INTERNET LAYER PROTOCOLS)
3.1 はじめに (INTRODUCTION)
インターネットプロトコル (Internet Protocol, IP) は、インターネットプロトコルスイートの中心プロトコルです。すべてのインターネットトランスポートプロトコルは、ソースホストから宛先ホストへデータを運ぶためにIPを使用します。IPは、データグラムまたはコネクションレス型のインターネットワークサービスであり、アドレッシング、サービスタイプ指定、フラグメンテーションと再組み立て、およびセキュリティ情報のための規定を含んでいます。
インターネット層には、制御および報告機能を提供するインターネット制御メッセージプロトコル (Internet Control Message Protocol, ICMP)、およびマルチキャスティングに使用されるインターネットグループ管理プロトコル (Internet Group Management Protocol, IGMP) も含まれます。
すべてのインターネットホストは、IPとICMPを実装しなければなりません (MUST)。IPマルチキャストをサポートするホストは、IGMPも実装しなければなりません (MUST)。
3.2 プロトコルウォークスルー (PROTOCOL WALK-THROUGH)
3.2.1 インターネットプロトコル -- IP (Internet Protocol)
インターネットプロトコルは RFC 791 [IP:1] で定義されています。IPヘッダー形式と各フィールドのセマンティクスは、明確に定義され文書化されています。ただし、ホスト実装のために明確化または追加仕様が必要ないくつかの領域があります。
3.2.1.1 バージョン番号 (Version Number)
ホストは、バージョン番号が4 (現在のインターネットプロトコルのバージョン番号) でないIPデータグラムを黙って破棄しなければなりません (MUST)。
3.2.1.2 チェックサム (Checksum)
ホストは、受信したすべてのデータグラムのIPヘッダーチェックサムを検証し、不正なチェックサムを持つすべてのデータグラムを黙って破棄しなければなりません (MUST)。
3.2.1.3 アドレッシング (Addressing)
すべてのIPデータグラムには、送信元IPアドレスと宛先IPアドレスが含まれます。IPアドレスには、ネットワーク番号とホスト番号の2つのコンポーネントがあります。
ネットワーク番号は、ホストが接続されている物理ネットワークを識別します。ホスト番号は、そのネットワーク上の特定のホストを識別します。
ホストは、次の特別なアドレスをサポートしなければなりません (MUST):
- 制限付きブロードキャスト (Limited Broadcast): 255.255.255.255
- 指示ブロードキャスト (Directed Broadcast):
{ホスト部がすべて1} - このネットワーク上のこのホスト (This Host on This Network): 0.0.0.0
- このネットワーク上のホスト (Host on This Network):
{network, host} - ループバック (Loopback): 127.x.x.x
3.2.1.4 フラグメンテーションと再組み立て (Fragmentation and Reassembly)
すべてのインターネットモジュールは、フラグメンテーションなしで68オクテットのデータグラムを転送できなければなりません (MUST)。ホストは、少なくとも576オクテットのフラグメント化されたデータグラムを再組み立てできなければなりません (MUST)。
3.2.1.5 識別 (Identification)
データグラムの同一のコピーを送信する場合、IP識別フィールドは元のデータグラムと同じでなければなりません (MUST)。
ホストがIPデータグラムをフラグメント化するとき、元のIPヘッダーから識別フィールドをすべてのフラグメントヘッダーにコピーしなければなりません (MUST)。
3.2.1.6 サービスタイプ (Type-of-Service)
IPヘッダーのサービスタイプ (Type-of-Service, TOS) バイトは、特定のデータグラムに望まれるサービス品質を示すために使用されます。TOS値は、スループット、遅延、信頼性、およびコストの相対的重要性を指定します。
アプリケーションは、送信するパケットのTOS値を指定できなければなりません (MUST)。IP層は、TOS値を変更せずにリンク層に渡さなければなりません (MUST)。
3.2.1.7 生存時間 (Time-to-Live)
生存時間 (Time-to-Live, TTL) フィールドは送信者によって設定され、データグラムを転送する各ルーターによってデクリメントされます。TTLがゼロに達すると、データグラムは破棄されます。
ホストは、生存時間 (TTL) 値がゼロのデータグラムを送信してはなりません (MUST NOT)。ホストは、TTLが2未満で受信されたという理由だけでデータグラムを破棄してはなりません (MUST NOT)。
3.2.1.8 オプション (Options)
いくつかのIPオプションが定義されています:
- 記録ルート (Record Route): データグラムがたどったルートを記録します
- タイムスタンプ (Timestamp): パスに沿ったルーターでタイムスタンプを記録します
- ソースルート (Source Route): データグラムがたどるべきルートを指定します
- セキュリティ (Security): セキュリティおよび取り扱い制限を提供します
ホストは、受信するすべてのIPオプションに対して動作できなければなりません (MUST)。一部のオプションは、それらを受信するすべてのホストによる処理を必要とし、他のものは宛先ホストによる処理のみを必要とします。
3.2.2 インターネット制御メッセージプロトコル -- ICMP (Internet Control Message Protocol)
ICMP [INTERNET:8] は、IPパケット処理に関するエラーやその他の情報をソースに報告するために使用されます。ICMPメッセージはIPデータグラムで送信されます。
すべてのホストは、ICMPを実装しなければなりません (MUST)。次の結果として受信されたICMPエラーメッセージを送信してはなりません (MUST NOT):
- ICMPエラーメッセージ
- IPブロードキャストまたはIPマルチキャスト アドレス宛てのデータグラム
- リンク層ブロードキャストとして送信されたデータグラム
- 非初期フラグメント
- 送信元アドレスが無効なデータグラム
3.2.2.1 宛先到達不能 (Destination Unreachable)
宛先到達不能メッセージは、輻輳以外の理由でデータグラムを宛先に配信できない場合に送信されます。
ホストは、次のコードで宛先到達不能メッセージを生成すべきです (SHOULD):
- 2 (プロトコル到達不能 Protocol Unreachable): データグラムで指定されたトランスポートプロトコルがサポートされていない場合に送信
- 3 (ポート到達不能 Port Unreachable): 宛先トランスポートプロトコルがデータグラムを多重分離できない場合に送信
3.2.2.2 リダイレクト (Redirect)
リダイレクトメッセージは、特定の宛先へのより良いルートをホストに通知するためにルーターによって送信されます。
ホストは、リダイレクトメッセージに対して動作できなければなりません (MUST)。ホストは、リダイレクトを受信したときにルーティングテーブルを更新しなければなりません (MUST)。
3.2.2.3 ソースクエンチ (Source Quench)
ソースクエンチは、輻輳制御のためのメカニズムです。ホストまたはルーターがバッファオーバーフローのためにデータグラムを破棄しなければならない場合、ソースにソースクエンチメッセージを送信してもよい (MAY) です。
ソースクエンチメッセージを受信するホストは、指定された宛先へデータグラムを送信する速度を減らさなければなりません (MUST)。
3.2.2.4 時間超過 (Time Exceeded)
時間超過メッセージは、生存時間フィールドがゼロに達したためにデータグラムが破棄されたときにルーターによって送信されます。
時間超過メッセージは、タイムアウト期間内にフラグメント再組み立てを完了できない場合にも宛先ホストによって送信されます。
3.2.2.5 パラメーター問題 (Parameter Problem)
パラメーター問題メッセージは、IPヘッダーパラメーターの処理で問題が検出され、データグラムが破棄されたことを示します。
3.2.2.6 エコー要求/応答 (Echo Request/Reply)
すべてのホストは、エコー要求を受信し、対応するエコー応答を送信するICMPエコーサーバー機能を実装しなければなりません (MUST)。
IPブロードキャストまたはIPマルチキャストアドレス宛てのICMPエコー要求は、黙って破棄されてもよい (MAY) です。
3.2.2.7 情報要求/応答 (Information Request/Reply)
情報要求および応答メッセージは廃止されており、実装すべきではありません (SHOULD NOT)。
3.2.2.8 タイムスタンプとタイムスタンプ応答 (Timestamp and Timestamp Reply)
タイムスタンプとタイムスタンプ応答メッセージは、往復時間を測定し、クロックを同期するために使用されます。
ホストは、ICMPタイムスタンプを実装してもよい (MAY) です。実装する場合、タイムスタンプの指定された形式に従わなければなりません (MUST)。
3.2.2.9 アドレスマスク要求/応答 (Address Mask Request/Reply)
アドレスマスク要求および応答メッセージにより、ホストはローカルネットワークのサブネットマスクを取得できます。
ホストは、サブネット化をサポートする場合、サブネットマスクICMPメッセージをサポートしなければなりません (MUST)。サポートする場合、アドレスマスク要求に応答しなければならず (MUST)、起動時にアドレスマスク要求を送信する構成オプションを持つべきです (SHOULD)。
3.2.3 インターネットグループ管理プロトコル -- IGMP (Internet Group Management Protocol)
IGMP [INTERNET:4] は、ホストと隣接ルーターがマルチキャストグループメンバーシップを確立するために使用されます。
ホストは、IPマルチキャスティングをサポートする場合、IGMPを実装しなければなりません (MUST)。レベル2適合 (完全なIGMP実装) が必須です (REQUIRED)。
3.3 特定の問題 (SPECIFIC ISSUES)
3.3.1 アウトバウンドデータグラムのルーティング (Routing Outbound Datagrams)
3.3.1.1 ローカル/リモート判定 (Local/Remote Decision)
宛先がローカルかリモートかを決定するために、IPホストは宛先アドレスがホスト自身のIPアドレスのいずれかと同じネットワークプレフィックスを持つかどうかをチェックします。
3.3.1.2 ゲートウェイ選択 (Gateway Selection)
リモート宛先に送信する場合、ホストはデータグラムを転送するゲートウェイ (ルーター) を選択しなければなりません (MUST)。
3.3.1.3 ルートキャッシュ (Route Cache)
ホストは、<宛先, ゲートウェイ> エントリのルートキャッシュを維持してもよい (MAY) です。
3.3.1.4 デッドゲートウェイ検出 (Dead Gateway Detection)
ホストは、ゲートウェイの障害を検出し、手動介入なしに代替ゲートウェイに切り替えることができなければなりません (MUST)。
3.3.1.5 新しいゲートウェイ選択 (New Gateway Selection)
障害したゲートウェイから切り替える場合、ホストはデフォルトゲートウェイのリストから代替ゲートウェイを選択すべきです (SHOULD)。
3.3.1.6 初期化 (Initialization)
ホストは、構成可能なデフォルトゲートウェイのリストを持たなければなりません (MUST)。
3.3.2 再組み立て (Reassembly)
IP再組み立て機能は、次の要件に準拠しなければなりません (MUST):
- ホストは、少なくとも576オクテットのフラグメント化されたデータグラムを再組み立てできなければなりません (MUST)
- 再組み立てタイムアウトは、少なくとも60秒でなければなりませんが、120秒を超える必要はありません (MUST)
3.3.3 フラグメンテーション (Fragmentation)
ホストは、ローカルIPフラグメンテーションをサポートしなければなりません (MUST)。データグラムをフラグメント化するとき、ホストは特定のIPヘッダーフィールドを各フラグメントヘッダーにコピーしなければなりません (MUST)。
3.3.4 ローカルマルチホーミング (Local Multihoming)
3.3.4.1 はじめに (Introduction)
マルチホームホストは、同じまたは異なるネットワーク上にある複数のIPアドレスを持ちます。
3.3.4.2 マルチホーミング要件 (Multihoming Requirements)
複数のIPアドレスを持つホストは、そのIPアドレスのいずれかを使用してデータグラムを送受信できなければなりません (MUST)。
3.3.4.3 送信元アドレスの選択 (Choosing a Source Address)
データグラムを送信するとき、マルチホームホストは適切な送信元IPアドレスを選択しなければなりません (MUST)。
3.3.5 ソースルート転送 (Source Route Forwarding)
ホストは、ソースルートの発信と処理をサポートしなければなりません (MUST)。
3.3.6 ブロードキャスト (Broadcasts)
ホストは、ブロードキャストデータグラムの受信と処理をサポートしなければなりません (MUST)。ホストがブロードキャストデータグラムを受信したとき、各トランスポートプロトコルにコピーを渡さなければなりません (MUST)。
3.3.7 IPマルチキャスティング (IP Multicasting)
ホストは、IPマルチキャスティングをサポートすべきです (SHOULD)。IPマルチキャスティングをサポートするホストは、[INTERNET:4] の要件に準拠しなければなりません (MUST)。
3.3.8 エラー報告 (Error Reporting)
IP層エラーは、必要に応じてトランスポート層またはアプリケーションに報告されるべきです (SHOULD)。
3.4 インターネット/トランスポート層インターフェース (INTERNET/TRANSPORT LAYER INTERFACE)
インターネット層は、トランスポート層プロトコル (TCPとUDP) にサービスを提供します。インターフェースには、次の操作が含まれます:
- 送信 (Send): トランスポート層からパケットを受け入れて送信する
- 受信 (Receive): 着信パケットを受け入れてトランスポート層に配信する
- エラー報告 (Report Error): トランスポート層にエラーを報告する
3.5 インターネット層要件サマリー (INTERNET LAYER REQUIREMENTS SUMMARY)
| 機能 | セクション | Must | Should | May | Not |
|---|---|---|---|---|---|
| IPチェックサム検証、不正なデータグラム破棄 | 3.2.1.2 | x | |||
| バージョン != 4のデータグラム破棄 | 3.2.1.1 | x | |||
| 少なくとも576オクテットのデータグラム再組み立て | 3.2.1.4 | x | |||
| サブネットアドレッシングサポート | 3.3.4.2 | x | |||
| ICMP実装 | 3.2.2 | x | |||
| ICMP宛先到達不能送信 | 3.2.2.1 | x | |||
| ICMPソースクエンチ送信 | 3.2.2.3 | x | |||
| ICMPエコーサーバー実装 | 3.2.2.6 | x | |||
| IPマルチキャスティングサポート | 3.3.7 | x | |||
| デッドゲートウェイ検出 | 3.3.1.4 | x | |||
| 記録ルートオプション処理 | 3.2.1.8 | x | |||
| タイムスタンプオプション処理 | 3.2.1.8 | x | |||
| ソースルートオプション処理 | 3.3.5 | x |