Remove ads
ウィキペディアから
Internet Protocol version 4(インターネットプロトコルバージョン4)、IPv4(アイピーブイ4)は、Internet Protocolの一種で、OSI参照モデルにおいてネットワーク層に位置付けられる通信プロトコルである。
主に、転送の単位であるパケットの経路選択と、その断片化と再構築が規定されている。TCP/IPの基本機能として、インターネットをはじめ、世界中広く用いられている。
IPパケットの先頭には必ずIPヘッダが付加され、それにより経路選択などのIPの機能が実現されている。IPヘッダは12のフィールドと拡張情報(オプション)から成り立っている。拡張情報を含まないIPヘッダ長は20オクテットである。
以下にパケット形式図とそれぞれの領域の役割などを記す。
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
バージョン | ヘッダ長 | サービス種別 | 全長 | ||||||||||||||||||||||||||||
識別子 | フラグ | 断片位置 | |||||||||||||||||||||||||||||
生存時間 | プロトコル | チェックサム | |||||||||||||||||||||||||||||
送信元アドレス | |||||||||||||||||||||||||||||||
宛先アドレス | |||||||||||||||||||||||||||||||
拡張情報 | |||||||||||||||||||||||||||||||
データ |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
優先度 | 遅延度 | 転送量 | 信頼性 | 予備 |
0 | 1 | 2 |
---|---|---|
予備 | 禁止 | 継続 |
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においては、ある組織内で私的に用いられる下記のプライベートアドレスが定められた。
上記のアドレス以外はグローバルアドレスとも呼ばれるようになる。
Internet Engineering Task Force (IETF)とInternet Assigned Numbers Authority (IANA)は、特別な用途に用いられるIPアドレスを予約し、一般の使用を制限している。
アドレスブロック | アドレス範囲 | アドレスの数 | スコープ | 説明 |
---|---|---|---|---|
0.0.0.0/8 | 0.0.0.0–0.255.255.255 | 16777216 | ソフトウェア | 現在のネットワーク[1](送信元アドレスとしてのみ有効) |
10.0.0.0/8 | 10.0.0.0–10.255.255.255 | 16777216 | プライベートネットワーク | プライベートネットワーク内での通信に使用[2] |
100.64.0.0/10 | 100.64.0.0–100.127.255.255 | 4194304 | プライベートネットワーク | シェアードアドレス空間[3]。キャリアグレードNATを使用する際に、サービスプロバイダとその加入者間で通信を行うために使用する。 |
127.0.0.0/8 | 127.0.0.0–127.255.255.255 | 16777216 | ホスト | localhostへのループバックアドレスとして使用[1] |
169.254.0.0/16 | 169.254.0.0–169.254.255.255 | 65536 | サブネット | リンクローカルアドレスとして使用[4]。IPアドレスが指定されていない場合に、1つのリンク上の2つのホスト間の通信に使用される。 |
172.16.0.0/12 | 172.16.0.0–172.31.255.255 | 1048576 | プライベートネットワーク | プライベートネットワーク内での通信に使用[2] |
192.0.0.0/24 | 192.0.0.0–192.0.0.255 | 256 | プライベートネットワーク | IETF Protocol Assignments.[1] |
192.0.2.0/24 | 192.0.2.0–192.0.2.255 | 256 | ドキュメント | ドキュメントにおける例示用(TEST-NET-1)[5] |
192.88.99.0/24 | 192.88.99.0–192.88.99.255 | 256 | インターネット | 予約[6]。以前はIPv6からIPv4への中継(6to4)に使用されていた[7](IPv6アドレスブロック2002::/16を含む)。 |
192.168.0.0/16 | 192.168.0.0–192.168.255.255 | 65536 | プライベートネットワーク | プライベートネットワーク内での通信に使用[2] |
198.18.0.0/15 | 198.18.0.0–198.19.255.255 | 131072 | プライベートネットワーク | 2つの異なるサブネット間のネットワーク間通信のベンチマークテストに使用[8]。 |
198.51.100.0/24 | 198.51.100.0–198.51.100.255 | 256 | ドキュメント | ドキュメントにおける例示用(TEST-NET-2)[5] |
203.0.113.0/24 | 203.0.113.0–203.0.113.255 | 256 | ドキュメント | ドキュメントにおける例示用(TEST-NET-3)[5] |
224.0.0.0/4 | 224.0.0.0–239.255.255.255 | 268435456 | インターネット | IPマルチキャストに使用[9](かつてのクラスD)。 |
240.0.0.0/4 | 240.0.0.0–255.255.255.254 | 268435455 | インターネット | 将来の使用のために予約[10](かつてのクラスE)。 |
255.255.255.255/32 | 255.255.255.255 | 1 | サブネット | リミテッド・ブロードキャストの宛先アドレスとして予約[1][11] |
ルーティング(routing)とも呼ばれ、パケットを宛先へと転送する機能である。この機能はルータに集約され、多くのホストはデフォルト経路としてルータのアドレスを記述するスタイルを取ることが多い。
ネットワーク構成図 | |||||||||||||||||||||||||||
192.168.1.2
ether0
192.168.1.1
127.0.0.1
loopback ether1
10.1.1.1
10.1.1.2
10.1.1.3
172.16/16
| |||||||||||||||||||||||||||
|
ルータは経路表(ルーティングテーブル、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はデフォルトゲートウェイやデフォルトルートなどと呼ばれ、通常は端末から見てより中心に位置するルータが設定される。
経路表の構築はルータの管理者が手動で設定する場合と、RIP、OSPFなどのルーティングプロトコルを用いて自動で設定する場合がある。前者は静的経路、後者は動的経路などとも呼ばれる。経路表はパソコンなどにも存在し、Windowsであれば「route print」、UNIX系であれば「netstat -r」または「ip route」で見ることができる。
プロトコルが転送する単位の最大長を、MTU(最大転送単位、Max Transfer Unit)と呼ぶ。IPパケットの最大長は65535オクテットであるが、IPパケットを伝送すべきデータリンク層のMTUは、IPの最大長と比べると短い場合が多く、例えば通常のイーサネットのMTUは1500オクテットである。
断片化(英語:Fragmentation、フラグメント化、フラグメンテーションとも呼ばれる[13][14])は、IPパケットがパケットを送出する伝送路のMTUよりも長い場合に発生する。断片化を行う装置はIPパケットを伝送路のMTUに収まる長さに分割し、分割されたパケットのIPヘッダは、全長が分割された長さになり、断片位置には分割された位置が記され、最後のパケット以外は継続フラグが設定される。識別子は分割された全てのパケットに分割前のパケットのそれが写される。
断片化したパケットの再構築(英語:Reassembly、再構成とも呼ばれる[15])は、パケットの宛先である装置が行う。ある識別子を持つパケットの断片を受信した宛先は、さらに同じ識別子を持つパケットの断片を受信し、それぞれの断片位置から断片化前のパケットを再構築する。
IPヘッダのフラグの禁止ビットを設定すれば、パケットの断片化を禁止できる。この場合は断片化の代わりにICMPの宛先到達不可通知がパケットの送信元に返される。送信元はこれを利用して宛先に至る経路の最小MTUを調査することができ、そのような動作は経路MTU探索と呼ばれる。
断片化は帯域やルータの負荷に無駄(オーバーヘッド)を生じ、スループットの低下となるため好まれない。経路MTU探索を行いMTUを調整するとよい。なお、IPv6では経路上のルータで断片化・再構築を行うことはなく、送信ホストのみで行われる。
IPv4のグローバルアドレスが枯渇してしまい、新規にIPv4のグローバルアドレスを割り当てることができなくなるため、インターネット上に公開されたIP機器を増設することが不可能になる問題である。既にIANA(Internet Assigned Numbers Authority)の管理するIPv4アドレスは2011年2月3日に枯渇した。また、AFRINICを除くRIR(地域インターネットレジストリ)の管理するアドレスも2020年8月にはすべて枯渇した。
この枯渇問題の対策として、IPv6の普及が進められている。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.