OSDN Git Service

(split) LDP: draft snapshot generated from latest ja.po files.
[linuxjm/LDP_man-pages.git] / draft / man7 / ipv6.7
1 .\" This man page is Copyright (C) 2000 Andi Kleen <ak@muc.de>.
2 .\" Permission is granted to distribute possibly modified copies
3 .\" of this page provided the header is included verbatim,
4 .\" and in case of nontrivial modification author and date
5 .\" of the modification is added to the header.
6 .\" $Id: ipv6.7,v 1.3 2000/12/20 18:10:31 ak Exp $
7 .\"*******************************************************************
8 .\"
9 .\" This file was generated with po4a. Translate the source file.
10 .\"
11 .\"*******************************************************************
12 .TH IPV6 7 2011\-09\-08 Linux "Linux Programmer's Manual"
13 .SH 名前
14 ipv6, AF_INET6 \- Linux の IPv6 プロトコル実装
15 .SH 書式
16 \fB#include <sys/socket.h>\fP
17 .br
18 \fB#include <netinet/in.h>\fP
19 .sp
20 \fItcp6_socket\fP\fB = socket(AF_INET6, SOCK_STREAM, 0);\fP
21 .br
22 \fIraw6_socket\fP\fB = socket(AF_INET6, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP
23 .br
24 \fIudp6_socket\fP\fB = socket(AF_INET6, SOCK_DGRAM, \fP\fIprotocol\fP\fB);\fP
25 .SH 説明
26 Linux 2.2 では、Internet Protocol, version 6 を オプションとして実装している。 この man
27 ページでは、Linux カーネルと glibc 2.1 での実装に基づいて、 IPv6 の基本的な API を解説する。 インターフェースは BSD
28 ソケットインターフェースをもとにしている。 \fBsocket\fP(7)  を参照。
29 .PP
30 IPv6 API は、 IPv4 API (\fBip\fP(7)  参照) とほぼ互換になることを目指している。 この man
31 ページでは相違点のみを解説する。
32 .PP
33 \fBAF_INET6\fP ソケットを何らかのプロセスにバインドするには、 ローカルアドレスを \fIin6_addr\fP 型の変数
34 \fIin6addr_any\fP からコピーしてくる必要がある。 static な初期値 \fBIN6ADDR_ANY_INIT\fP
35 も用いることができ、これは定数式に展開される。 これらの両者はネットワークバイトオーダーである。
36 .PP
37 IPv6 のループバックアドレス (::1) は global 変数 \fIin6addr_loopback\fP から取得できる。初期化には
38 \fBIN6ADDR_LOOPBACK_INIT\fP を用いるべきである。
39 .PP
40 v4\-mapped\-on\-v6 アドレス型を用いることで、 IPv4 接続も v6 API で扱うことができる。 こうすれば、プログラムは v6 の
41 API をサポートするだけで、 両方のプロトコルをサポートできる。 v4\-mapped\-on\-v6 アドレス型は C ライブラリ内部のアドレスを
42 扱う関数によって透過的に処理される。
43 .PP
44 IPv4 と IPv6 はローカルポート空間を共有する。 IPv4 の接続 (またはパケット) を IPv6 ソケットが取得すると、 発信元アドレスが
45 v6 にマップされ、その接続 (パケット) も v6 にマップされる。
46 .SS アドレスのフォーマット
47 .in +4n
48 .nf
49 struct sockaddr_in6 {
50     sa_family_t     sin6_family;   /* AF_INET6 */
51     in_port_t       sin6_port;     /* port number */
52     uint32_t        sin6_flowinfo; /* IPv6 flow information */
53     struct in6_addr sin6_addr;     /* IPv6 address */
54     uint32_t        sin6_scope_id; /* Scope ID (new in 2.4) */
55 };
56
57 struct in6_addr {
58     unsigned char   s6_addr[16];   /* IPv6 address */
59 };
60 .fi
61 .in
62 .sp
63 \fIsin6_family\fP は常に \fBAF_INET6\fP に設定される。 \fIsin6_port\fP はプロトコルポートである (\fBip\fP(7)
64 の \fIsin_port\fP を参照)。 \fIsin6_flowinfo\fP は IPv6 のフロー指定子 (flow identifier) である。
65 \fIsin6_addr\fP は 128 ビットの IPv6 アドレスである。 \fIsin6_scope_id\fP はアドレスのスコープに依存した ID
66 である (これは Linux 2.4 で導入された)。 Linux の場合は、これはリンクスコープアドレスでしかサポートされない。 この場合
67 \fIsin6_scope_id\fP にはインターフェースのインデックスが含まれることになる (\fBnetdevice\fP(7)  を参照)。
68 .PP
69 IPv6 は何種類かのアドレスタイプをサポートしている。 単一のホストをアドレスするための unicast、 ホストのグループをアドレスするための
70 multicast、 ホストのグループ中で最も近くにいるものをアドレスするための anycast (これは Linux では実装されていない)、
71 IPv4 ホストをアドレスするための IPv4\-on\-IPv6。 他にも予約済みのアドレスタイプがある。
72 .PP
73 IPv6 でのアドレス表記は 4 桁の 16 進数 8 個からなり、 \(aq:\(aq は区切り文字はで、"::" は 0 ビットの文字列を表す。
74 特殊なアドレスとして、ループバックを表す ::1、 IPv4\-mapped\-on\-IPv6 を表す ::FFFF::<IPv4
75 アドレス> がある。
76 .PP
77 IPv6 のポート空間は IPv4 と共有されている。
78 .SS ソケットオプション
79 IPv6 はプロトコル固有のソケットオプションをいくつかサポートしている。 これらは \fBsetsockopt\fP(2)  で設定でき、
80 \fBgetsockopt\fP(2)  で取得できる。 IPv6 のソケットオプションレベルは \fBIPPROTO_IPV6\fP である。
81 ブール整数のフラグは、0 が偽であり、それ以外は真である。
82 .TP 
83 \fBIPV6_ADDRFORM\fP
84 \fBAF_INET6\fP ソケットを別のアドレスファミリーのソケットに変える。 現在は \fBAF_INET\fP
85 のみが変更先のアドレスファミリーとしてサポートされている。 これが許可されるのは、IPv6 が接続され、 v4\-mapped\-on\-v6
86 アドレスにバインドされた場合に限られる。 引き数は \fBAF_INET\fP が入っている整数へのポインタである。 v4\-mapped ソケットを、IPv6
87 API を扱えないプログラムに対して ファイルディスクリプターとして渡す場合に便利。
88 .TP 
89 \fBIPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP\fP
90 .\" FIXME IPV6_CHECKSUM is not documented, and probably should be
91 .\" FIXME IPV6_JOIN_ANYCAST is not documented, and probably should be
92 .\" FIXME IPV6_LEAVE_ANYCAST is not documented, and probably should be
93 .\" FIXME IPV6_RECVPKTINFO is not documented, and probably should be
94 .\" FIXME IPV6_2292PKTINFO is not documented, and probably should be
95 .\" FIXME there are probably many other IPV6_* socket options that
96 .\" should be documented
97 multicast グループのメンバーを制御する。 引き数は \fIstruct ipv6_mreq\fP 構造体へのポインタ。
98 .TP 
99 \fBIPV6_MTU\fP
100 そのソケットに対して用いる MTU の値を設定する。 MTU の大きさは、 そのデバイスの MTU または (Path MTU Discovery
101 が可能なら) その経路の MTU の大きさ以下でなければならない。 引き数は整数へのポインタ。
102 .TP 
103 \fBIPV6_MTU_DISCOVER\fP
104 そのソケットでの Path MTU Discovery を制御する。 詳細は \fBip\fP(7)  の \fBIP_MTU_DISCOVER\fP を参照。
105 .TP 
106 \fBIPV6_MULTICAST_HOPS\fP
107 そのソケットでの multicast の hop 数の上限値を設定する。 引き数は整数へのポインタである。 \-1
108 を指定すると経路のデフォルトを用いることを意味する。 それ以外の場合は 0 から 255 の範囲を指定する。
109 .TP 
110 \fBIPV6_MULTICAST_IF\fP
111 そのソケットでの、送信 multicast パケットに用いるデバイスを設定する。 これは \fBSOCK_DGRAM\fP および \fBSOCK_RAW\fP
112 各ソケットでのみ許される。 引き数はインターフェースのインデックスの整数値 (\fBnetdevice\fP(7)  を参照) へのポインタである。
113 .TP 
114 \fBIPV6_MULTICAST_LOOP\fP
115 ソケットが、自分自身の送信した multicast パケットを監視するかどうかを制御する。 引き数はブール値へのポインタ。
116 .TP 
117 \fBIPV6_PKTINFO\fP
118 データグラムの到着時における \fBIPV6_PKTINFO\fP 制御メッセージを配送するかどうかを設定する。 \fBSOCK_DGRAM\fP ソケットまたは
119 \fBSOCK_RAW\fP ソケットに対してのみ許可される。 引き数はブール値の入った整数。
120 .TP 
121 .nh
122 \fBIPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO,
123 IPV6_HOPLIMIT\fP
124 .hy
125 受信パケットのデータグラムに拡張ヘッダが含まれている場合の、 制御メッセージの配送を設定する。 \fBIPV6_RTHDR\fP: routing
126 ヘッダを配送するかどうか。 \fBIPV6_AUTHHDR\fP: authentication ヘッダを配送するかどうか。 \fBIPV6_DSTOPTS\fP:
127 destination オプションを配送するかどうか。 \fBIPV6_HOPOPTS\fP: hop オプションを配送するかどうか。
128 \fBIPV6_FLOWINFO\fP: flow ID を含む整数を配送するかどうか。 \fBIPV6_HOPLIMIT\fP: パケットの hop
129 カウントを含む整数を配送するかどうか。 制御メッセージはソケットオプションのものと同じタイプを持つ。 これらのすべてのヘッダオプションは、
130 適切な制御メッセージを \fBsendmsg\fP(2)  の制御バッファーに書きこめば、 送信パケットにでも設定できる。 \fBSOCK_DGRAM\fP
131 ソケットまたは \fBSOCK_RAW\fP ソケットでのみ許される。引き数はブール値へのポインタ。
132 .TP 
133 \fBIPV6_RECVERR\fP
134 非同期エラー (asynchronous error) オプションの受信を制御する。 詳細は \fBip\fP(7)  の \fBIP_RECVERR\fP
135 を参照。 引き数はブール値へのポインタ。
136 .TP 
137 \fBIPV6_ROUTER_ALERT\fP
138 このソケットで、router alert hop\-by\-hop オプションの付いた転送パケットを 通すかどうかを制御する。 \fBSOCK_RAW\fP
139 ソケットでのみ許可される。 tap されたパケットはカーネルによっては転送されない。そうしたパケットを 再度送信するのはユーザーの責任である。
140 引き数は整数 (integer) へのポインタ。 正の整数は傍受を行う router alert オプション値を示す。 オプション値がこの整数である
141 router alert オプションの付いたパケットは ソケットに配送される。負の整数を指定すると、このソケットへの router alert
142 オプションの付いたパケットの配送が行われない。
143 .TP 
144 \fBIPV6_UNICAST_HOPS\fP
145 そのソケットでの unicast の hop 数の上限値を設定する。 引き数は整数へのポインタである。 \-1
146 を指定すると経路のデフォルトを用いることを意味する。 それ以外の場合は 0 から 255 の範囲を指定する。
147 .TP 
148 \fBIPV6_V6ONLY\fP (Linux 2.4.21 以降および 2.6 以降)
149 .\" See RFC 3493
150 このフラグを真 (0 以外) に設定すると、そのソケットは IPv6 パケットだけを 送受信するように制限される。 この場合、IPv4
151 アプリケーションと IPv6 アプリケーションが同時に 一つのポートをバインドできる。
152
153 このフラグを偽 (0) に設定すると、そのソケットはパケットの送受信に IPv6 アドレスと IPv4\-mapped IPv6
154 アドレスの両方を使用できる。
155
156 引き数はブール値の入った整数へのポインタである。
157
158 .\" FLOWLABEL_MGR, FLOWINFO_SEND
159 このフラグのデフォルト値はファイル \fI/proc/sys/net/ipv6/bindv6only\fP の内容により定義される。
160 このファイルのデフォルト値は 0 (偽) である。
161 .SH バージョン
162 IPv6 API を libc5 ベースで Linux 向けに実装した、以前の \fIlibinet6\fP についてはここでは記述していない。
163 おそらく細かいところには相違点があるだろう。
164 .PP
165 Linux 2.4 では 64 ビットのホストに対して \fIsockaddr_in6\fP のバイナリ互換性が保たれていない。 \fIin6_addr\fP
166 のアラインメントが変更され、また \fIsin6_scope_id\fP フィールドが新たに追加されたからである。
167 カーネルインターフェースの互換性は保たれているが、 \fIsockaddr_in6\fP や \fIin6_addr\fP
168 を他の構造体に含んでいるようなプログラムでは 保たれないかもしれない。 これは i386 のような 32 ビットのホストでは問題にならない。
169 .PP
170 \fIsin6_flowinfo\fP フィールドは Linux 2.4 で登場した。 これが渡されたアドレス長に含まれていると、
171 カーネルに透過的に渡され、読まれる。 より長いアドレスバッファを渡し、 そして送信アドレスの長さをチェックするようなプログラムは
172 うまく動かないかもしれない。
173 .SH 注意
174 \fIsockaddr_in6\fP 構造体はジェネリックな \fIsockaddr\fP よりも大きい。 すべてのアドレスタイプが \fIstruct
175 sockaddr\fP の中に安全に納められると仮定しているプログラムは、代わりに \fIstruct sockaddr_storage\fP
176 を用いるように変更する必要がある。
177 .SH バグ
178 IPv6 拡張 API は、現在まだ RFC\ 2292 を完全には実装していない。 2.2
179 カーネルは受信オプションをほぼ完全にサポートサポートしているが、 glibc2.1 には IPv6 オプションを生成するマクロが存在していない。
180 .PP
181 EH および AH ヘッダ での IPSec のサポートは存在しない。
182 .PP
183 フローラベル管理はまだ完全でなく、ここにも記述されていない。
184 .PP
185 この man ページはまだ完成していない。
186 .SH 関連項目
187 \fBcmsg\fP(3), \fBip\fP(7)
188 .PP
189 RFC\ 2553: IPv6 BASIC API.  Linux はこの RFC に準拠するようにしている。
190 .PP
191 RFC\ 2460: IPv6 specification.