IPv4(インターネットプロトコルバージョン4)の詳細解説
IPv4は、
インターネットプロトコル(IP)の一種であり、ネットワーク層で動作する
通信プロトコルです。主に
パケットの経路選択、断片化、再構築を規定し、TCP/IPの基本機能として世界中で広く利用されています。
IP
パケットは、先頭にIPヘッダが付加され、経路選択などの機能を実現します。IPヘッダは12個のフィールドと拡張オプションから構成され、基本ヘッダ長は20オクテットです。
各フィールドの役割
- - バージョン (Version): IPのバージョンを示し、IPv4では「4」が格納されます。
- - ヘッダ長 (IHL): IPヘッダの長さを示し、4オクテット単位で表されます。通常は「5」が入ります。
- - サービス種別 (ToS): パケット転送時の優先度を指定します。遅延、転送量、信頼性などを設定できますが、ルータでの実装は複雑です。IPv6では「フローラベル」が代わりに定義されています。
- - 全長 (Total Length): IPヘッダを含むパケット全体の長さをオクテット単位で示し、最大65,535オクテットです。
- - 識別子 (Identification): パケット送信元が設定する一意な値で、断片化されたパケットの復元に利用されます。
- - フラグ (Various Control Flags): 断片化の制御に用いられます。断片化禁止や後続パケットの有無を示します。
- - 断片位置 (Fragment Offset): パケットが断片化された際の位置を8オクテット単位で示し、パケットの復元に利用されます。
- - 生存時間 (TTL): パケットの余命を示し、経由するルータ数をカウントします。値が0になるとパケットは破棄され、無限ループを防ぎます。
- - プロトコル (Protocol): 上位プロトコル(TCP, UDPなど)を示す番号が設定され、受信側でどのプロトコルにデータを渡すか識別します。
- - チェックサム (Header Checksum): IPヘッダの誤り検出に用いられます。ルータでTTLが変更される度に再計算が必要です。IPv6ではこのフィールドは廃止されました。
- - 送信元アドレス (Source Address): パケットの送信元IPアドレスが設定されます。
- - 宛先アドレス (Destination Address): パケットの宛先IPアドレスが設定されます。
- - 拡張情報 (Options): セキュリティ情報、ルーティング情報などを設定できますが、あまり使用されません。
- - データ: パケットが伝達すべきペイロードです。
IPv4では、32ビットの
IPアドレスを使用します。
IPアドレスは、ネットワークアドレスとホストアドレスに分けられ、ネットワークの規模に応じてクラス分けされていました。しかし、クラスフルアドレスは無駄が多いため、サブネットが導入されました。
アドレスの種類
- - プライベートアドレス: 特定の組織内でのみ使用されるアドレスで、以下の範囲が定められています。
- `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)`
- - グローバルアドレス: インターネット全体で使用されるアドレス。
- - 特別用途のアドレス: IETFとIANAによって特別な目的のために予約されており、一般利用は制限されています。
経路選択(ルーティング)
ルーティングは、
パケットを宛先へと転送する機能で、ルータが主な役割を担います。ルータは経路表(ルーティングテーブル)に基づいて経路を選択します。
ルーティングテーブル
ルータは、受信した
パケットの宛先
IPアドレスを基にルーティングテーブルを検索し、最適な転送先を決定します。ルーティングテーブルには、宛先ネットワーク、転送先アドレス、送信インタフェースなどが記録されています。経路表は、手動設定(静的経路)やルーティングプロトコル(動的経路)によって構築されます。
断片化と再構築
最大転送単位(MTU)は、
データリンク層が一度に転送できる最大のデータサイズです。IP
パケットがMTUよりも大きい場合、
パケットは断片化され、複数の小さな
パケットに分割されて送信されます。受信側では、断片化された
パケットが再構築されます。
断片化の仕組み
パケットが断片化されると、IPヘッダの「断片位置」フィールドに、分割された
パケットの位置情報が記録されます。受信側では、これらの情報を基に元の
パケットを再構築します。
断片化の抑制
断片化は、オーバーヘッドやスループットの低下を引き起こすため、できる限り避けるべきです。経路MTU探索を行い、最適なMTUで
通信することが推奨されます。
IPv6では、ルータでの断片化は行われず、送信ホストのみが断片化を行います。
IPv4アドレス枯渇問題
IPv4のグローバルアドレスが枯渇し、新規にアドレスを割り当てることができなくなっています。この問題への対策として、
IPv6への移行が進められています。IANAが管理するIPv4アドレスは2011年に、RIR(地域
インターネットレジストリ)が管理するアドレスも2020年までに枯渇しました。
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
関連情報