インターネットプロトコル(IP)は、インターネットプロトコルスイートに含まれるネットワーク層の通信プロトコルであり、ネットワーク境界を越えてデータグラムを中継するために使用されます。そのルーティング機能により、インターネットワーキングが可能になり、実質的にインターネットが構築されます。
IPは、パケットヘッダー内のIPアドレスのみに基づいて、送信元ホストから宛先ホストへパケットを配信する役割を担っています。この目的のために、IPは配信するデータをカプセル化するパケット構造を定義しています。また、データグラムに送信元情報と宛先情報を付加するために使用されるアドレス指定方法も定義しています。
IPは、1974年にヴィント・サーフとボブ・カーンによって導入されたオリジナルの伝送制御プログラム(TCP)におけるコネクションレス型データグラムサービスであり、後にコネクション指向型サービスが補完され、これが伝送制御プロトコル(TCP)の基礎となった。そのため、インターネットプロトコルスイートはしばしばTCP/IPと呼ばれる。
IPの最初の主要バージョンであるインターネットプロトコルバージョン4(IPv4)は、インターネットの主流プロトコルです。その後継はインターネットプロトコルバージョン6 (IPv6)で、 2006年頃から公共インターネットでの導入が進んでいます。[ 1 ]

インターネットプロトコルは、ホストインターフェイスのアドレス指定、データグラムへのデータのカプセル化(断片化と再構成を含む)、および1つ以上のIPネットワークを介して送信元ホストインターフェイスから宛先ホストインターフェイスへのデータグラムのルーティングを担当します。[ 2 ]これらの目的のために、インターネットプロトコルはパケットのフォーマットを定義し、アドレス指定システムを提供します。
各データグラムは、ヘッダーとペイロードの2つの要素から構成されます。IPヘッダーには、送信元IPアドレス、宛先IPアドレス、およびデータグラムのルーティングと配信に必要なその他のメタデータが含まれます。ペイロードは、転送されるデータそのものです。このようにデータペイロードをヘッダー付きパケットにネストする方式は、カプセル化と呼ばれます。
IPアドレス指定とは、ホストインターフェースにIPアドレスと関連パラメータを割り当てることです。アドレス空間はサブネットに分割され、ネットワークプレフィックスが指定されます。IPルーティングはすべてのホストとルーターによって実行され、ルーターの主な機能はネットワーク境界を越えてパケットを転送することです。ルーターは、ネットワークのトポロジーに応じて、内部ゲートウェイプロトコルまたは外部ゲートウェイプロトコルのいずれか、特別に設計されたルーティングプロトコルを介して相互に通信します。[ 3 ]
インターネットプロトコルには、主に4つのアドレス指定方法があります。


1974 年 5 月、電気電子学会(IEEE) は「パケット ネットワーク相互通信のためのプロトコル」というタイトルの論文を発表しました。[ 5 ]この論文の著者であるVint CerfとBob Kahn は、ネットワーク ノード間でパケット スイッチングを使用してリソースを共有するためのインターネットワーキング プロトコルについて説明しました。このモデルの中央制御コンポーネントは、ホスト間の接続指向リンクとデータ グラム サービスの両方を組み込んだ伝送制御プログラムでした。モノリシックな伝送制御プログラムは後に、トランスポート レイヤーの伝送制御プロトコルとユーザー データ グラム プロトコル、およびインターネット レイヤーのインターネット プロトコルからなるモジュール アーキテクチャに分割されました。このモデルは、国防総省 (DoD) インターネット モデルおよびインターネット プロトコル スイートとして知られるようになり、非公式にはTCP/IPと呼ばれています。
以下のインターネット実験ノート(IEN)文書は、インターネットプロトコルがIPv4の現代版へと進化する過程を説明しています。[ 6 ]
IP バージョン 1 ~ 3 は、1973 年~ 1978 年の間に設計された実験的なバージョンでした。[ 7 ]バージョン 2 および 3 は、1 ~ 16 オクテット (8 ~ 128 ビット) の可変長アドレスをサポートしていました。[ 8 ]バージョン 4 の初期ドラフトでは、最大 256 オクテット (最大 2048 ビット) の可変長アドレスをサポートしていましたが[ 9 ] 、これは後にIPv4の最終バージョンで固定サイズの 32 ビット アドレスを採用するために放棄されました。これは、インターネット層で使用されている主要なインターネットワーキング プロトコルであり、番号 4 はプロトコル バージョンを識別し、すべての IP データ グラムに含まれています。IPv4 はRFC 791 (1981) で定義されています。
バージョン番号5は、採用されなかった実験的なストリーミングプロトコルであるインターネットストリームプロトコルで使用されました。 [ 7 ]
IPv4 の後継はIPv6です。 IPv6 は、TP/IX ( RFC 1475 )、PIP ( RFC 1621 )、TUBA (TCP および UDP with Bigger Addresses、RFC 1347 ) など、さまざまなプロトコル モデルが提案された数年間の実験と対話の結果です。バージョン 4 との最も顕著な違いはアドレスのサイズです。 IPv4 はアドレス指定に32 ビットを使用し、約 43億( IPv6は128ビットアドレスを使用し、約4.3 × 10⁹個のアドレスを提供します。3.4 × 10 38アドレス。IPv6 の普及は遅れているものの、2023 年1 月現在 世界のほとんどの国ではIPv6の普及が進んでおり[ 10 ] 、 Googleのトラフィックの41%以上がIPv6接続で伝送されている[ 11 ] 。
IPv6 という新しいプロトコルの割り当ては、IPv6 が以前に使用されていないことがデューデリジェンスによって確認されるまで不確実でした。[ 12 ]他のインターネット層プロトコルには、7 ( IP/TX )、8、9 ( historic )などのバージョン番号が割り当てられています。 [ 13 ]特に、1994 年 4 月 1 日にIETF は、IPv9 に関するエイプリルフールの RfCを公開しました。[ 14 ] IPv9 は、TUBA と呼ばれる代替のアドレス空間拡張案でも使用されました。[ 15 ] 2004 年の中国によるIPv9 プロトコルの提案は、これらすべてとは無関係のようで、IETF によって承認されていません。
バージョン番号は4ビットのフィールドに格納されるため、0~15の数値のみを割り当てることができます。
インターネットプロトコルスイートの設計は、 CYCLADESプロジェクトから採用されたエンドツーエンド原則に準拠しています。エンドツーエンド原則では、ネットワークインフラストラクチャは、個々のネットワーク要素や伝送媒体において本質的に信頼性が低く、リンクやノードの可用性に関して動的であるとみなされます。ネットワークの状態を追跡または維持する中央監視機能や性能測定機能は存在しません。ネットワークの複雑さを軽減するために、ネットワークのインテリジェンスはエンドノードに配置されています。
この設計の結果、インターネットプロトコルはベストエフォート型の配信しか提供せず、そのサービスは信頼性が低いとされています。ネットワークアーキテクチャの用語では、コネクション指向型通信とは対照的に、コネクションレス型プロトコルです。データ破損、パケット損失、重複など、さまざまな障害が発生する可能性があります。ルーティングは動的であり、すべてのパケットが独立して処理され、ネットワークは以前のパケットのパスに基づいて状態を保持しないため、異なるパケットが異なるパスを経由して同じ宛先にルーティングされる可能性があり、結果として受信側への配信順序が乱れることがあります。
ネットワーク内のすべての障害状態は、参加するエンドノードによって検出され、補償されなければなりません。インターネットプロトコルスイートの上位層プロトコルは、信頼性の問題を解決する責任を負います。たとえば、ホストは、データがアプリケーションに配信される前に正しい順序で送信されるように、ネットワークデータをバッファリングする場合があります。
IPv4 は、IP パケットのヘッダーにエラーがないことを保証するための保護機能を提供します。ルーティング ノードは、ヘッダーチェックサムテストに失敗したパケットを破棄します。インターネット制御メッセージ プロトコル(ICMP) はエラーの通知を提供しますが、ルーティング ノードは、どちらのエンド ノードにもエラーを通知する必要はありません。一方、IPv6 は、現在のリンク層技術が十分なエラー検出を提供すると想定されているため、ヘッダー チェックサムなしで動作します。[ 25 ] : §6.2 [ 19 ]
インターネットの動的な性質と構成要素の多様性により、特定の経路が要求されたデータ伝送を実行できる、または実行に適しているという保証はありません。技術的な制約の1つは、特定のリンクで可能なデータパケットのサイズです。ローカルリンクの最大伝送単位(MTU)サイズを調べる機能があり、宛先までの意図された経路全体に対してパスMTU検出を使用できます。[ 26 ]
IPv4 のインターネットワーキング層は、リンク MTU を超えると、データグラムを自動的に小さな単位に分割して送信します。IP は、順不同で受信したフラグメントの並べ替え機能を提供します。 [ 27 ] IPv6 ネットワークは、ネットワーク要素でフラグメンテーションを実行しませんが、エンド ホストと上位層プロトコルがパス MTU を超えないようにする必要があります。[ 28 ]
伝送制御プロトコル(TCP)は、セグメントサイズをMTUよりも小さく調整するプロトコルの例です。ユーザーデータグラムプロトコル(UDP)とICMPはMTUサイズを無視するため、IPはサイズ超過のデータグラムをフラグメント化せざるを得ません。[ 29 ]
ARPANETと初期のインターネットの設計段階では、公共の国際ネットワークのセキュリティ面とニーズが十分に想定されていませんでした。その結果、多くのインターネットプロトコルに脆弱性が見られ、ネットワーク攻撃やその後のセキュリティ評価で明らかになりました。2008年には、徹底的なセキュリティ評価と問題の緩和策が発表されました。[ 30 ] IETFはさらなる研究を進めています。[ 31 ]
著者らは、国際ネットワークプロトコルの初期段階の議論において有益なコメントをいただいた多くの同僚、特に R. Metcalfe、R. Scantlebury、D. Walden、および H. Zimmerman、断片化とアカウンティングの問題について建設的なコメントをいただいた D. Davies および L. Pouzin、およびアソシエーションの作成と破棄についてコメントをいただいた S. Crocker に感謝いたします。