概要
IP(Internet Protocol)とは、インターネットでの通信において、パケット(IPパケット)を宛先のネットワークやホストに届けるためのプロトコルです。OSI参照モデルのネットワーク層(第3僧)に相当します。
IPでは、宛先のホストや送信元の指定にIPアドレスが使用されます。IPアドレスは、同じネットワーク上で重複があってはならず、インターネットで用いられるグローバルIPアドレスについては、管理団体によって管理がされています。
現在普及しているIPv4(IP version 4)は、1981年に発行されたRFC791で規定されました。32ビットのIPアドレスを持ち、最大で約42億台の機器が同じネットワーク上で指定ができます。
一方、次世代のIPv6(IP version 6)では、IPv4のアドレス枯渇問題を解決するため128ビットに拡張がされており、1995年に発行されたRFC1883などで規定されました。
IPv4
IPアドレス
IPv4のIPアドレスは、1バイト毎に区切られた4バイト(32ビット)で表されますが、ネットワーク部とローカル部の2つに分けられます。ネットワーク部は、公的な機関により管理と割り当てが行われ、ローカル部は、ネットワーク部を割当てられた各組織によって管理されます。
ローカル部は、さらにサブネット部とインターフェース部に分かれています。これは、各組織の中で、ネットワークを分けて管理するために使用されます。
IPアドレスのクラス
ネットワーク部のビット数は、クラス(A~D)により異なります。以下は、ネットワーク部のビットを「N」、ローカル部のビットを「L」で表しています。
クラス | 上位16ビット | 下位16ビット | ||
クラスA | 0NNNNNNN 1~127 |
LLLLLLLL 0~255 |
LLLLLLLL 0~255 |
LLLLLLLL 0~255 |
クラスB | 10NNNNNN 128~191 |
NNNNNNNN 0~255 |
LLLLLLLL 0~255 |
LLLLLLLL 0~255 |
クラスC | 110NNNNN 192~223 |
NNNNNNNN 0~255 |
NNNNNNNN 0~255 |
LLLLLLLL 0~255 |
クラスD | 1110NNNN 224~239 |
MMMMMMMM 0~255 |
MMMMMMMM 0~255 |
MMMMMMMM 0~255 |
クラスAは上位1ビットが「0」、クラスBは上位2ビットが「10」、クラスCは上位3ビットが「110」、クラスDは上位4ビットが「1110」で定義されており、それぞれ区別がつくようになっています。尚、クラスDのアドレスはマルチキャスト用のアドレスです。
サブネットマスク
サブネットとは、1つの組織の中で分けられたネットワークのことです。組織のネットワーク管理者が、サブネットを分ける理由は以下になります。
- ローカルなトラフィックを他のネットワークから分離する。
- 地理的に離れたネットワークを分割する。
- あるネットワーク資源へのアクセスを制限する。
サブネットマスクとは、サブネットの範囲を相手に伝えるための方法で、IPアドレスのビットの中でネットワーク部とサブネット部を「1」、インタフェース部を「0」で表します。
例えば、クラスCのIPアドレスで、サブネット部が2ビットの場合、サブネットマスクは「255.255.255.192」と表します。
サブネット マスク |
11111111 255 |
11111111 255 |
11111111 255 |
11000000 192 |
ビット構成 | NNNNNNNN | NNNNNNNN | NNNNNNNN | SSLLLLLL |
この例では、各機器に割り当てられるインタフェース部は6ビット(64通り)ですが、この内オール0はネットワークアドレス、オール1はブロードキャストアドレスに割り当てられており使用できません。そのため、割り当てられるIPアドレスの数は最大で62台($=2^{\mbox{ビット数}}-2$)となります。
IPパケット
IPv4のパケット構成は以下になります。
各フィールドの役割りは以下になります。
名称 | サイズ | 機能 |
バージョン | 4bit | プロトコルのバージョンを表す。IPv4では0x0100。 |
ヘッダ長 | 4bit | IPヘッダ長を4バイトの倍数で表す。最小値は5。 |
サービスタイプ | 8bit | IPパケットの優先度などを表すが、現在はほとんど使用されていない。 |
全長 | 16bit | IPパケット全体の長さをバイト単位で表す。 |
識別番号 | 16bit | フラグメンテーション(分割)されたIPパケットを識別する。 |
フラグ | 3bit | フラグメンテーションで利用される。 |
フラグメント オフセット |
13bit | フラグメント化されたIPパケットの全体の中の位置を8バイトの倍数で表す。 |
生存時間 | 8bit | IPパケットの生存時間を表す。 |
プロトコル | 8bit | 上位層のプロトコル(1:ICMP、6:TCP、17:UDP)を表す。 |
チェックサム | 16bit | ヘッダ部分のチェックサムを表す。 |
送信元IPアドレス | 32bit | 送信元の機器のIPアドレスを表す。 |
宛先IPアドレス | 32bit | 送信先の機器のIPアドレスを表す。 |
オプション | 0~40B | IPヘッダの拡張部。 |
データ部 | - | IPパケットのペイロード。TCPなら最小で20B、UDP/ICMPなら最小で8B。 |
IPv6
IPアドレス
IPv6では、128ビットのIPアドレスを持ち、IPv4のアドレス空間が大幅に拡張されています。128ビットのIPアドレスは、2バイトごとにコロン(:)で区切って表記されます。尚、各区切りの先頭の0や、0ビットが続く場合は省略することができます。
2001:0db8:0000:0000:0000:ffff:0012:3456 (省略形)2001:db8::ffff:12:3456 |
IPv6では、自動的に自身が使うIPアドレスを生成して設定する仕組みがあるため、IPアドレスをユーザが設定する必要はありません。128ビットのうち、上位64ビットはルータから指定され、下位64ビットはコンピュータ自身が生成します。
IPアドレスの種類
IPアドレスは利用目的により、3つの種類に分かれます。
- ユニキャスト・アドレス
1対1の通信で利用される。 - マルチキャスト・アドレス
あるグループに属した複数台のコンピュータに同時にデータを送る場合に指定する。動画の同時配信などでの利用を想定している。 - エニーキャスト・アドレス
サーバの負荷分散などでの利用を想定している。このアドレスを指定すると、複数あるサーバの中から一番近い先を自動的に選択されるようになる。
IPv6ではブロードキャスト・アドレスはなくなり、その代わりにマルチキャスト・アドレスが利用されます。尚、マルチキャスト・アドレスとエニーキャスト・アドレスは、ユニキャスト・アドレスとは別に設定ができます。
ユニキャスト・アドレスはさらに3つの種類に分けられており、サイトローカル・アドレスとリンクローカル・アドレスについては、利用場所を限定して別の場所との重複が許されています。
- グローバル・アドレス
インターネット上で使うアドレスで、世界で一意である必要がある。 - サイトローカル・アドレス
ある組織内に閉じた通信に用いる。IPv4のプライベート・アドレスに相当する。先頭から48ビットは「fec0:0:0」に固定。 - リンクローカル・アドレス
ルータを介さず通信できる範囲(リンク)でコンピュータ同士の通信に利用する。ルータからの情報取得の際に利用されている。先頭から64ビットは「fe80:0:0:0」に固定。
IPパケット
IPv6のパケット構成は以下になります。
各フィールドの役割りは以下になります。
名称 | サイズ | 機能 |
バージョン | 4bit | プロトコルのバージョンを表す、IPv6では0x0110 |
トラフィッククラス | 8bit | IPパケットの優先度を表す。 |
フローラベル | 20bit | マルチキャスト通信において、通信経路の品質を確保したり、経路を優先的に選択させたりするために使用する。 |
ペイロード長 | 16bit | 拡張ヘッダとデータ部の合計サイズ。IPv6の基本ヘッダ部(40B)は含まない。 |
ネクストヘッド | 8bit | 拡張ヘッダや上位プロトコルのタイプを表す。 |
ホップリミット | 8bit | IPパケットが通過できるルータ数を表す。ルータを1つ通過するたびに1づつ減算される。 |
送信元IPアドレス | 128bit | 送信元の機器のIPアドレスを表す。 |
宛先IPアドレス | 128bit | 送信先の機器のIPアドレスを表す。 |
拡張ヘッダ | 0~ | 複数の拡張ヘッダが格納される。 |