IPv6アドレス(アイピーブイシックスアドレス、)とは、IPv6コンピュータネットワークにおいてコンピュータ等のノードのネットワークインタフェースを判別するための番号(IPアドレス)である。

IPアドレスは、ホストの個々のネットワークインタフェースを特定し、ホスト間でIPパケットのルーティングを行うために使用される。IPアドレスはパケットのヘッダに記載され、そのパケットの送信元と送信先を示している。

IPv6は、インターネットにおいて最初に使用されたIPv4を継承している。IPv4が32ビットのIPアドレスを使用するのに対し、IPv6は128ビットのIPアドレスを使用する。このため、IPv6はIPv4と比べて非常に大きなIPアドレス空間を持っている。

IPv6アドレスの種類 IPv6アドレスは、以下の3種類に分類される, IP Version 6 Addressing Architecture, R. Hinden, S. Deering (2006年2月)。 ユニキャストアドレス - 単一のインタフェースのための識別子。インターネットプロトコルは、ユニキャストアドレスに送られたパケットを、そのアドレスによって識別されるインタフェースに配送する。 エニーキャストアドレス - インタフェース集合(通常は異なるノードに属する)のための識別子。エニーキャストアドレスに送られたパケットは、そのアドレスで識別されるインタフェースの内で、ルーティングプロトコルの距離の定義に従って「最も近く」(nearest)にあるただ1つのインタフェースに配送される。エニーキャストアドレスはユニキャストアドレスと同じフォーマットのため、表記上は区別がつかない。ただ、同じアドレスが複数のインタフェースに設定されるかどうかの違いしかない。 マルチキャストアドレス - エニーキャストと同様にインタフェース集合のための識別子であるが、マルチキャストアドレスに送られたパケットは、そのアドレスを持つすべてのインタフェースに配送される。

IPv6にはブロードキャストアドレスは存在せず、その機能はマルチキャストアドレスが果たす。

アドレス形式 IPv6アドレスは128ビットのアドレス幅を持っている。アドレスは、アドレス指定とルーティングの方法により、ユニキャストアドレス、マルチキャストアドレス、エニーキャストアドレスに分類される。これらのそれぞれに、論理的に128のアドレス・ビットをビット・グループに分け、これらのビット・グループの値を特別なアドレス指定機能と結びつけることによって、様々なアドレス・フォーマットが存在する

ユニキャストアドレス・エニーキャストアドレスのフォーマット

ユニキャストアドレスとエニーキャストアドレスは、通常2つの部分に分けられる。前半の64ビット(サブネットプリフィックス)はルーティングに使用され、後半の64ビット(インタフェース識別子)はサブネット内での個別のインタフェースを指し示す。 {| class="wikitable" style="width: 750px" |+ 一般的なユニキャストアドレスのフォーマット(ルーティングプリフィックスのサイズは可変) |- ! style="width:0;"|bits |style="text-align: center; width: 37.5%;"| 48(以上) |style="text-align: center; width: 12.5%;"| 16(以下) |style="text-align: center; width: 50%;"| 64 |- ! style="width:0;"|field |style="text-align: center;"| ルーティングプリフィックス |style="text-align: center;"| サブネットID |style="text-align: center;"| インタフェース識別子 |} ネットワークプリフィックス(「ルーティングプリフィックス」と「サブネットID」)は、アドレスの中の上位64ビットである。ルーティングプリフィックスのサイズは可変である。プリフィックスのサイズが大きくなると、その分だけサブネットIDのサイズが小さくなる。サブネットIDのビットのフィールドは、ネットワーク管理者が与えられたネットワーク内でサブネットを定義するのに使用することができる。64ビットの「インタフェース識別子」は、ランダムに決定されるか、DHCPv6サーバから取得するか、インタフェースのMACアドレスからmodified EUI-64を使用して自動的に決定されるか、手動で設定するかのいずれかで決められる。

リンクローカルアドレスもまたインタフェース識別子に基づいているが、ネットワークプリフィックスとは異なるフォーマットになっている。 {| class="wikitable" style="width: 750px" |+ リンクローカルアドレスのフォーマット |- ! style="width:0;"|bits |style="text-align: center; width: 7.8%;"| 10 |style="text-align: center; width: 42.2%;"| 54 |style="text-align: center; width: 50%;"| 64 |- ! style="width:0;"|field |style="text-align: center;"| prefix |style="text-align: center;"| 0 |style="text-align: center;"| インタフェース識別子 |} prefix(プリフィックス)フィールドは二進数の値 1111111010 であり、54個のゼロがその後に続く。全てのリンクローカルアドレスのネットワークプリフィックスは同じ(fe80::/64 : リンクローカルアドレスプリフィックス)になり、それがルーティング不可であることを示す。

マルチキャストアドレスのフォーマット

マルチキャストアドレスは、いくつかの特別なルールに従ってフォーマットされている。 {| class="wikitable" style="width: 750px" |+ 一般的なマルチキャストアドレスのフォーマット |- ! style="width:0;"|bits |style="text-align: center; width: 6.2%;"| 8 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 87.5%;"| 112 |- ! style="width:0;"|field |style="text-align: center;"| prefix |style="text-align: center;"| flg |style="text-align: center;"| sc |style="text-align: center;"| group ID |} 全てのマルチキャストアドレスで、prefix(プリフィックス)は二進数の値 11111111 である。

flg(フラグ)フィールドの4つのビットのうち3つは値の意味が定義されているが、最上位ビットは将来のために予約されている。

{| class="wikitable" |+マルチキャストアドレスフラグ |- !ビット !フラグ !0のとき !1のとき |- |8 |予約 |予約 |予約 |- |9 |R (Rendezvous), Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address P. Savola, B. Haberman (November 2004) |ランデブーポイントがない |ランデブーポイントがある |- |10 |P (Prefix), Unicast-Prefix-based IPv6 Multicast Addresses, B. Haberman, D. Thaler (August 2002) |プリフィックス情報がない |アドレスはネットワークプリフィックスに基づく |- |11 |T (Transient) |Well-knownなマルチキャストアドレス |動的割り当てされたマルチキャストアドレス

4ビットのスコープフィールド (sc) は、アドレスが有効でユニークとなる有効範囲を示すのに使われる。

要請ノード(solicited-node)には特別なマルチキャストアドレスが与えられる。 {| class="wikitable" style="width: 750px" |+ のフォーマット |- ! style="width:0;"|bits |style="text-align: center; width: 6.2%;"| 8 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 61.75%;"| 79 |style="text-align: center; width: 7%;"| 9 |style="text-align: center; width: 18.7%;"| 24 |- ! style="width:0;"|field |style="text-align: center;"| prefix |style="text-align: center;"| flg |style="text-align: center;"| sc |style="text-align: center;"| 0 |style="text-align: center;"| 1 |style="text-align: center;"| unicast address |} sc(スコープ)フィールドは二進数値 0010 (リンクローカル)である。要請ノードマルチキャストアドレスは、ユニキャストアドレスやエニーキャストアドレスの最後の24ビットをマルチキャストアドレスの最後の24ビットに写して作られる。 {| class="wikitable" style="width: 750px" |+ ユニキャストプリフィックスに基づくマルチキャストアドレスのフォーマット |- ! style="width:0;"|bits |style="text-align: center; width: 6.2%;"| 8 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 6.2%;"| 8 |style="text-align: center; width: 50%;"| 64 |style="text-align: center; width: 25%;"| 32 |- ! style="width:0;"|field |style="text-align: center;"| prefix |style="text-align: center;"| flg |style="text-align: center;"| sc |style="text-align: center;"| res |style="text-align: center;"| riid |style="text-align: center;"| plen |style="text-align: center;"| network prefix |style="text-align: center;"| group ID |} リンク範囲(link-scoped)マルチキャストアドレスは、互換性のあるフォーマットを使用する, A Method for Generating Link-Scoped IPv6 Multicast Addresses, J-S. Park, M-K. Shin; H-J. Kim (April 2006)。

表記法 IPv6アドレスは、128ビットを16ビットずつの8つのグループに区切ってそれぞれのグループを4桁の十六進数で表記し、グループとグループの間をコロンで仕切る。例えば以下のように表現される。 2001:0db8:85a3:0000:0000:8a2e:0370:7334 十六進数は大文字・小文字を区別しないが、IETFでは小文字を使用するよう推奨している。この表記は、以下に示す方法で短く表現することができる。

0の連続 各区切りの先頭の連続する0は省略できる。このルールを適用すると、上記に例示したアドレスは以下のように表記できる。 2001:db8:85a3:0:0:8a2e:370:7334

0だけのグループ 1つ以上の0だけのグループは、"::"で表すことができる。このルールを適用すると、上記に例示したアドレスは以下のように表記できる。 2001:db8:85a3::8a2e:370:7334 localhost(ループバック)アドレス 0:0:0:0:0:0:0:1 は ::1 と、IPv6未指定アドレス 0:0:0:0:0:0:0:0 は :: と表現できる。1つのアドレス内では :: は1回しか使用できない。これは、:: を2回以上使用すると、それぞれの省略した箇所のビット長がわからなくなるためである。

IPv4アドレスが埋め込まれている場合 IPv4とIPv6が混在している環境で、IPv4をIPv6に変換して使用する場合、下位32ビットにIPv4アドレスを含んだIPv4変換IPv6アドレスやIPv4射影IPv6アドレスを使用する。この場合、IPv4アドレスの部分を、通常IPv4アドレスを表記するときに使用する、十進数と"."による記法で表現することができる。例えば、IPv4射影IPv6アドレスの ::ffff:c000:0280 は ::ffff:192.0.2.128 と表現することができる。

推奨されるテキスト表記 IPv6アドレスを単純化しようとしたとき、標準の規定ではIPアドレスの表現に柔軟性がある。しかし、そのために同一のIPアドレスについて複数の表現が許されることになり、特定のIPアドレスをテキストファイルやトラフィックの中から探したり、2つのアドレスが同一であるかを調べたりするのが困難になる。

IETFは、この問題を軽減するために、IPv6アドレスをテキストで表現する際の規範的なフォーマットの規定を として提案した。この規定は以下の通りである。 それぞれの16ビットフィールドの先頭の0は省略する。例えば、2001:0db8::0001 は 2001:db8::1 とする。ただし、全てが 0 である16ビットフィールドは 0 とする。 0のみのフィールドが連続する場合は"::"で短くする。例えば 2001:db8:0:0:0:0:2:1 は 2001:db8::2:1 とする。0のみのフィールドがひとつだけの場合は"::"を使わない。例えば 2001:db8:0000:1:1:1:1:1 は 2001:db8:0:1:1:1:1:1 とする。 表現は、できる限り短くする。全て0のフィールドの連続で最も長い物を"::"に置き替える。同じ長さの全て0のフィールドの連続が複数ある場合は、最も左の物を"::"にする。例えば、 2001:db8:0:0:1:0:0:1 は 2001:db8:0:0:1::1 ではなく 2001:db8::1:0:0:1 とする。 十六進数の英文字は常に小文字で書く。例えば、2001:DB8::1 ではなく 2001:db8::1 とする。

ネットワーク IPv6ネットワークは、2の累乗個のサイズの一定のIPv6アドレスのグループである「アドレスブロック」を使用する。アドレスの先頭のビットは、与えられたネットワーク内の全てのホストで同一であり、ネットワークアドレスまたはルーティングプリフィックスと呼ばれる。

ネットワークアドレスの範囲はCIDR表記で表される。ネットワーク表現は、ブロックの最初のアドレス(最後のビットが全て0になる)の後にスラッシュ(/)および、プリフィックスのビット長を十進数で書く。例えば、2001:db8:1234::/48 と表現されるネットワークは、2001:db8:1234:0000:0000:0000:0000:0000 に始まり 2001:db8:1234:ffff:ffff:ffff:ffff:ffff で終わる。

インタフェースアドレスのルーティングプリフィックスは、直接にアドレスとCIDR記法で表すことができる。例えば、2001:db8:a::/64 のサブネットに接続されているアドレス 2001:db8:a::123 のインタフェースの設定は、 2001:db8:a::123/64 のように書くことができる。

アドレスブロックのサイズ

スラッシュに続く十進数の数値が表すのは、そのアドレスブロックに含まれるアドレスの数ではなく、ネットワークプリフィックスのビット数である。例えば、48ビットのプリフィックスのアドレスブロックは"/48"と表される。そのようなアドレスブロックは、 2128 − 48 = 280 個のアドレスを含んでいる。ネットワークプレフィックスの値がより少ないほど、ブロックは大きくなる。/21のブロックは/24のブロックの8倍の大きさがある。

ネットワーク資源識別子におけるIPv6アドレスの表現 IPv6アドレスのコロン(:)は、URIやURLのような資源識別子の確立した文法と競合する。コロンは伝統的にホストパスとポート番号の区切りに使用されてきた, Uniform Resource Identifier (URI): Generic Syntax, T. Berners-Lee, , L. Masinter (January 2005)。この競合を軽減するため、資源識別子の中ではIPv6アドレス を角括弧([])で囲む。例えば、以下のようにする。 https://[2001:db8:85a3:8d3:1319:8a2e:370:7348]/ URLがポート番号を含む場合は以下のようにする。 https://[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443/

UNCパス名におけるIPv6アドレスの表現 Microsoft Windowsオペレーティングシステム (OS) では、IPv4アドレスはUniform Naming Convention (UNC) のパス名に含めることができる。しかし、UNCパス名ではコロンは文法的に意味を持っているため、IPv6アドレスはそのままではUNCパス名に使用できない。このため、マイクロソフトはUNCパスに使用できるドメイン名にIPv6アドレスを含められるような変換アルゴリズムを実装している。このために、マイクロソフトはセカンドレベルドメインipv6-literal.netをインターネット上で登録し、保持している。IPv6アドレスは、以下のように、この名前空間のホスト名やサブドメイン名に変換される。 2001:db8:85a3:8d3:1319:8a2e:370:7348 は以下のように変換される。 2001-db8-85a3-8d3-1319-8a2e-370-7348.ipv6-literal.net この表記は、マイクロソフトのソフトウェアによってDNSサーバを介さずに自動的に名前解決される。IPv6アドレスがゾーンインデックスを含む場合、それは文字"s"に続けてアドレス部に追加される。

fe80--1s4.ipv6-literal.net

IPv6アドレススコープ 未指定アドレス(::)以外の全てのIPv6アドレスは「スコープ」(scope)を持っている, IPv6 Scoped Address Architecture, S.Deering, B. Haberman, T. Jinmei, E. Nordmark, B. Zill (March 2005)。スコープは、そのアドレスが有効である範囲を特定するのに使用する。

ユニキャストアドレスでは、リンクローカルアドレスとループバックアドレスはlink-localのスコープを持っている。link-localスコープは、そのアドレスが直接接続(link)されているネットワークでのみ使用されることを意味する。 ユニークローカルアドレスを除くそれ以外のアドレスは、global(またはuniversal)のスコープを持つ。globalスコープは、そのアドレスが世界的にルーティング可能であり、全ての箇所においてglobalスコープのアドレスと、直接接続のネットワークにおいてlink-localスコープのアドレスと接続可能であることを意味する。

ユニークローカルアドレスは世界的にルーティング可能ではなく、そのアドレスはそれが使われているネットワークの範囲内でのみ有効である。ユニークローカルアドレスは、ルーティング・テーブルが特にそれを許可するように構成されたルータやトンネルによってルーティングされる。

エニーキャストアドレスのスコープは、ユニキャストアドレスのスコープと同様に定義される。

マルチキャストのために、マルチキャストアドレスの2つ目のオクテットの最下位から4番目のビット(ff0s::)がアドレスのスコープ(scope)、すなわち、マルチキャスト・アドレスが伝達される範囲を示す。現在定義されているスコープは以下の通りである。 {| class="wikitable" border="1" |+ Scope values |- ! scope="col" | 値 ! scope="col" | スコープ名 ! scope="col" | 備考 |- | || 予約 || |- | || interface-local || interface-localスコープは、ノードの1つのインタフェースのみで有効である。これは、マルチキャストのループバック転送にのみ使用される。 |- | || link-local || link-localとsite-localのマルチキャストスコープは、ユニキャストスコープが一致する同一トポロジの範囲にのみ転送される。 |- | || admin-local || admin-localスコープは、管理者が設定した範囲のみに有効である。よって、物理的に接続しただけでマルチキャスト関連の設定をしていない状態では自動的には配信されない。 |- | || site-local || link-localの備考を参照。 |- | || organization-local || organization-localスコープは、単一の組織に属している複数のサイトに配信される。 |- | || global || |- | || 予約 ||

IPv6アドレス空間

一般的な割り当て IPv6アドレスの割り当てプロセスの管理は、インターネットアーキテクチャ委員会とInternet Engineering Steering GroupからInternet Assigned Numbers Authority (IANA)に委任されている, IPv6 Address Allocation Management, Internet Architecture Board (December 1995)。主な機能は、大きなアドレスブロックを地域インターネットレジストリ(RIR)に割り当てることである。RIRは、世界の地域ごとに、ネットワーク・サービス・プロバイダや他のローカルインターネットレジストリへのアドレスの割り当てを委任されている。IANAは、IPv6アドレス空間の公式の割り当てリストの管理を1995年12月から行っているIPv6 address space at IANA. Iana.org (2010-10-29). Retrieved on 2011-09-28.。

効果的な経路集約(route aggregation)を提供し、それによってインターネット・ルーティング・テーブルのサイズを減らすために、全体のアドレス空間の8分の1(2000::/3)だけがインターネットで使用するために割り当てられている。IPv6アドレス空間の残りは、将来の利用と特別な目的のために予約されている。アドレス空間は/23から/12という大きなブロック単位でRIRに割り当てられているhttps://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml IPv6 Global Unicast Address Assignments], IANA。

RIRはローカルインターネットレジストリ(LIR)に小さなブロックを割り当てる。そのサイズは一般的に/19から/32の範囲であるDE-TELEKOM-20050113. Db.ripe.net. Retrieved on 2011-09-28.。アドレスは一般的に/48から/56の単位でエンドユーザに分配される, IPv6 Address Assignment to End Sites, T. Narten, G. Houston, L. Roberts, IETF Trust,(March 2011).。

グローバルユニキャストの割り当ての記録は、それぞれのRIRのサイトなどで閲覧できるfor example. Iana.org. Retrieved on 2011-09-28.。

IPv6アドレスは、IPv4アドレスと比較して大きなブロックで各組織に割り当てられる。推奨された割り当ての大きさである/48は280個のアドレスを含んでおり、これはIPv4アドレスの全アドレス空間(32ビット)の248倍(約倍)である。IPv6アドレスの全アドレス空間は2128個(340,282,366,920,938,463,463,374,607,431,768,211,456個、約個、340澗個、340兆の1兆倍の1兆倍)もあるため、予見できる将来に対して十分である。

それぞれのRIRは1つの/23ブロックを512個の/32のブロックに分割することができ、一般的には1つのISPに対して1つの/32ブロックを割り当てる。ISPは割り当てられた/32ブロックを個の/48ブロックに分割することができ、一般的には1人の顧客に対して1つの/48ブロックを割り当てる。顧客は割り当てられた/48ブロックから個の/64のネットワークを作ることができる。/64のネットワークには264個(18,446,744,073,709,551,616個、約個、1845京個)のアドレスが収容できる。これでもIPv4の全アドレス空間(232個、4,294,967,296個、約個)の232倍の個数である。

計画的に、アドレス空間の非常に少ない部分だけが、実際には使われる。大きなアドレス空間はアドレスがたいてい利用できることを確実にする。そして、それはアドレス維持のためにネットワークアドレス変換(NAT)を使用することを完全に不必要にする。NATはIPv4ネットワークにおいてIPアドレス枯渇問題を軽減するために今後も使われる。

予約されたエニーキャストアドレス