誤解に基づく俗称としてIPアドレスを「IP」と呼ぶことがある。 IPは2つの側面から理解できる。1つはIP層でのデータ転送モデル、もう1つはプロトコルスタックの層を跨いだデータ転送手順である。 IPは、パケットのヘッダ部分に記された宛先アドレスに基づいてネットワーク内でパケットを転送することによってデータを送信する。 パケット(英: packet)[4]はIPにおける送受信単位である[5]。パケットはヘッダとペイロードからなり[6]、ヘッダの情報に基づいて宛先アドレスの経路へと送られる[7]。ヘッダ(英: header)[8]はメタデータの集合であり、バージョン番号・送信元アドレス・宛先アドレスなど、送受信に必要な情報が含まれている。ペイロード(英: payload)[9]はパケットのヘッダ以外の部分であり[10]、IPで転送するコンテンツが主体で、場合によりメタデータも含んでいる。 パケットは送信元から宛先へ直接送られるのではなく、いくつものホスト (gateway) を経由する。Gatewayはヘッダの宛先アドレスを確認し、宛先への経路上にある次のGateway(あるいは宛先そのもの)へとパケットを転送する。これを繰り返すことでパケットは最終的に宛先アドレスに到達する[11]。 経路上に転送可能サイズ上限があった場合はパケットが弾かれる可能性がある。IPではパケット長制限が無い代わりに、フラグメント化機能(パケットを小パケットへ分割する機能)を提供してこの制約を回避する。 IPはプロトコルスタックの1層をなす[12]。すなわち上層から転送対象と宛先アドレスを受け取り、リンク層へパケットを渡す[13]。 IPでは、各々のLANで通信可能な範囲をセグメントと呼び、セグメント内のコンピュータをホストと呼ぶ。同じセグメントに属するホスト同士はそのLANで使用されている通信プロトコルをデータリンク層とし、その上のネットワーク層で稼動する。 つまり同じセグメントに属するホスト同士は(IP以前からそうであったように)直接通信する。IPはセグメントの外と通信することが可能であり、そして何も変更せずに(全く同じ機器/ソフトウェア構成で)セグメント内とセグメント外との区別なく通信が可能となることである。そのため、LAN内の通信にあえてIPを使うイントラネットを採用することで、インターネット用のソフトウェア資産やノウハウをそのままLAN内通信に利用することができる。 同じセグメント内のホスト同士の通信では、そのLANで使われているプロトコルを使って通信する。そのためIPの各実装では、そのLANで使われているプロトコルから完全に独立することはできない。 まず、送信先となるIPアドレスを持つホストにデータリンク層のデータとして送信するために必要な情報を収集しなければならない。例えばイーサネットであれば、送信先のIPアドレスを持つホストのインターフェースが持っているMACアドレスが対象となる。そのためにブロードキャストもしくはマルチキャストによってその特定のIPアドレスを持つホストに返答を要求する。そのIPアドレスを持っているホストはそれに対してMACアドレスを返答する。 一般にブロードキャストは負荷が高くLAN内の通信を阻害するため、こうして得られたMACアドレスは今後同じIPアドレスに送信するときには再度ブロードキャストせずに、キャッシュに控えておく。 IPの実装では、こうしたアドレス解決と実際の送受信部分だけはデータリンク層のプロトコルに依存することになる。しかしこの依存部分は、実際にそのデータリンク層のプロトコル を使うホストでのみ必要になるため、世界中に存在する各セグメントとの通信の際には問題にならない。異なるデータリンク層のプロトコル を使うセグメントに分かれたホスト同士の通信の場合は、後述するゲートウェイがこれを解決する。 セグメントとセグメントの間、あるいはセグメントとWANの間にはルーティングを行なうための特別なホストであるルータ設置される。ルータにはあらかじめ、自身が繋がれているそれぞれのセグメントにいるホストのIPアドレスを教えてある。これはルーティングテーブルと呼ばれる。ルータは、一方のセグメントのホストから他方のセグメントのホストにパケットが送られようとしているとき、いったん受信側のホストの代わりにパケットを前者のLANのプロトコルで受け取る。ルーティングテーブルを参照してどのセグメントに送ればいいかを選択し、そのパケットを後者のLANのプロトコルで後者のホストに送る。ルータはルーティングテーブルにより、どのIPアドレスに送るにはどのセグメントに送ればよいかを把握している。経路の一部が破壊されても、このルーティングテーブルを書き換えるだけで破壊箇所を迂回することが可能になる。 ルータと似ているが、ルーティングテーブルを持たず、異なるLANのプロトコルを変換して互いに中継するブリッジと呼ばれるものがある。しかしブリッジはIPより下位の層(OSI参照モデルのデータリンク層)の機器であり、IPとは関係なく動作する。 また特に、異なるプロトコルを用いるセグメント同士の間をつなぐルータはゲートウェイ(門)と呼ばれる。本来、ゲートウェイはOSI参照モデルのネットワーク層におけるブリッジに相当するルータの基本機能の一部だが、セグメントのほとんどがイーサネットになっているため、特にセグメントとWANとの間にあるルータだけがゲートウェイであることが多い。またルータが把握していないIPアドレスは(ルーティング処理の一環として)全てデフォルトゲートウェイと呼ばれる特別なゲートウェイに送られる。デフォルトゲートウェイは通常WANとの接続部分にあるため、未知のIPアドレスへのパケットは全てWAN側(外の世界)のルータにパケットを送信することになる。そしてWANのルータが送信先となるIPアドレスの存在するセグメントのゲートウェイにパケットを送信し、ゲートウェイが送信先となるIPアドレスを持つホストにパケットを送信することで世界中のホストと通信が行なわれる。 Internet Protocol は、ホストのアドレッシング[14]とデータグラム(パケット)の送信元ホストから宛先ホストまでの1つまたは複数のIPネットワークをまたいだルーティングを担当する。このために、ホストの識別と論理的位置サービスの提供という2つの機能を持つアドレッシング体系を定義している。これは、標準データグラムと標準アドレッシング体系を定義することでなされる。 データグラムはヘッダとペイロードで構成される。IPヘッダには、送信元IPアドレス、宛先IPアドレス、データグラムのルーティングや転送に必要なメタデータが含まれる。ペイロードは転送すべきデータである。このようにデータ・ペイロードにパケットのヘッダを付与して入れ子状に構成していくことをカプセル化と呼ぶ。 IPアドレッシングとは、各ホストにIPアドレスを割り当てる方法であり、IPホストアドレス群を分割・グループ化してサブネットワークを形成する方法である。IPルーティングは全てのホストが行うが、最も重要な部分はルータが担っており、経路を決定するのに Interior Gateway Protocol (IGP) または Exterior Gateway Protocol (EGP) を使用する。 IPは「独立した単一パケットを、送信元から宛先へ、ネットワークのネットワークを介して、送ること」のみを上手くシンプルに扱うよう設計されている[15]。ゆえに意図時に提供しない機能がある[16]。 すなわち、送出に焦点を合わせているのでACKチェックや再送をおこなわない。また単一パッケージ管理を扱うので複数パケットに跨る流量制御や順序制御には関与しない。 IPの設計原理は、ネットワーク基盤はどのネットワーク要素や伝送媒体をとっても本質的に信頼できないと仮定しており、また、リンクやノードの可用性の面でも一定でないと仮定している。ネットワークの状態を追跡し維持する集中監視機能や性能測定機能は存在しない。ネットワークを単純化するため、知的な部分は意図的に各データ転送の端点であるノードに担わせ、これをエンドツーエンド原理と呼ぶ。転送経路の途中に位置するルーターは、宛先アドレスのルーティングプレフィックスにマッチする最も近いゲートウェイにパケットを転送するだけである。 このような設計の結果、IPはベストエフォート式配送のみを提供し、「信頼できない」と見なされている[誰によって?]。ネットワークアーキテクチャとしては「コネクションレス」プロトコルであり、コネクション指向の転送モードとは対照的である。信頼性がないため、データが壊れたり 信頼性のないIPv4で唯一確かなのは、IPパケットのヘッダには誤りがないという点である。ルーティングするノードは、パケットのチェックサムを計算する。もしチェックサムが合わない場合、そのノードはそのパケットを捨てる。そのノードは送信元にも宛先にも捨てたことを通知しないが、Internet Control Message Protocol (ICMP) でそのような通知をすることも可能である。一方、IPv6ではルーティングの高速化を優先してチェックサム計算をやめた。 上位層プロトコルは、この信頼性問題への対処を担う。例えば、アプリケーションにデータを渡す前にデータをキャッシュして正しい順序に並べ替えたりする。 信頼性問題に加え、動的性質とインターネットおよびその構成要素の多様性に関連し、データ転送経路のうちどれが適当かは全く保証できない。技術的制約の1つとして、リンクごとにデータパケットのサイズ上限が異なる。アプリケーションは適切な伝送特性を使うことを保証しなければならない。
仕組み
転送モデル
転送手順
同じセグメント内の通信
異なるセグメント同士の相互通信
機能
データグラムの構成UDP からリンク層プロトコルのフレームまで、アプリケーションのデータをカプセル化する例
IPアドレッシングとルーティング詳細は「IPアドレス」を参照
提供しない機能
データ信頼性(data reliability)/ 再送(retransmission)
流量制御(flow control)
順序制御(sequencing)
信頼性
Size:65 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef