IP

読み:アイピー
外語:IP: Internet Protocol
品詞:名詞

発信元ホストから数々の中継器(ルータ)を経由して目的のホストへデータを送るための代表的な通信プロトコルインターネットなどで使われる。

OSI参照モデルネットワーク層に属し、低コスト、低信頼性、非接続型を特徴とする。

つまりIPはデータの送信のみが目的で、きちんと異常無く送信できたか等のチェックの機能は持っていない。最低限のチェックサムの機能はあるが、パケットの到達順序などは保証されないため、こういった機能が必要な場合は上位のプロトコルで行なわねばならない。例えばTCP/IPの場合、各種エラーチェックの機能はTCPによって行なわれている。

種類

広義にはIPバージョンを持つプロトコル全てがIPであると考えられるが、一般的にはIPv4またはIPv6のことを言い、より狭義にはIPv4のみをいう。

IPv4

IPv4は、IPバージョンフィールドが4となるプロトコルである。

RFC 791外部リンク(STD 5外部リンク)で規定され標準化されている。

EtherType(Ethernetフレームタイプ番号)は0x0800である。

IPv6

IPv6は、IPバージョンフィールドが6となるプロトコルである。

RFC 2460外部リンクで規定され、Standards Track(標準化過程)となっている。

EtherType(Ethernetフレームタイプ番号)は0x86ddである。

機能

IPのパケット全体は、ヘッダ部とデータ部に分けられる。

データ部が実際に送受信されるデータそのものであり、IPから見て上位層にあるプロトコルとなる。

このデータの素性等については、ヘッダ部に書かれており、これはIPヘッダと呼ばれる。

大まかには、データの長さ、送信元および送信先のIPアドレス、そして上位プロトコルの種類を表わす番号などが含まれている。

IPヘッダ

IPには様々なバージョンがあり、それぞれでヘッダの構造は全く違う。共通なのは、最初の4ビットがIPバージョンフィールドである点のみである。

よく使われるIPのバージョンはIPv4IPv6だが、それぞれ次のように呼ばれる。

IPv4ヘッダは、殆ど使われていないものも含め、対応する基本的な機能の全ての情報を含むため、無駄が多い。アドレスは32ビットである。

IPv6ヘッダは、普段使わないものは全てオプションとして処理するよう改められ、シンプルになった。アドレスは128ビットであり、基本的なヘッダサイズの80%はアドレスである。

IPが対応する上位プロトコル

IPのデータ部に梱包される情報は、OSI参照モデルとしては一つ上位の層となる。

IPはレイヤ3(ネットワーク層)であるため、このデータ部はレイヤ4(トランスポート層)のプロトコルである。

これがどのようなプロトコルであるかは、IPヘッダ内のプロトコル番号フィールドに書かれており、これは8ビットである。最大で256種類まで対応できることになる。

主要なものは次の番号となっている。

日常、最も良く使われるIPの上位層プロトコルは、ICMP=1のほか、TCP=6とUDP=17であろう。

ICMPはIPの機能の一部とみなされている。残る二つはそれぞれ、IPと関連が深いため組み合わせて「TCP/IP」や「UDP/IP」と呼ばれている。

実装への要求

ネットワークプログラミングのバイブルとされる「UNIX Network Programming」においては、全てのIPの実装は、MTUの大きさに関わらず少なくとも576バイトのIPデータグラムをサポートせねばならない、とされている。言い換えればMTUの最小は576バイトである。

このサイズから、例えばIPv4ヘッダ20バイト、UDPヘッダ8バイトを引くと、UDPで安全に送れるデータは最大で548バイト、ということになる。

このサイズをごく僅かと見ることも可能だが、家電や小型電子機器用CPU(RAMは100バイト程度〜2Kiバイト程度)に実装されるようなTCP/IPスタックにとっては、この大きさはかなり大きいとも言える。