OSDN Git Service

dc9386f19b6059577f1ee8d4e7bb2419dc20ced6
[linuxjm/LDP_man-pages.git] / release / man7 / udp.7
1 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
2 .\"
3 .\" %%%LICENSE_START(VERBATIM_ONE_PARA)
4 .\" Permission is granted to distribute possibly modified copies
5 .\" of this page provided the header is included verbatim,
6 .\" and in case of nontrivial modification author and date
7 .\" of the modification is added to the header.
8 .\" %%%LICENSE_END
9 .\"
10 .\" $Id: udp.7,v 1.7 2000/01/22 01:55:05 freitag Exp $
11 .\"
12 .\"*******************************************************************
13 .\"
14 .\" This file was generated with po4a. Translate the source file.
15 .\"
16 .\"*******************************************************************
17 .\"
18 .\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
19 .\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
20 .\" Updated 2005-10-09, Kentaro Shirakata <argrath@ub32.org>
21 .\" Updated 2007-01-05, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.43
22 .\" Updated 2008-12-29, Akihiro MOTOKI, LDP v3.14
23 .\" Updated 2010-04-10, Akihiro MOTOKI, LDP v3.24
24 .\"
25 .TH UDP 7 2013\-07\-31 Linux "Linux Programmer's Manual"
26 .SH 名前
27 udp \- IPv4 の ユーザーデータグラムプロトコル
28 .SH 書式
29 \fB#include <sys/socket.h>\fP
30 .br
31 \fB#include <netinet/in.h>\fP
32 .br
33 \fB#include <netinet/udp.h>\fP
34 .sp
35 \fBudp_socket = socket(AF_INET, SOCK_DGRAM, 0);\fP
36 .SH 説明
37 これは RFC\ 768 で記述されている User Datagram Protocol の実装である。 UDP
38 はコネクションレスの、信頼性の低いデータパケットサービスである。 パケットは到着前に並び替えられたり複製されたりする。 UDP
39 は転送エラーを検出するためにチェックサムを生成・チェックする。
40
41 UDP ソケットが生成されるとき、 ローカルアドレスやリモートアドレスは指定されない。 正しい行き先アドレスを引数として \fBsendto\fP(2)  や
42 \fBsendmsg\fP(2)  を呼べば、データグラムはただちに送信される。 ソケットに対して \fBconnect\fP(2)
43 を呼ぶと、デフォルトの行き先アドレスが設定され、 \fBsend\fP(2)  や \fBwrite\fP(2)
44 を使って、行き先アドレスの指定なしにデータグラムを送信できるようになる。 この場合でも、行き先アドレスを \fBsendto\fP(2)  や
45 \fBsendmsg\fP(2)  に渡せば、デフォルト以外のアドレスに送信可能である。 パケットを受信するために、まずソケットを \fBbind\fP(2)
46 を用いてローカルなアドレスにバインドさせることもできる。 そうでない場合は、ソケット層は自動的に
47 \fI/proc/sys/net/ipv4/ip_local_port_range\fP で定義されている範囲の外で空いているローカルなポートを割り当て、
48 ソケットを \fBINADDR_ANY\fP にバインドする。
49
50 受信動作はパケットを一つだけ返す。渡したバッファよりもパケットが 小さければ、そのパケットの大きさのデータだけが返される。
51 逆にバッファよりも大きい場合はパケットは丸められ、 \fBMSG_TRUNC\fP フラグがセットされる。 \fBMSG_WAITALL\fP
52 はサポートしていない。
53
54 IP オプションは、 \fBip\fP(7)  に記述されているソケットオプションを用いて読み書きできる。 これらは適切な \fI/proc\fP
55 パラメータが有効な場合に限ってカーネルによって処理される (しかし無効になっている場合でもユーザーには渡される)。 \fBip\fP(7)  を参照のこと。
56
57 \fBMSG_DONTROUTE\fP フラグが送信時にセットされている場合には、 行き先アドレスはローカルなインターフェースアドレスから
58 参照できなければならない。パケットはそのインターフェースにしか送られない。
59
60 デフォルトでは、Linux の UDP は Path MTU Discovery を行う。 つまり、カーネルは特定の宛先 IP アドレスの MTU
61 (Maximum Transmission Unit; 最大転送単位) を記録し、UDP パケットの書き込みが MTU を超えた場合
62 \fBEMSGSIZE\fP を返す。 \fBEMSGSIZE\fP を返された場合、アプリケーションはパケットサイズを小さくすべきである。 ソケットオプション
63 \fBIP_MTU_DISCOVER\fP または \fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP ファイルを使って Path
64 MTU Discovery を無効にすることもできる (詳細は \fBip\fP(7)  を参照)。 Path MTU Discovery
65 を無効にした場合は、パケットサイズが インタフェースの MTU よりも大きいと UDP はそのパケットを フラグメント化して送出する。
66 しかしながら、性能と信頼性の理由から Path MTU Discovery を 無効にするのは推奨できない。
67 .SS アドレスのフォーマット
68 UDP は IPv4 の \fIsockaddr_in\fP アドレスフォーマットを用いる。これは \fBip\fP(7)  に記述されている。
69 .SS エラー処理
70 致命的なエラーは、たとえソケットが接続されていなくても、 すべてエラー戻り値としてユーザーに渡される。
71 これにはネットワークから受け取る非同期エラーも含まれる。 同じソケットを使って送信した昔のパケットに関するエラーを受け取るかもしれない。
72 この振る舞いは他の BSD ソケットの実装の多くとは異なる。 これらではソケットが接続されていない場合はエラーを全く返さない。 Linux の振る舞いは
73 \fBRFC\ 1122\fP での指定に従ったものである。
74
75 Linux 2.0 と 2.2 では、古いコードとの互換性のために、 \fBSO_BSDCOMPAT\fP \fBSOL_SOCKET\fP
76 オプションを設定すれば、ソケットが接続されている 場合に限ってリモートのエラーを受信するようにできた (\fBEPROTO\fP と \fBEMSGSIZE\fP
77 を除く)。 ローカルで生成されたエラーは常に渡される。 このソケットオプションのサポートはそれ以降のバージョンの Linux で 削除された。詳細は
78 \fBsocket\fP(7)  を参照。
79
80 \fBIP_RECVERR\fP オプションが有効になっていると、 すべてのエラーはソケットのエラーキューに保存される。 これは
81 \fBMSG_ERRQUEUE\fP フラグをセットして \fBrecvmsg\fP(2)  を呼べば受信できる。
82 .SS "/proc インタフェース"
83 システム全体の UDP パラメータ設定には、 \fI/proc/sys/net/ipv4/\fP ディレクトリ内のファイルの読み書きでアクセスできる。
84 .TP 
85 \fIudp_mem\fP (Linux 2.6.25 以降)
86 これは 3 つの整数からなるベクトル値で、 UDP の全ソケットのキューで利用可能なページ数を制御する。
87 .RS
88 .TP  10
89 \fImin\fP
90 このページ数より少なければ、UDP はそのメモリ使用に関して 干渉されない。 UDP に割り当てられたメモリ総量がこの値を超過すると、 UDP
91 はメモリ使用量を調整し始める。
92 .TP 
93 \fIpressure\fP
94 この値は \fItcp_mem\fP の形式 (\fBtcp\fP(7)  参照) と合わせるために導入された
95 .TP 
96 \fImax\fP
97 UDP の全ソケットのキューで利用可能なページ数。
98 .RE
99 .IP
100 これらの 3 つの値のデフォルト値は、 ブート時に利用可能なメモリ総量から計算される。
101 .TP 
102 \fIudp_rmem_min\fP (integer; デフォルト値: PAGE_SIZE; Linux 2.6.25 以降)
103 メモリ使用量の調整中に、UDP ソケットが使用できる受信バッファの最小値 (バイト単位)。 UDP の全ソケットのページ使用量の合計が
104 \fIudp_mem\fP pressure を超過している場合であっても、 各 UDP ソケットはデータの受信にこのサイズ分だけは使用することができる。
105 .TP 
106 \fIudp_wmem_min\fP (integer; デフォルト値: PAGE_SIZE; Linux 2.6.25 以降)
107 メモリ使用量の調整中に、UDP ソケットが使用できる送信バッファの最小値 (バイト単位)。 UDP の全ソケットのページ使用量の合計が
108 \fIudp_mem\fP pressure を超過している場合であっても、 各 UDP ソケットはデータの送信にこのサイズ分だけは使用することができる。
109 .SS ソケットオプション
110 UDP ソケットオプションを設定または取得するには、 取得には \fBgetsockopt\fP(2)  を、設定には \fBsetsockopt\fP(2)
111 をオプションレベル引数に \fBIPPROTO_UDP\fP を指定して呼び出す。 注釈がない限り、 \fIoptval\fP は \fIint\fP
112 へのポインタである。
113 .TP 
114 \fBUDP_CORK\fP (Linux 2.5.44 以降)
115 .\" FIXME document UDP_ENCAP (new in kernel 2.5.67)
116 .\" From include/linux/udp.h:
117 .\" /* UDP encapsulation types */
118 .\" #define UDP_ENCAP_ESPINUDP_NON_IKE      1 /* draft-ietf-ipsec-nat-t-ike-00/01 */
119 .\" #define UDP_ENCAP_ESPINUDP      2 /* draft-ietf-ipsec-udp-encaps-06 */
120 .\" #define UDP_ENCAP_L2TPINUDP     3 /* rfc2661 */
121 このオプションが指定されると、このソケットの全てのデータ出力は 一つのデータグラムに蓄積され、このオプションが無効化された時に 送信される。
122 このオプションは移植性を考慮したコードでは用いるべきではない。
123 .SS ioctl
124 以下に示す ioctl は \fBioctl\fP(2)  を使ってアクセスできる。 正しい文法は以下の通り。
125 .PP
126 .RS
127 .nf
128 \fBint\fP\fI value\fP\fB;\fP
129 \fIerror\fP\fB = ioctl(\fP\fIudp_socket\fP\fB, \fP\fIioctl_type\fP\fB, &\fP\fIvalue\fP\fB);\fP
130 .fi
131 .RE
132 .TP 
133 \fBFIONREAD\fP (\fBSIOCINQ\fP)
134 .\" See http://www.securiteam.com/unixfocus/5KP0I15IKO.html
135 .\" "GNUnet DoS (UDP Socket Unreachable)", 14 May 2006
136 整数へのポインタを引き数に取り、そのポインタに、次の処理待ちのデータグラムの
137 サイズをバイト単位で返す。処理待ちのデータグラムがない場合は 0 を返す。
138 \fB警告\fP: \fBFIONREAD\fP を使った場合、処理待ちのデータグラムがない場合と、
139 次の処理待ちデータグラムが 0 バイトのデータの場合を区別することができない。
140 この両者を区別したい場合は、\fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7)
141 を使う方が安全である。
142 .TP 
143 \fBTIOCOUTQ\fP (\fBSIOCOUTQ\fP)
144 ローカル送信キューにあるデータサイズをバイト単位で返す。 Linux 2.4 以上でのみ対応している。
145 .PP
146 さらに、 \fBip\fP(7)  と \fBsocket\fP(7)  で述べられている全ての ioctl も対応している。
147 .SH エラー
148 \fBsocket\fP(7)  や \fBip\fP(7)  に記述されている全てのエラーが、 UDP ソケットの送受信で返される可能性がある。
149 .TP 
150 \fBECONNREFUSED\fP
151 行き先アドレスに関連づけられている受信者がいない。 これは以前のパケットがそのパケットを 上書き送信してしまっているからであることが多い。
152 .SH バージョン
153 .\" .SH CREDITS
154 .\" This man page was written by Andi Kleen.
155 \fBIP_RECVERR\fP は Linux 2.2 の新しい機能である。
156 .SH 関連項目
157 \fBip\fP(7), \fBraw\fP(7), \fBsocket\fP(7), \fBudplite\fP(7)
158
159 RFC\ 768 : User Datagram Protocol
160 .br
161 RFC\ 1122 : ホストの必要条件
162 .br
163 RFC\ 1191 : path MTU discovery の記述
164 .SH この文書について
165 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
166 である。プロジェクトの説明とバグ報告に関する情報は
167 http://www.kernel.org/doc/man\-pages/ に書かれている。