other versions
other languages
other sections
UDP(7) | Linux Programmer's Manual | UDP(7) |
名前¶
udp - IPv4 の ユーザーデータグラムプロトコル書式¶
#include <sys/socket.h>説明¶
これは RFC 768 で記述されている User Datagram Protocol の実装である。 UDP はコネクションレスの、信頼性の低いデータパケットサービスである。 パケットは到着前に並び替えられたり複製されたりする。 UDP は転送エラーを検出するためにチェックサムを生成・チェックする。アドレスのフォーマット¶
UDP は IPv4 の sockaddr_in アドレスフォーマットを用いる。これは ip(7) に記述されている。エラー処理¶
致命的なエラーは、たとえソケットが接続されていなくても、 すべてエラー戻り値としてユーザーに渡される。 これにはネットワークから受け取る非同期エラーも含まれる。 同じソケットを使って送信した昔のパケットに関するエラーを受け取るかもしれない。 この振る舞いは他の BSD ソケットの実装の多くとは異なる。 これらではソケットが接続されていない場合はエラーを全く返さない。 Linux の振る舞いは RFC 1122 での指定に従ったものである。/proc インタフェース¶
システム全体の UDP パラメータ設定には、 /proc/sys/net/ipv4/ ディレクトリ内のファイルの読み書きでアクセスできる。- udp_mem (Linux 2.6.25 以降)
- これは 3 つの整数からなるベクトル値で、 UDP の全ソケットのキューで利用可能なページ数を制御する。
- min
- このページ数より少なければ、UDP はそのメモリ使用に関して 干渉されない。 UDP に割り当てられたメモリ総量がこの値を超過すると、 UDP はメモリ使用量を調整し始める。
- pressure
- この値は tcp_mem の形式 ( tcp(7) 参照) と合わせるために導入された
- max
- UDP の全ソケットのキューで利用可能なページ数。
- これらの 3 つの値のデフォルト値は、 ブート時に利用可能なメモリ総量から計算される。
- udp_rmem_min (integer; デフォルト値: PAGE_SIZE; Linux 2.6.25 以降)
- メモリ使用量の調整中に、UDP ソケットが使用できる受信バッファの最小値 (バイト単位)。 UDP の全ソケットのページ使用量の合計が udp_mem pressure を超過している場合であっても、 各 UDP ソケットはデータの受信にこのサイズ分だけは使用することができる。
- udp_wmem_min (integer; デフォルト値: PAGE_SIZE; Linux 2.6.25 以降)
- メモリ使用量の調整中に、UDP ソケットが使用できる送信バッファの最小値 (バイト単位)。 UDP の全ソケットのページ使用量の合計が udp_mem pressure を超過している場合であっても、 各 UDP ソケットはデータの送信にこのサイズ分だけは使用することができる。
ソケットオプション¶
UDP ソケットオプションを設定または取得するには、 取得には getsockopt(2) を、設定には setsockopt(2) をオプションレベル引数に IPPROTO_UDP を指定して呼び出す。- UDP_CORK (Linux 2.5.44 以降)
- このオプションが指定されると、このソケットの全てのデータ出力は 一つのデータグラムに蓄積され、このオプションが無効化された時に 送信される。 このオプションは移植性を考慮したコードでは用いるべきではない。
ioctl¶
以下に示す ioctl は ioctl(2) を使ってアクセスできる。 正しい文法は以下の通り。int value; error = ioctl(udp_socket, ioctl_type, &value);
- FIONREAD (SIOCINQ)
- 整数へのポインタを引き数に取り、そのポインタに、次の処理待ちのデータグラムの サイズをバイト単位で返す。処理待ちのデータグラムがない場合は 0 を返す。 警告: FIONREAD を使った場合、処理待ちのデータグラムがない場合と、 次の処理待ちデータグラムが 0 バイトのデータの場合を区別することができない。 この両者を区別したい場合は、 select(2), poll(2), epoll(7) を使う方が安全である。
- TIOCOUTQ (SIOCOUTQ)
- ローカル送信キューにあるデータサイズをバイト単位で返す。 Linux 2.4 以上でのみ対応している。
エラー¶
socket(7) や ip(7) に記述されている全てのエラーが、 UDP ソケットの送受信で返される可能性がある。- ECONNREFUSED
- 行き先アドレスに関連づけられている受信者がいない。 これは以前のパケットがそのパケットを 上書き送信してしまっているからであることが多い。
バージョン¶
IP_RECVERR は Linux 2.2 の新しい機能である。関連項目¶
ip(7), raw(7), socket(7), udplite(7)この文書について¶
この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-06-13 | Linux |