Internet Protocol version 4(インターネットプロトコルバージョン4、IPv4、アイピーブイヨン)は、OSI参照モデルにおいてネットワーク層に位置付けられるプロトコルである。
転送の単位であるパケットの経路選択と、その断片化と再統合を主な機能とする。TCP/IPの基本機能としてインターネットなどで世界中広く用いられている。
目次
1 パケット
2 アドレス
2.1 予約アドレス一覧
3 経路選択
4 断片化と再統合
5 関連
//
IPパケットの先頭には必ずIPヘッダが付加され、それにより経路選択などのIPの機能が実現されている。以下にパケット形式図とそれぞれの領域の役割などを記す。
パケット形式図012345678910111213141516171819202122232425262728293031
バージョンヘッダ長サービス種別全長
識別子フラグ断片位置
生存時間プロトコルチェックサム
送信元アドレス
宛先アドレス
拡張情報
データ
バージョン(Version) IPのバージョンであり、IPv4の場合は4が格納される。
ヘッダ長(Internet Header Length、IHL) IPヘッダの長さで、4オクテット単位で表される。この値によりデータの開始位置を知る事が出来る。
サービス種別01234567
優先度遅延度転送量信頼性予備
サービス種別(Type Of Service、TOS) パケットが転送される際に重視するサービスを指定する。ただし、ルータの実装においてパケット毎にサービスを区別する事は容易では無い。送信元が全てを重視とする設定を行う場合や、ネットワークの運用方針によっては境界に位置するルータが値を書き換える場合もある。優先度はパケットの優先度を8段階で示す。パケットの送信待ち行列を8個用いて実現する実装もある。遅延度はパケットを早く宛先へと到達させる事を求める。転送量はパケットを多く宛先へと到達させる事を求める。信頼性はパケットを失わず宛先へと到達させる事を求める。
全長(Total Length) IPヘッダを含むパケットの全長。
識別子(Identification) パケットの送信元が一意な値を格納する。断片化したパケットの復元に用いられる。
フラグ012
予備禁止継続
フラグ(Various Control Flags) 断片化の制御に用いる。ビット0は使用しない。ビット1は1の場合に断片化の禁止を意味する。ビット2は断片化された各パケットにおいて、0の場合は最終パケットを意味する。
断片位置(Fragment Offset) ルータなどがパケットを断片化した際に、その位置を8オクテット単位で格納する。断片化したパケットの復元に用いられる。
生存時間(Time to Live、TTL) パケットの余命を示す値である。送信元はパケットが経由できるルータ数の上限を設定し、ルータはパケットを転送する毎に値を一つ減らし、値が0になるとパケットは破棄される。パケットがネットワーク上で無限に巡回する問題を防ぐ効果が有る。
プロトコル(Protocol) TCPなどの上位プロトコルを示す値が設定される。パケットの宛先である装置がパケットを受信すると、この値を用いて上位プロトコルを識別し、その実装へペイロードを渡す。
チェックサム(検査合計、Header Checksum) IPヘッダの誤り検査に用いられる。転送毎に生存時間の値が変わるため、ルータはチェックサムも転送毎に再計算する必要がある。
送信元アドレス(Source Address) パケットの送信元アドレスが設定される。
宛先アドレス(Destination Address) パケットの送信先アドレスが設定される。
拡張情報(Options) 可変長の拡張情報が32ビット単位で設定される。
データ パケットが伝達すべきペイロードである。
IPで用いられる32ビットのアドレスはIPアドレスと呼ばれ、IPアドレスはネットワークアドレスとホストアドレスに分けて用いられる。
RFC791において、ネットワークアドレスとホストアドレスの境界は、IPアドレスの先頭のビット列で定められ、境界の位置によりIPアドレスはクラス(class)として分類された。
クラス012345678910111213141516171819202122232425262728293031
a0ネットワークホスト
b10ネットワークホスト
c110ネットワークホスト
111拡張アドレスモード
しかしRFC791の方式は、ホストアドレスの割り当て数が、クラスaでは16777215、クラスbでは65535にものぼる。これ程の膨大な数のホストを収容するネットワークは一般に存在せず、アドレスの利用に無駄を生じた。そこでRFC950においてサブネット(subnet)が定められた。サブネットはホストアドレスの一部をアドレスマスク(address mask)を用いて分割する事により得られ、あるネットワークアドレスを与えられた組織内において、更にネットワークを分割するために用いられる。
012345678910111213141516171819202122232425262728293031
10ネットワークサブネットホスト
アドレスマスク11111111111111111111111100000000
RFC1597においては、ある組織内で私的に用いられる下記のプライベートアドレスが定められた。
10.0.0.0〜10.255.255.255(10.0.0.0/8)
172.16.0.0〜172.31.255.255(172.16.0.0/12)
192.168.0.0〜192.168.255.255(192.168.0.0/16)
上記のアドレス以外はグローバルアドレスとも呼ばれるようになる。
アドレス種別規約
0.0.0.0/8Current network (only valid as source address) ⇒RFC 1700
10.0.0.0/8プライベートアドレス ⇒RFC 1918
14.0.0.0/8Public data network ⇒RFC 1700
39.0.0.0/8予約 ⇒RFC 1797
127.0.0.0/8ローカルホストアドレス ⇒RFC 1700
128.0.0.0/16予約
169.254.0.0/16LINKLOCALアドレス(APIPA用) ⇒RFC 3927
172.16.0.0/12プライベートアドレス ⇒RFC 1918
191.255.0.0/16
192.0.0.0/24
192.0.2.0/24テストネットワーク ⇒RFC 3330
192.88.99.0/24IPv6からIPv4への変換 ⇒RFC 3068
192.168.0.0/16プライベートアドレス ⇒RFC 1918
198.18.0.0/15ネットワーク性能試験 ⇒RFC 2544
223.255.255.0/24予約 ⇒RFC 3330
224.0.0.0/4マルチキャスト(クラスD) ⇒RFC 3171
240.0.0.0/4予約(クラスE) ⇒RFC 1700
255.255.255.255ブロードキャスト
ルーティング(routing)とも呼ばれ、パケットを宛先へと転送する機能である。この機能はルータに集約され、多くのホストはデフォルト経路としてルータのアドレスを記述するスタイルを取ることが多い。