こんにちは、小澤です。
今回も、「プロフェッショナルIPv6」に沿って解説していきます。今回は、IPv6アドレスの表記方法と、IPv6アドレスの種類についてです。
なお、「プロフェッショナルIPv6」の電子書籍は無償でダウンロードできます。以下をご覧ください。
https://booth.pm/ja/items/913273
IPv6アドレスの表記方法
教科書では、「2.2 IPv6アドレスのテキスト表記」(38ページ〜43ページ)の箇所です。
これまでに、IPv6アドレスは以下のように構成されていることを説明してきました。
- IPv6アドレスは、128ビットの長さを持ちます。
- この128ビットは、16ビットずつの8つのフィールドに分割されます。
- 各フィールドは「:(コロン)」で区切られます。
- 各フィールドは、IPv4アドレスのようなドット区切り表記ではなく、16進数の値です。例えば、「2001:0db8:85a3:0000:0000:8a2e:0370:7334」のような表記になります。
さて、IPv6アドレスの表記には、「RFC4291」と「RFC5952」という、どちらもIPv6アドレスの表記に関するRFCが存在します。RFCとは、インターネットに関連するプロトコルや手続き、概念などを文書化したもので、インターネットの標準化を担当するIETF(Internet Engineering Task Force)によって管理されています。
「RFC4291」と「RFC5952」は、どちらもIPv6アドレスの表記に関するRFCです。これらのRFCは、表記に関する重要なガイドラインを提供するものですが、それぞれ異なる目的と内容を持っています。
「RFC4291」は、「IP Version 6 Addressing Architecture」というタイトルの文書で、IPv6のアドレスアーキテクチャを定義しています。この文書では、IPv6アドレスの基本的な表記法を定めています。
一方、「RFC5952」は、「A Recommendation for IPv6 Address Text Representation」(IPv6アドレスのテキスト表現の推奨)というタイトルの文書です。この文書では、IPv6アドレスの推奨される表記法が定められています。「RFC4291」では、IPv6アドレスの表記法がさまざまであり、それが運用上の問題を引き起こす可能性があるため、RFC5952が作成されました。RFC5952では、一貫性と予測可能性を確保するための具体的な推奨事項が述べられています。
具体的に見ていきましょう。
RFC4291の表記ルール
- IPv6アドレスは、128ビットを16ビットずつの8つのグループに区切り、それぞれのグループを4桁の16進数で表記します。
- 各フィールドは「:(コロン)」で区切ります。
- 各フィールドの先頭の連続する「0」は省略可能です。
- 「0000」は「0」に省略可能です。
- 連続した「0000」(=「0」)のブロックは1回に限り「::」に省略可能です。
例えば、次のIPv6アドレスがあるとします。
2001:0db8:0000:0000:3456:0000:0000:0000 |
このアドレスは以下のようになります。各ブロックの先頭のゼロを省略し、連続した「0000」(=「0」)のブロックを1回に限り「::」に省略できます。
2001:db8::3456:0:0:0:0 |
また、以下のような表記も可能であり、これらはすべて同じアドレスを表しています。
2001:db8::3456:0000:0000:0000 2001:0db8::3456:0000:0000:0000 2001:0db8:0:0:3456::0:0 2001:db8:0:0:3456:0:0:0 2001:0db8:0:0:3456:0:0:0 |
このような曖昧性を排除し、一貫性と予測可能性を確保するための表記方法を規定しているのが、「RFC5952」です。
RFC5952の表記ルール
- IPv6アドレスは、16ビットずつの8つのフィールドに分割し、それぞれを16進数で表記します。
- 各フィールドは「:(コロン)」で区切ります。
- 各フィールドの先頭の連続する「0」は省略します。
- 「0000」は「0」に省略します。
- 連続した「0000」(=「0」)のブロックは1回に限り「::」に省略します。ただし、「::」は一つのアドレス内で一度しか使うことができません。2度以上省略してしまうと、どのフィールドを省略したのかがわからなくなるからです。
- 「::」はアドレスの先頭または末尾に配置することができます。ただし、アドレス内の中間部分には配置できません。
- アドレスの先頭が「::1」の場合は、ループバックアドレスを表します。
- 大文字小文字を区別せず、すべて小文字で表記することが推奨されています。
このルールを適用すると、次のIPv6アドレスは、
2001:0db8:0000:0000:0000:0000:0000:003f |
ゼロのブロックを省略して、
2001:db8::3f |
同じように、
2001:0db8:0000:0000:3456:0000:0000:0000 |
は、
2001:db8::3456 |
となります。
運用においてはそれぞれの要件などがありますが、一貫性と予測可能性を確保するため、「RFC5952」に従った一貫性のある表記をすることを心がけましょう。
IPv6アドレスの種類
続いて、IPv6アドレスの種類について説明しましょう。教科書では、「2.3.1 IPv6アドレスの種類」(43ページ)、および、「3.1 IPv6アドレスの種類」(67ページ〜68ページ)です。
IPv6アドレスは次のような種類に分類できます。
- 未定義アドレス
未定義アドレスは「0:0:0:0:0:0:0:0」で、つまり、2つのコロン「::」として省略表記できます。このアドレスは、アドレスがまだ割り当てられていないIPv6ホストで使用され、ホストに割り当てられることはありません。つまり、このアドレスはアドレスの不在を示しています。
- ループバックアドレス
IPv6のループバックアドレスは「::1」(0:0:0:0:0:0:0:1)です。ループバックアドレスは、ホストが自分自身にパケットを送るために利用されます。IPv4では「127.0.0.1」などが利用されていましたが、IPv6では最下位ビットが「1」のアドレスがループバックアドレスとなります。
- マルチキャストアドレス
複数のノードに対して同時にデータを送信するためのアドレスです。特定の用途やニーズに合わせて、ユニキャスト通信(1対1通信)やブロードキャスト通信(すべてのノードに対する通信)よりも効率的に配送することができます。
IPv6のマルチキャストアドレスのプレフィックスは「ff00::/8」です。これは、IPv6のマルチキャストアドレスが「ff」で始まることを示しています。プレフィックスの後には16ビットのフラグフィールドが続きます。このフラグフィールドは、特定のマルチキャストグループなどを識別するために使用されます。たとえば、「ff02::/16」のマルチキャストアドレスは、リンクスコープを持つ永続マルチキャストアドレスです。「ff15::/16」のマルチキャストアドレスは、一時的に割り当てられ、あるサイトの中でのみ有効なアドレスです。
マルチキャストアドレスは、IPv6ネットワーク内での効率的な通信の実現に役立ちます。例えば、ルータがルータ広告をマルチキャストで送信してネットワーク内のノードにIPv6設定情報を提供することがあります。また、一部のアプリケーションやプロトコルでは、マルチキャストを使用してデータを配信します。これにより、ネットワークトラフィックが最小限に抑えられ、ネットワークの効率性が向上します。
- リンクローカルユニキャストアドレス
同一リンク上でのみ有効なアドレスで、IPv6のノードは少なくとも1つのリンクローカルユニキャストアドレスを持つことが決められています。リンクローカルユニキャストアドレスは、アドレスの自動割り当てや近隣探索(IPv4でいうところのARP)などに利用されるアドレスです。リンクローカルユニキャストアドレスは、「fe80::/10」というプレフィックスを持つIPv6ユニキャストアドレスです。必ずしもMACアドレスにバインドされている必要はありませんが、通常、ノードのMACアドレスを基に生成されます。
- グローバルユニキャストアドレス
インターネット上で一意に識別されるアドレスのことで、最も一般的なアドレスの種類です。インターネットで一対一の通信を行うことができます。グローバルユニキャストアドレスは、最初の3ビットが「001」から始まるアドレスが用いられ、続く45ビットと合わせて先頭48ビットが「グローバルルーティングプレフィックス」と呼ばれます。この部分はインターネット上で個々の組織のネットワークを識別するために用いられ、アドレス管理団体(RIR/NIR)やインターネットサービスプロバイダ(ISP)から各組織に割り当てられるものです。
この他にも特殊用途のIPv6アドレスがあり、「RFC6890」にまとめられています。この文書は「Special-Purpose IP Address Registries(特別な用途のIPアドレスレジストリ)」というタイトルで、IPv6アドレス空間内の一部を特定の用途に割り当てる方法についての指針を示しています。また、インターネット上のリソース(IPアドレス、ポート番号、プロトコル番号など)の管理と割り当てを担当する組織であるIANA(Internet Assigned Numbers Authority)が、RFC6890に基づいてIPv6アドレスの特別な用途に対する割り当てを調整し、インターネットの適切な運用を確保しています。
IANAで予約されているIPv6アドレスはIANAの公式サイトに公開されています。
https://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xhtml
まとめ
今回は、IPv6アドレスの表記方法と種類について説明しました。IPv6アドレスの表記方法を理解することは、ネットワークの設計と構築において非常に重要です。また、IPv6アドレスの種類を理解することで、IPv6 ネットワークの効率的な運用や、目的に応じた適切なアドレス設計ができます。IPv6アドレスの基本的な知識をしっかりと習得し、ネットワーク管理やトラブルシューティングに活かしましょう。
次回は、IPv6パケットの構成について説明していくことにします。ぜひ引き続きご覧ください。
<お知らせ>
IPv6の学習のチェックにIPv6基礎検定はいかがでしょうか?全国350か所で通年受験が可能です。詳細は以下をご覧ください。
https://network-engineer.jp/ipv6basic