IPv4

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

Internet Protocol version 4(インターネットプロトコルバージョン4)、IPv4(アイピーブイ4)は、Internet Protocolの一種で、OSI参照モデルにおいてネットワーク層に位置付けられるプロトコルである。

転送の単位であるパケットの経路選択と、その断片化と再構築を主な機能とする。TCP/IPの基本機能としてインターネットなどで世界中広く用いられている。

パケット

IPパケットの先頭には必ずIPヘッダが付加され、それにより経路選択などのIPの機能が実現されている。以下にパケット形式図とそれぞれの領域の役割などを記す。

パケット形式図
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
バージョン ヘッダ長 サービス種別 全長
識別子 フラグ 断片位置
生存時間 プロトコル チェックサム
送信元アドレス
宛先アドレス
拡張情報
データ

  • バージョンVersion) IPのバージョンであり、IPv4の場合は4が格納される。
  • ヘッダ長Internet Header LengthIHL) IPヘッダの長さで、4オクテット単位で表される。この値によりデータの開始位置を知る事が出来る。通常は「5」が入る。
サービス種別
0 1 2 3 4 5 6 7
優先度 遅延度 転送量 信頼性 予備
  • サービス種別Type Of ServiceTOS、優先順位) パケットが転送される際に重視するサービスを指定する。ただし、ルータの実装においてパケット毎にサービスを区別する事は容易では無い。送信元が全てを重視とする設定を行う場合や、ネットワークの運用方針によっては境界に位置するルータが値を書き換える場合もある。優先度はパケットの優先度を8段階で示す。パケットの送信待ち行列を8個用いて実現する実装もある。遅延度はパケットを早く宛先へと到達させる事を求める。転送量はパケットを多く宛先へと到達させる事を求める。信頼性はパケットを失わず宛先へと到達させる事を求める(このような処理をQoSと呼ぶ)。
  • 全長Total Length) IPヘッダを含むパケットの全長。8ビット単位なので8ビット×nの「n」が入る。
  • 識別子Identification識別番号とも) パケットの送信元が一意な値を格納する。断片化したパケットの復元に用いられる。パケットを転送するルータがデータを分割したときにバラバラになった複数のパケットを同一のものと判断する。
フラグ
0 1 2
予備 禁止 継続
  • フラグVarious Control Flags) 断片化の制御に用いる。ビット0は使用しない。ビット1は1の場合に断片化の禁止を意味する。ビット2は断片化された各パケットにおいて、0の場合は最終パケットを意味する。
  • 断片位置Fragment Offset) ルータなどがパケットを断片化した際に、その位置を8オクテット単位で格納する。断片化したパケットの復元に用いられる。以上の識別子、フラグ、断片位置の情報からフラグメントを行うことができる。
  • 生存時間Time to LiveTTL) パケットの余命を示す値である。送信元はパケットが経由できるルータ数の上限を設定し、ルータはパケットを転送する毎に値を一つ減らし、値が0になるとパケットは破棄される。パケットがネットワーク上で無限に巡回する問題を防ぐ効果が有る。TTLは8ビットのため0~255の値をセットできる。
  • プロトコルProtocol) TCPなどの上位プロトコルを示すプロトコル番号が設定される。パケットの宛先である装置がパケットを受信すると、この値を用いて上位プロトコルを識別し、その実装へペイロードを渡す。主に使われるプロトコルには、ICMPTCPUDPIPv6EIGRPOSPFが挙げられる。
  • チェックサム検査合計Header Checksum) IPヘッダの誤り検査に用いられる。転送毎に生存時間の値が変わるため、ルータはチェックサムも転送毎に再計算する必要がある。データ部分に関してはTCPなどの上位層に任せる。
  • 送信元アドレスSource Address) パケットの送信元アドレスが設定される。
  • 宛先アドレスDestination Address) パケットの送信先アドレスが設定される。
  • 拡張情報Options) 可変長の拡張情報が32ビット単位で設定される。めったに使用されることがないが、セキュリティ、ルーズソースルーティング/ストリクトソースルーティング、レコードルート、インターネットタイムスタンプなどの情報が埋め込まれる。可変長のため0を足すパディングを必要とする。
  • データ パケットが伝達すべきペイロードである。

アドレス

IPで用いられる32ビットのアドレスはIPアドレスと呼ばれ、IPアドレスはネットワークアドレスホストアドレスに分けて用いられる。

RFC 791において、ネットワークアドレスとホストアドレスの境界は、IPアドレスの先頭のビット列で定められ、境界の位置によりIPアドレスはクラスclass)として分類された。

クラス 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
a 0 ネットワーク ホスト
b 1 0 ネットワーク ホスト
c 1 1 0 ネットワーク ホスト
1 1 1 拡張アドレスモード

しかしRFC 791の方式は、ホストアドレスの割り当て数が、クラスaでは16777215、クラスbでは65535にものぼる。これ程の膨大な数のホストを収容するネットワークは一般に存在せず、アドレスの利用に無駄を生じた。そこでRFC 950においてサブネットsubnet)が定められた。サブネットはホストアドレスの一部をアドレスマスクaddress mask)を用いて分割する事により得られ、あるネットワークアドレスを与えられた組織内において、更にネットワークを分割するために用いられる。

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1 0 ネットワーク サブネット ホスト
アドレスマスク 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0

RFC 1597においては、ある組織内で私的に用いられる下記のプライベートアドレスが定められた。

  • 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)

上記のアドレス以外はグローバルアドレスとも呼ばれるようになる。

予約アドレス一覧

[1]

アドレス 種別 規約
0.0.0.0/8 Current network (only valid as source address) RFC 1122
10.0.0.0/8 プライベートアドレス RFC 1918
100.64.0.0/10 ISP Shared Address RFC 6598
127.0.0.0/8 ローカルホストアドレス RFC 1122
169.254.0.0/16 LINKLOCALアドレス(APIPA用) RFC 3927
172.16.0.0/12 プライベートアドレス RFC 1918
192.0.0.0/24 IETF Protocol Assignments RFC 5736
192.0.2.0/24 テストネットワーク RFC 5737
192.88.99.0/24 6to4 IPv6からIPv4への変換方式の一つ RFC 3068
192.168.0.0/16 プライベートアドレス RFC 1918
198.18.0.0/15 ネットワーク性能試験 RFC 2544
198.51.100.0/24 テストネットワーク RFC 5737
203.0.113.0/24 テストネットワーク RFC 5737
224.0.0.0/4 マルチキャスト(クラスD) RFC 3171
240.0.0.0/4 予約(クラスE) RFC 1112
255.255.255.255 ブロードキャスト RFC 919,RFC 922
  • 14.0.0.0/8は、Public data networkのために予約されていたが(RFC 1700)、2008年2月に予約は解除された[2]
  • 24.0.0.0/8は、ケーブルテレビネットワークのために予約されていたが(RFC 3330)、2010年5月現在では予約は解除されている[2]
  • 39.0.0.0/8は、Class A Subnet Experimentとして予約されていたが(RFC 1797)、2010年5月現在では予約は解除されている[2]
  • 128.0.0.0/16は、RFC 3330において予約されていたが、2010年5月現在では予約は解除されている[2]
  • 191.255.0.0/16は、RFC 3330において予約されていたが、2010年5月現在では予約は解除されている[2]
  • 223.255.255.0/24は、RFC 3330において予約されていたが、2010年5月現在では予約は解除されている[2]
  • 2011年2月3日に最後の未割り振りの/8ブロックがRIR(the Regional Internet Registrie 地域インターネットレジストリー)に割り振られ、未割り振りの領域は枯渇した。詳細はIPアドレス枯渇問題の頁を参照。

経路選択

ルーティングrouting)とも呼ばれ、パケットを宛先へと転送する機能である。この機能はルータに集約され、多くのホストはデフォルト経路としてルータのアドレスを記述するスタイルを取ることが多い。

ネットワーク構成図

<div style="position:absolute;top:010px;left:110px;width:080px;height:040px;border:1px solid black;text-align:center;"/>

192.168.1.2
ether0
192.168.1.1

<div style="position:absolute;top:050px;left:150px;width:001px;height:040px;background:black"/>

127.0.0.1
loopback
ether1
10.1.1.1

<div style="position:absolute;top:150px;left:020px;width:080px;height:040px;border:1px solid black;text-align:center;"/> <div style="position:absolute;top:150px;left:200px;width:080px;height:040px;border:1px solid black;text-align:center;"/> <div style="position:absolute;top:130px;left:150px;width:001px;height:040px;background:black"/> <div style="position:absolute;top:170px;left:100px;width:100px;height:001px;font-size:0px;background:black"/>

10.1.1.2
10.1.1.3

<div style="position:absolute;top:110px;left:060px;width:001px;height:040px;background:black"/>

172.16/16
経路表
destination nexthop interface
default 192.168.1.2 ether0
192.168.1.1/32 127.0.0.1 loopback
192.168.1.2/32 192.168.1.2 ether0
10.1.1.1/32 127.0.0.1 loopback
10.1.1.2/32 10.1.1.2 ether1
10.1.1.3/32 10.1.1.3 ether1
172.16/16 10.1.1.2 ether1
10.255.255.255/32 10.1.1.1 ether1

ルータは経路表ルーティングテーブルrouting table)に基づき経路選択を行う。あるネットワークの構成図とその中心に位置するルータの経路表を右に示す。図中において中心のルータは二つの送受信口を持っており、上の口はether0と名付けられアドレスは192.168.1.1が割り振られている。下の口はether1と名付けられアドレスは10.1.1.1が割り振られている。ルータ内部においてloopbackとはルータ自身を示す送受信口であり、127.0.0.1はルータ自身を現すアドレスである。表中においてdestinationは宛先、nexthopは転送先、interfaceは送信口を意味する(アドレスの記法については「IPアドレス」を参照)。

このルータがパケットを受信した際の動作を解説する。192.168.1.1宛のパケットを受信すると、ルータは経路表の宛先を検索し、192.168.1.1/32の行を見つけ、その転送先はルータ自身である事から、自身に宛てられたパケットである事を判別する。192.168.1.2宛のパケットを受信すると、ルータは経路表を検索し、ether0から192.168.1.2に向けてパケットを送出する。10.1.1.2宛のパケットを受信すると、同様にether1から10.1.1.2に向けてパケットを送出する。 172.16.1.1宛のパケットを受信すると、ルータは最長一致する172.16/16の行を見つけ、10.1.1.2が172.16.1.1へと到る経路であると判別し、ether1から10.1.1.2に向けてパケットを送出する。 10.255.255.255宛のパケットを受信する。このアドレスはブロードキャストアドレスと呼ばれ、10/8のネットワークに接続された全ての装置を宛先とするアドレスである。ether1から10/8のネットワークに接続された全ての装置に向けてパケットを送出する。 7.7.7.7宛のパケットを受信する。このアドレスは経路表には存在しないため、defaultの行に最長一致し、ネクストホップである192.168.1.2に向かってパケットを送出する。192.168.1.2はデフォルトゲートウェイやデフォルトルートなどと呼ばれ、通常は端末から見てより中心に位置するルータが設定される。

経路表の構築はルータの管理者が手動で設定する場合と、RIPOSPFなどのルーティングプロトコルを用いて自動で設定する場合がある。前者は静的経路、後者は動的経路などとも呼ばれる。経路表はパソコンなどにも存在し、Windowsであれば「route print」、UNIX系であれば「netstat -r」で見る事が出来る。

断片化と再構築

テンプレート:See also プロトコルが転送する単位の最大長を、MTU最大転送単位Max Transfer Unit)と呼ぶ。IPパケットの最大長は65535オクテットであるが、IPパケットを伝送すべきデータリンク層のMTUは、IPの最大長と較べると短い場合が多く、例えば通常のイーサネットのMTUは1500オクテットである。

断片化(英語:Fragmentationフラグメント化フラグメンテーションとも呼ばれる[3][4])は、IPパケットがパケットを送出する伝送路のMTUよりも長い場合に発生する。断片化を行う装置はIPパケットを伝送路のMTUに収まる長さに分割し、分割されたパケットのIPヘッダは、全長が分割された長さになり、断片位置には分割された位置が記され、最後のパケット以外は継続フラグが設定される。識別子は分割された全てのパケットに分割前のパケットのそれが写される。

断片化したパケットの再構築(英語:Reassembly再構成とも呼ばれる[5])は、パケットの宛先である装置が行う。ある識別子を持つパケットの断片を受信した宛先は、さらに同じ識別子を持つパケットの断片を受信し、それぞれの断片位置から断片化前のパケットを再構築する。

IPヘッダのフラグの禁止ビットを設定すれば、パケットの断片化を禁止できる。この場合は断片化の代わりにICMPの宛先到達不可通知がパケットの送信元に返される。送信元はこれを利用して宛先に至る経路の最小MTUを調査する事も可能である。パケットの長さを1オクテットずつ減らし、宛先到達不可通知が返らなくなる長さを調べれば良い。

断片化は帯域やルータの負荷に無駄(オーバーヘッド)を生じ、スループットの低下となるため好まれない。経路MTU探索を行いMTUを調整するとよい。なお、IPv6では経路上のルータで断片化・再構築を行うことはなく、送信ホストのみで行われる。

IPv4アドレスの枯渇

テンプレート:Main

IPv4のグローバルアドレスが枯渇してしまい、新規にIPv4のグローバルアドレスを割り当てることができなくなるため、インターネット上に公開されたIP機器を増設することが不可能になる問題である。既にIANA(Internet Assigned Numbers Authority)の管理するIPv4アドレスは2011年2月3日に枯渇した。また、各RIR(地域インターネットレジストリ)の管理するアドレスも早いところでは2011年4月下旬までには枯渇すると予想されている[6][7]

テンプレート:Infobox

RFC仕様

  • RFC 791 - Internet Protocol
  • RFC 950 - Internet Standard Subnetting Procedure
  • RFC 1112 - Host Extensions for IP Multicasting
  • RFC 1518 - An Architecture for IP Address Allocation with CIDR
  • RFC 1519 - Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy
  • RFC 1597 - Address Allocation for Private Internets
  • RFC 1817 - CIDR and Classful Routing
  • RFC 2101 - IPv4 Address Behaviour Today

脚注

テンプレート:脚注ヘルプ テンプレート:Reflist

関連項目

  • IANA IPv4 Address Space Registry
  • 2.0 2.1 2.2 2.3 2.4 2.5 RFC 5735
  • テンプレート:Cite web - フラグメント化と呼ばれる例。
  • テンプレート:Cite web - フラグメンテーションと呼ばれる例。
  • テンプレート:Cite web - 再構成と呼ばれる例。
  • IPv4 Address Report
  • IPv4アドレスの在庫枯渇に関して - 社団法人日本ネットワークインフォメーションセンター(JPNIC)