aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man4/netintro.4
blob: ee58cf137add9617e223f367301a02d7c7f9eba0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
.\" Copyright (c) 1983, 1990, 1991, 1993
.\"     The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"     This product includes software developed by the University of
.\"     California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)netintro.4  8.2 (Berkeley) 11/30/93
.\"     %Id: netintro.4,v 1.8 1997/03/19 19:47:38 bde Exp %
.\"
.\" $FreeBSD$
.Dd November 30, 1993
.Dt NETINTRO 4
.Os BSD 4.2
.Sh 名称
.Nm networking
.Nd ネットワーク機構の紹介
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/time.h>
.Fd #include <sys/socket.h>
.Fd #include <net/if.h>
.Fd #include <net/route.h>
.Sh 説明
このセクションでは、本システムで利用可能なネットワーク機構について
の一般的な紹介を行っています。セクション 4 のこの部分のドキュメントは
3 つの領域に分かれます。
.Em プロトコルファミリ
(ドメイン)、
.Em プロトコル、
そして
.Em ネットワークインタフェース
です。
.Pp
ネットワークプロトコルは、すべて特定の
.Em プロトコルファミリ
と関連づけられています。
プロトコルファミリは、プロトコルが特定のネットワーク環境下で
機能できるようにするため、プロトコルの実装に対しての基本的な
サービスを提供します。これらのサービスはパケットの分割および
統合、ルーティング、アドレッシング、そして基本的な転送なども
含まれるでしょう。現在のプロトコルの実装ではサポートされていません
が、プロトコルファミリは、複数のアドレッシング方法を提供
するかもしれません。プロトコルファミリには、通常各
.Xr socket 2
タイプに 1 つずつというように、多数のプロトコルが含まれています。
プロトコルファミリは、すべてのソケットタイプをサポートする必要は
ありません。プロトコルファミリには、同一のソケットアブストラクションをサポート
するために、複数のプロトコルが含まれることがあります。
.Pp
プロトコルは、
.Xr socket 2
で詳しく決められたソケットアブストラクションの 1 つをサポートします。
特定のプロトコルには、適切なプロトコルファミリとタイプのソケットを
作成するか、ソケットを作成する際に明示的にそのプロトコルを要求
することによってアクセスすることができます。プロトコルは、通常
1 種類のアドレスフォーマットのみを受け取ります。通常、そのアドレス
フォーマットは、プロトコルファミリとネットワークアーキテクチャの
デザインに必要なアドレッシング構造体を用いて定義されています。
ある基本的なソケットアブストラクションのセマンティクスは、
プロトコルに特有のものです。
プロトコルはすべてそれぞれに特有のソケットタイプについての基本モデル
をサポートするようになっています。しかし、さらに、そのメカニズムに対して、
標準的ではない機構や拡張機能を提供することもあります。例えば、
.Dv SOCK_STREAM
をサポートするプロトコルが、各帯域外 (out-of-band) メッセージにつき
1 バイト以上の帯域外メッセージを送信することができます。
.Pp
ネットワークインタフェースは、デバイスインタフェースと似ています。
ネットワークインタフェースは、ネットワークサブシステムの最下位層
を構成します。これは、実際の送信用ハードウェアと相互に影響します。
ネットワークインタフェースは、
1 つ以上のプロトコルファミリやアドレスフォーマットをサポート可能です。
各ネットワークインタフェースのエントリの書式 (SYNOPSIS) のセクション
には、
.Xr config 8
プログラムにシステムの詳細を提供する際に使われる、関連ドライバの
仕様の例があります。
診断 (DIAGNOSTICS) のセクションのメッセージ一覧は、
デバイスを操作中に起こるエラーに起因して、コンソールやシステムエラーログ
.Pa /var/log/messages
(
.Xr syslogd 8
を参照) 中に出力されるものです。
.Sh プロトコル
本システムでは、現在、インターネットプロトコル、Xerox Network Systems(tm)
プロトコル、そして
.Tn ISO OSI
プロトコルのいくつかがサポートされています。
ソケットの raw インタフェースがインターネットの
.Tn IP
プロトコル層、
Xerox
.Tn NS
の
.Tn IDP
プロトコルに対して提供されています。
各プロトコルファミリのサポートに関するさらなる情報が必要な場合は、
しかるべきマニュアルページを調べてみてください。
.Sh アドレッシング
各プロトコルファミリと関連付けられているのが、アドレスフォーマットです。
ネットワークアドレスは、すべて以下に示す sockaddr と呼ばれる一般的な
構造体と結びついています。しかし、各プロトコルは、より洗練された特有の
構造体を使うように強制しています。一般的には、変数名を変えるといったこと
です。このことについては、上で述べたプロトコルファミリのマニュアルページで
議論されています。
.Bd -literal -offset indent
    struct sockaddr {
        u_char  sa_len;
        u_char  sa_family;
        char    sa_data[14];
};
.Ed
.Pp
.Ar sa_len
フィールドには、この構造体全体の長さが入ります。この長さは 16 バイトを
超えるかもしれません。
次に示す
.Ar sa_family
用のアドレス値は、システム側で既知なものです
(将来実装されるかもしれないフォーマットも加えて、ここで定義しています)。
.Bd -literal
#define    AF_UNIX      1    /* ローカルホスト (パイプ、ポート) */
#define    AF_INET      2    /* インターネット: UDP, TCP など */
#define    AF_NS        6    /* Xerox NS プロトコル */
#define    AF_CCITT     10   /* CCITT プロトコル、X.25 など */
#define    AF_HYLINK    15   /* NSC ハイパーチャネル */
#define    AF_ISO       18   /* ISO プロトコル */
.Ed
.Sh ルーティング
.Tn UNIX
では、パケットのルーティング機構がいくつか提供されています。
カーネルは、ルーティング情報データベースを管理しています。
このデータベースは、パケットを転送するときに適切なネットワークインタフェース
を選ぶ際に使用されます。
.Pp
ユーザプロセス (あるいは、複数の相互に協調し合ったプロセス) は、
特別な種類のソケットを通してメッセージを送ることで、
このデータベースを管理しています。
この方法が、以前のリリースで使われていた固定長の
.Xr ioctl 2
に取って代わりました。
.Pp
この機構については、
.Xr route 4
に説明があります。
.Sh インタフェース
システム内の各ネットワークインタフェースは、メッセージの送受信に
使われるパスに対応しています。ネットワークインタフェースは、通常、
関連のあるハードウェアデバイスを持っています。しかし、
.Xr lo 4
のようなループバックインタフェースはハードウェアデバイスを持っていません。
.Pp
次の
.Xr ioctl 2
コールは、ネットワークインタフェースを操作するのに使われます。
.Fn ioctl
関数は、所望のドメインのソケット (特に
.Dv SOCK_DGRAM
型) 上で実行します。以前のリリースでサポートされていたリクエストの多くは、
パラメータに
.Ar ifreq
構造体を取っていました。この構造体は、次の形式です
.Bd -literal
struct  ifreq {
#define    IFNAMSIZ    16
    char    ifr_name[IFNAMSIZ];        /* if 名であり、例えば "en0" */
    union {
        struct    sockaddr ifru_addr;
        struct    sockaddr ifru_dstaddr;
        struct    sockaddr ifru_broadaddr;
        short     ifru_flags;
        int       ifru_metric;
        int       ifru_mtu;
        int       ifru_phys;
        caddr_t   ifru_data;
    } ifr_ifru;
#define ifr_addr      ifr_ifru.ifru_addr    /* アドレス */
#define ifr_dstaddr   ifr_ifru.ifru_dstaddr /* p-to-p リンクのもう一方の終端 */
#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* ブロードキャストアドレス*/
#define ifr_flags     ifr_ifru.ifru_flags   /* フラグ */
#define ifr_metric    ifr_ifru.ifru_metric  /* メトリック */
#define ifr_mtu       ifr_ifru.ifru_mtu     /* mtu */
#define ifr_phys      ifr_ifru.ifru_phys    /* 物理的な線 */
#define ifr_data      ifr_ifru.ifru_data    /* インタフェースが使用 */
};
.Ed
.Pp
現在では非推奨のシステムコールは次の通りです。
.Bl -tag -width SIOCGIFBRDADDR
.It Dv SIOCSIFADDR
プロトコルファミリ用のインタフェースアドレスを設定します。
アドレスの割り当てに続いて、
インタフェース用の ``初期化'' ルーチンが呼ばれます。
.It Dv SIOCSIFDSTADDR
プロトコルファミリおよびインタフェース用の、
point to point アドレスを設定します。
.It Dv SIOCSIFBRDADDR
プロトコルファミリおよびインタフェース用の、
ブロードキャストアドレスを設定します。
.El
.Pp
アドレスを取得するための
.Fn ioctl
リクエストと、
アドレス以外のデータを設定したり検索したりするためのリクエストについては、
今でも完全にサポートしており、
.Ar ifreq
構造体を使用しています。
.Bl -tag -width SIOCGIFBRDADDR
.It Dv SIOCGIFADDR
プロトコルファミリ用の、インタフェースアドレスを取得します。
.It Dv SIOCGIFDSTADDR
プロトコルファミリおよびインタフェース用の、
point to point アドレスを取得します。
.It Dv SIOCGIFBRDADDR
プロトコルファミリおよびインタフェース用の、
ブロードキャストアドレスを取得します。
.It Dv SIOCSIFFLAGS
インタフェースフラグのフィールドをセットします。もし、インタフェースが動作
していないという印 (down) がつけられたら、
現在そのインタフェースを通してパケットを
ルーティングしているすべてのプロセスは通知を受けます。
インタフェースによっては、新たに入ってくるパケットをもう受け取らないように
するためにリセットするものがあります。再び動作しているという印 (up)
がつけられたら、
インタフェースは再初期化されます。
.It Dv SIOCGIFFLAGS
インタフェースフラグを取得します。
.It Dv SIOCSIFMETRIC
インタフェースのルーティングメトリックを設定します。
このメトリックは、ユーザレベルのルータのみで使用されます。
.It Dv SIOCGIFMETRIC
インタフェースメトリックを取得します。
.El
.Pp
新しい構造体を使用するリクエストは 2 つあります。
.Bl -tag -width SIOCGIFBRDADDR
.It Dv SIOCAIFADDR
プロトコルによっては、
単一のインタフェースに対して複数のアドレスを関連付けられるものがあります。
このリクエストは、新たなアドレスを追加する
手段を提供します (あるいは、アドレスファミリ用のデフォルトアドレスが
指定されていれば、プライマリアドレスの特徴を変更します)。
終点アドレス、ブロードキャストアドレスあるいはネットワークマスクを
設定するために別々のシステムコールを作るのではなく
(現在では、複数のプロトコルで必要不可欠な特徴です)、
これらの 3 つのものを同時に指定するために別々の構造体を用います
(下記参照)。
各ファミリ専用に、この構造体を少し手直ししたバージョンを使用することも
あるでしょう (各 sockaddr 構造体をファミリ特有のものに置きかえるなど)。
sockaddr 構造体自身がデフォルトの大きさよりも大きい場合には、
.Fn ioctl
のところで述べたように、
.Fn ioctl
識別子自体を全体が入るように変更する必要があります。
.It Dv SIOCDIFADDR
このリクエストは、インタフェースに関連付けられたリストから、
指定したアドレスを削除します。このリクエストは
.Ar if_aliasreq
構造体も使用することにより、
複数のネットワークマスクや終点アドレスを
プロトコルが許可することも可能にします。
また、デフォルトアドレスを指定することは、
このアドレスファミリに属するもののうちで、
このソケットを最初に開いたときの
最初のインタフェースアドレスを削除することを意味するという約束事を、
このリクエストは採用しています。
.It Dv SIOCGIFCONF
インタフェースの設定リストを取得します。このリクエストは
値と結果の両用のパラメータ (value-result parameter) として
.Ar ifconf
構造体を取ります (下記参照)。
.Ar ifc_len
フィールドには、最初に、
.Ar ifc_buf
で指し示されたバッファの大きさをセットしておかなくてはなりません。
戻るときに、このフィールドには設定リストのバイト単位の大きさが
入ります。
.El
.Bd -literal
/*
* SIOCAIFCONF で使用される構造体
*/
struct ifaliasreq {
        char    ifra_name[IFNAMSIZ];   /* if 名であり、例えば "en0" */
        struct  sockaddr        ifra_addr;
        struct  sockaddr        ifra_broadaddr;
        struct  sockaddr        ifra_mask;
};
.Ed
.Pp
.Bd -literal
/*
* SIOCGIFCONF リクエストで使用される構造体。
* マシンのインタフェースの設定を検索するのに使用されます
* (アクセス可能なネットワークをすべて分かっておかなくてはならない
* プログラムに有用です)。
*/
struct ifconf {
    int   ifc_len;              /* 関連バッファの大きさ */
    union {
        caddr_t    ifcu_buf;
        struct     ifreq *ifcu_req;
    } ifc_ifcu;
#define ifc_buf ifc_ifcu.ifcu_buf /* バッファアドレス */
#define ifc_req ifc_ifcu.ifcu_req /* 返される構造体の配列 */
};
.Ed
.Sh 関連項目
.Xr ioctl 2 ,
.Xr socket 2 ,
.Xr intro 4 ,
.Xr config 8 ,
.Xr routed 8
.Sh 歴史
.Nm netintro
マニュアルは、
.Bx 4.3 tahoe
で出現しました。