IPv4 について インターネットプロトコルバージョン 4 1. 概要... 2 2. パケット... 2 3. アドレス... 4 3.1. アドレスのクラス... 4 3.2. 予約アドレス一覧... 5 4. 経路選択... 6 5. 断片化と再統合... 8 6. 関連... 9 7. 参考文献... 9 1
1. 概要 Internet Protocol version 4( インターネットプロトコルバージョン 4 IPv4 アイピーブイヨン ) は OSI 参照モデルにおいてネットワーク層に位置付けられるプロトコルである 転送の単位であるパケットの経路選択と その断片化と再統合を主な機能とする TCP/IP の基 本機能としてインターネットなどで世界中広く用いられている 2. パケット IP パケットの先頭には必ず IP ヘッダが付加され それにより経路選択などの IP の機能が実現 されている 表 2-1 にパケット形式図とそれぞれの領域の役割などを記す 表 2-1 パケット形式図 0 1 2 3 4 5 6 7 8~15 16 17 18 19~31 バージョン ヘッダ長 サービス種別 全長 識別子 フラグ 断片位置 生存時間 プロトコル チェックサム 送信元アドレス宛先アドレス拡張情報データ バージョン (Version) IP のバージョンであり IPv4 の場合は 4 が格納される ヘッダ長 (Internet Header Length IHL) IP ヘッダの長さで 4 オクテット単位で表される この 値によりデータの開始位置を知る事が出来る 表 2-2 サービス種別 0 1 2 3 4 5 6 7 優先度遅延度転送量信頼性予備 2
サービス種別 (Type Of Service TOS) パケットが転送される際に重視するサービスを指定する 表 2-2 にサービス種別を示す ただし ルータの実装においてパケット毎にサービスを区別する事は容易では無い 送信元が全てを重視とする設定を行う場合や ネットワークの運用方針によっては境界に位置するルータが値を書き換える場合もある 優先度はパケットの優先度を 8 段階で示す パケットの送信待ち行列を 8 個用いて実現する実装もある 遅延度はパケットを早く宛先へと到達させる事を求める 転送量はパケットを多く宛先へと到達させる事を求める 信頼性はパケットを失わず宛先へと到達させる事を求める 全長 (Total Length) IP ヘッダを含むパケットの全長 識別子 (Identification) パケットの送信元が一意な値を格納する 断片化したパケットの復元に用いられる パケットの断片化については 5 節で説明する 表 2-3 フラグ 0 1 2 予備禁止継続 フラグ (Various Control Flags) 断片化の制御に用いる 表 2-3 にフラグを示す ビット 0 は使用しない ビット 1 は 1 の場合に断片化の禁止を意味する ビット 2 は断片化された各パケットにおいて 0 の場合は最終パケットを意味する 断片位置 (Fragment Offset) ルータなどがパケットを断片化した際に その位置を 8 オクテット単位で格納する 断片化したパケットの復元に用いられる 生存時間 (Time to Live TTL) パケットの余命を示す値である 送信元はパケットが経由できるルータ数の上限を設定し ルータはパケットを転送する毎に値を一つ減らし 値が 0 になるとパケットは破棄される パケットがネットワーク上で無限に巡回する問題を防ぐ効果が有る プロトコル (Protocol) TCP などの上位プロトコルを示す値が設定される パケットの宛先である装置がパケットを受信すると この値を用いて上位プロトコルを識別し その実装へペイロードを渡す チェックサム ( 検査合計 Header Checksum) IP ヘッダの誤り検査に用いられる 転送毎に生存時間の値が変わるため ルータはチェックサムも転送毎に再計算する必要がある 送信元アドレス (Source Address) パケットの送信元アドレスが設定される アドレスの詳細については 3 節で説明する. 宛先アドレス (Destination Address) パケットの送信先アドレスが設定される 拡張情報 (Options) 可変長の拡張情報が 32 ビット単位で設定される データパケットが伝達すべきペイロードである 3
3. アドレス IP で用いられる 32 ビットのアドレスは IP アドレスと呼ばれ IP アドレスはネットワークアドレスと ホストアドレスに分けて用いられる 3.1. アドレスのクラス RFC791 において ネットワークアドレスとホストアドレスの境界は IP アドレスの先頭のビット列 で定められ 境界の位置により IP アドレスはクラス (class) として分類された 表 3-1 に IP アド レスのクラスを示す 表 3-1 IP アドレスのクラス クラス 0 1 2 3 4 5 6 7 8~15 16~23 24~31 a 0 ネットワーク ホスト b 1 0 ネットワーク ホスト c 1 1 0 ネットワーク ホスト 1 1 1 拡張アドレスモード しかし RFC791 の方式は ホストアドレスの割り当て数が クラス a では 16777215 クラス b では 65535 にものぼる これ程の膨大な数のホストを収容するネットワークは一般に存在せず アドレスの利用に無駄を生じた そこで RFC950 においてサブネット (subnet) が定められた サブネットはホストアドレスの一部をアドレスマスク (address mask) を用いて分割する事により得られ あるネットワークアドレスを与えられた組織内において 更にネットワークを分割するために用いられる 表 3-2 にアドレスマスクを示す 4
表 3-2 アドレスマスク 0 1 2~15 16~23 24~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 マ ス ク 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) 上記のアドレス以外はグローバルアドレスとも呼ばれるようになる 3.2. 予約アドレス一覧 表 3-3 に予約アドレスの一覧を示す 5
表 3-3 予約アドレス一覧 アドレス 種別 規約 0.0.0.0/8 Current network (only valid as source address) RFC 1700 10.0.0.0/8 プライベートアドレス RFC 1918 127.0.0.0/8 ローカルホストアドレス RFC 1700 128.0.0.0/16 予約 169.254.0.0/16 LINKLOCAL アドレス (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/24 IPv6 から 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 ブロードキャスト 14.0.0.0/8 は Public data network のために予約されていたが (RFC 1700) 2008 年 2 月に予約は解除された [1] 39.0.0.0/8 は Class A Subnet Experiment として予約されていたが (RFC 1797) 現在では予約は解除されている [2] 4. 経路選択 ルーティング (routing) とも呼ばれ パケットを宛先へと転送する機能である この機能はルータ に集約され 多くのホストはデフォルト経路としてルータのアドレスを記述するスタイルを取るこ とが多い 図 4-1 のような構成のネットワークにおける経路表を表 4-1 に示す 6
図 4-1 ネットワーク構成 表 4-1 経路表 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 は送信口を意味する アドレスの記法については 3 節を参照せよ このルータがパケットを受信した際の動作を解説する 192.168.1.1 宛のパケットを受信すると ルータは経路表の宛先を検索し 192.168.1.1/32 の行を見つけ その転送先はルータ自身である事から 自身に宛てられたパケットである事を判別する 192.168.1.2 宛のパケットを受信すると ルータは経路表を検索し ether0 から 192.168.1.2 に向けてパケットを送出する 10.1.1.2 宛 7
のパケットを受信すると 同様に 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 はデフォルトゲートウェイやデフォルトルートなどと呼ばれ 通常は端末から見てより中心に位置するルータが設定される 経路表の構築はルータの管理者が手動で設定する場合と RIP OSPF などのルーティングプロトコルを用いて自動で設定する場合がある 前者は静的経路 後者は動的経路などとも呼ばれる 経路表はパソコンなどにも存在し Windows であれば route print UNIX 系であれば netstat -r で見る事が出来る 5. 断片化と再統合 プロトコルが転送する単位の最大長を MTU( 最大転送単位 Max Transfer Unit) と呼ぶ IP パケットの最大長は 65535 オクテットであるが IP パケットを伝送すべきデータリンク層の MTU は IP の最大長と較べると短い場合が多く 例えば通常のイーサネットの MTU は 1500 オクテットである 断片化 (Fragmentation) は IP パケットがパケットを送出する伝送路の MTU よりも長い場合に発生する 断片化を行う装置は IP パケットを伝送路の MTU に収まる長さに分割し 分割されたパケットの IP ヘッダは 全長が分割された長さになり 断片位置には分割された位置が記され 最後のパケット以外は継続フラグが設定される 識別子は分割された全てのパケットに分割前のパケットのそれが写される 断片化したパケットの再統合 (Reassembly) は パケットの宛先である装置が行う ある識別子 を持つパケットの断片を受信した宛先は さらに同じ識別子を持つパケットの断片を受信し そ れぞれの断片位置から断片化前のパケットを再統合する IP ヘッダのフラグの禁止ビットを設定すれば パケットの断片化を禁止できる この場合は断片 化の代わりに ICMP の宛先到達不可通知がパケットの送信元に返される 送信元はこれを利用 8
して宛先に至る経路の最小 MTU を調査する事も可能である パケットの長さを 1 オクテットずつ 減らし 宛先到達不可通知が返らなくなる長さを調べれば良い 断片化は帯域やルータの負荷に無駄 ( オーバーヘッド ) を生じ スループットの低下となるため 好まれない 経路 MTU 探索を行い MTU を調整するとよい なお IPv6 では経路上のルータで 断片化 再構成を行うことはなく 送信ホストのみで行われる 6. 関連 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 - RFC 1817 - CIDR and Classful Routing RFC 2101 - IPv4 Address Behaviour Today 7. 参考文献 [1] http://www.iana.org/assignments/ipv4-address-space/ [2] RFC 3330 9