概要
IP(Internet Protocol)とは、インターネットでの通信において、パケット(IPパケット)を宛先のネットワークやホストに届けるためのプロトコルです。OSI参照モデルのネットワーク層(第3僧)に相当します。
IPでは、宛先のホストや送信元の指定にIPアドレスが使用されます。IPアドレスは、同じネットワーク上で重複があってはならず、インターネットで用いられるグローバルIPアドレスについては、管理団体によって管理がされています。
現在普及しているIPv4(IP version 4)は、1981年に発行されたRFC791で規定されました。32ビットのIPアドレスを持ち、最大で約42億台の機器が同じネットワーク上で指定ができます。尚、次世代のIPv6(IP version 6)では128ビットに拡張がされています。
以下は、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。 |

