IPv4とIPv6の違い:アドレス長・ヘッダ・フラグメンテーション・アドレスの設定・NATを比較
IPv4とIPv6は、どちらもネットワーク層で、パケットを宛先まで届けるためのプロトコルです。IPv4のアドレスは32ビットで、約43億個しかないため、プライベートアドレスとNATを使って、1つのグローバルアドレスを複数の機器で共有する使い方が広がりました。IPv6はアドレスを128ビットに広げ、ヘッダを40バイトの固定長にして単純にし、途中のルータでのパケットの分割(フラグメンテーション)をなくしました。ただし、2つのあいだに互換性はなく、IPv4だけの機器とIPv6だけの機器は直接は通信できません。そのため、両方を同時に使うデュアルスタック、一方のパケットを他方のパケットに包んで運ぶトンネリング、アドレスを変換するNAT64などを組み合わせて移行を進めます。
| 項目 | IPv4 | IPv6 |
|---|---|---|
| アドレスの長さと数 | 32ビット。2の32乗(約43億)個 | 128ビット。2の128乗(約3.4×10^38)個 |
| 表記 | 8ビットずつ4つに分けた10進数を点で区切る(例: 192.0.2.1) | 16ビットずつ8つに分けた16進数をコロンで区切る。各グループの先頭の0と、0が続く部分の1か所を「::」で省略できる(例: 2001:db8::1) |
| ヘッダ | 20〜60バイトの可変長。オプションと、ヘッダのチェックサムがある | 40バイトの固定長。チェックサムはなく、オプションは拡張ヘッダとして後ろにつなぐ。TTLに当たるのはホップリミット |
| フラグメンテーション | 送信元のほか、途中のルータもパケットを分割できる(DFビットが立っていなければ) | 途中のルータは分割しない。送信元だけが拡張ヘッダを使って分割する。リンクのMTUは最低1280バイト |
| アドレスの自動設定 | DHCPで割り当てる(または手で設定する) | ルータ広告(RA)の情報から端末が自分でアドレスを作るSLAAC、またはDHCPv6。リンクローカルアドレスは常に自動で作る |
| MACアドレスの解決 | ARP。ブロードキャストで問い合わせる | ICMPv6の近隣探索(NDP)。マルチキャストで問い合わせる |
| NAT | アドレスの不足を補うため、プライベートアドレスとNAPTで、1つのグローバルアドレスを共有するのが一般的 | アドレスが十分にあるので、各機器にグローバルアドレスを割り当て、端から端まで同じアドレスで通信する設計。NATは一般に使わない |
| 宛先の種類 | ユニキャスト、ブロードキャスト、マルチキャスト | ユニキャスト、マルチキャスト、エニーキャスト。ブロードキャストはなく、マルチキャストで代わりをする |
| IPsec | オプション。必要なときに追加して使う | 初期の要件では実装が必須とされたが、現在の要件(RFC 8504)では推奨。実際に使うかどうかは、どちらも設定しだい |
数値は代表的な目安で、世代や製品によって異なります。