Man page - udp(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr es pl ja ru ro zh_TW zh_CNManual
UDP
名 前書 式
説 明
ア ド レ ス の フ ォ ー マ ッ ト
エ ラ ー 処 理
/proc イ ン タ ー フ ェ ー ス
ソ ケ ッ ト オ プ シ ョ ン
ioctl
エ ラ ー
バ ー ジ ョ ン
関 連 項 目
こ の 文 書 に つ い て
名 前
udp - IPv4 の ユ ー ザ ー デ ー タ グ ラ ム プ ロ ト コ ル
書 式
#include
<sys/socket.h>
#include <netinet/in.h>
#include <netinet/udp.h>
udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
説 明
こ れ は RFC 768 で 記 述 さ れ て い る User Datagram Protocol の 実 装 で あ る 。 UDP は コ ネ ク シ ョ ン レ ス の 、 信 頼 性 の 低 い デ ー タ パ ケ ッ ト サ ー ビ ス で あ る 。 パ ケ ッ ト は 到 着 前 に 並 び 替 え ら れ た り 複 製 さ れ た り す る 。 UDP は 転 送 エ ラ ー を 検 出 す る た め に チ ェ ッ ク サ ム を 生 成 ・ チ ェ ッ ク す る 。
UDP ソ ケ ッ ト が 生 成 さ れ る と き 、 ロ ー カ ル ア ド レ ス や リ モ ー ト ア ド レ ス は 指 定 さ れ な い 。 正 し い 行 き 先 ア ド レ ス を 引 数 と し て sendto (2) や sendmsg (2) を 呼 べ ば 、 デ ー タ グ ラ ム は た だ ち に 送 信 さ れ る 。 ソ ケ ッ ト に 対 し て connect (2) を 呼 ぶ と 、 デ フ ォ ル ト の 行 き 先 ア ド レ ス が 設 定 さ れ 、 send (2) や write (2) を 使 っ て 、 行 き 先 ア ド レ ス の 指 定 な し に デ ー タ グ ラ ム を 送 信 で き る よ う に な る 。 こ の 場 合 で も 、 行 き 先 ア ド レ ス を sendto (2) や sendmsg (2) に 渡 せ ば 、 デ フ ォ ル ト 以 外 の ア ド レ ス に 送 信 可 能 で あ る 。 パ ケ ッ ト を 受 信 す る た め に 、 ま ず ソ ケ ッ ト を bind (2) を 用 い て ロ ー カ ル な ア ド レ ス に バ イ ン ド さ せ る こ と も で き る 。 そ う で な い 場 合 は 、 ソ ケ ッ ト 層 は 自 動 的 に /proc/sys/net/ipv4/ip_local_port_range で 定 義 さ れ て い る 範 囲 の 外 で 空 い て い る ロ ー カ ル な ポ ー ト を 割 り 当 て 、 ソ ケ ッ ト を INADDR_ANY に バ イ ン ド す る 。
受 信 動 作 は パ ケ ッ ト を 一 つ だ け 返 す 。 渡 し た バ ッ フ ァ ー よ り も パ ケ ッ ト が 小 さ け れ ば 、 そ の パ ケ ッ ト の 大 き さ の デ ー タ だ け が 返 さ れ る 。 逆 に バ ッ フ ァ ー よ り も 大 き い 場 合 は パ ケ ッ ト は 丸 め ら れ 、 MSG_TRUNC フ ラ グ が セ ッ ト さ れ る 。 MSG_WAITALL は サ ポ ー ト し て い な い 。
IP オ プ シ ョ ン は 、 ip (7) に 記 述 さ れ て い る ソ ケ ッ ト オ プ シ ョ ン を 用 い て 読 み 書 き で き る 。 こ れ ら は 適 切 な /proc パ ラ メ ー タ ー が 有 効 な 場 合 に 限 っ て カ ー ネ ル に よ っ て 処 理 さ れ る (し か し 無 効 に な っ て い る 場 合 で も ユ ー ザ ー に は 渡 さ れ る )。 ip (7) を 参 照 の こ と 。
MSG_DONTROUTE フ ラ グ が 送 信 時 に セ ッ ト さ れ て い る 場 合 に は 、 行 き 先 ア ド レ ス は ロ ー カ ル な イ ン タ ー フ ェ ー ス ア ド レ ス か ら 参 照 で き な け れ ば な ら な い 。 パ ケ ッ ト は そ の イ ン タ ー フ ェ ー ス に し か 送 ら れ な い 。
デ フ ォ ル ト で は 、 Linux の UDP は Path MTU Discovery を 行 う 。 つ ま り 、 カ ー ネ ル は 特 定 の 宛 先 IP ア ド レ ス の MTU (Maximum Transmission Unit; 最 大 転 送 単 位 ) を 記 録 し 、 UDP パ ケ ッ ト の 書 き 込 み が MTU を 超 え た 場 合 EMSGSIZE を 返 す 。 EMSGSIZE を 返 さ れ た 場 合 、 ア プ リ ケ ー シ ョ ン は パ ケ ッ ト サ イ ズ を 小 さ く す べ き で あ る 。 ソ ケ ッ ト オ プ シ ョ ン IP_MTU_DISCOVER ま た は /proc/sys/net/ipv4/ip_no_pmtu_disc フ ァ イ ル を 使 っ て Path MTU Discovery を 無 効 に す る こ と も で き る (詳 細 は ip (7) を 参 照 )。 Path MTU Discovery を 無 効 に し た 場 合 は 、 パ ケ ッ ト サ イ ズ が イ ン タ ー フ ェ ー ス の MTU よ り も 大 き い と UDP は そ の パ ケ ッ ト を フ ラ グ メ ン ト 化 し て 送 出 す る 。 し か し な が ら 、 性 能 と 信 頼 性 の 理 由 か ら Path MTU Discovery を 無 効 に す る の は 推 奨 で き な い 。
ア ド レ ス の フ ォ ー マ ッ ト
UDP は IPv4 の sockaddr_in ア ド レ ス フ ォ ー マ ッ ト を 用 い る 。 こ れ は ip (7) に 記 述 さ れ て い る 。
エ ラ ー 処 理
致 命 的 な エ ラ ー は 、 た と え ソ ケ ッ ト が 接 続 さ れ て い な く て も 、 す べ て エ ラ ー 戻 り 値 と し て ユ ー ザ ー に 渡 さ れ る 。 こ れ に は ネ ッ ト ワ ー ク か ら 受 け 取 る 非 同 期 エ ラ ー も 含 ま れ る 。 同 じ ソ ケ ッ ト を 使 っ て 送 信 し た 昔 の パ ケ ッ ト に 関 す る エ ラ ー を 受 け 取 る か も し れ な い 。 こ の 振 る 舞 い は 他 の BSD ソ ケ ッ ト の 実 装 の 多 く と は 異 な る 。 こ れ ら で は ソ ケ ッ ト が 接 続 さ れ て い な い 場 合 は エ ラ ー を 全 く 返 さ な い 。 Linux の 振 る 舞 い は RFC 1122 で の 指 定 に 従 っ た も の で あ る 。
Linux 2.0 と 2.2 で は 、 古 い コ ー ド と の 互 換 性 の た め に 、 SO_BSDCOMPAT SOL_SOCKET オ プ シ ョ ン を 設 定 す れ ば 、 ソ ケ ッ ト が 接 続 さ れ て い る 場 合 に 限 っ て リ モ ー ト の エ ラ ー を 受 信 す る よ う に で き た ( EPROTO と EMSGSIZE を 除 く )。 ロ ー カ ル で 生 成 さ れ た エ ラ ー は 常 に 渡 さ れ る 。 こ の ソ ケ ッ ト オ プ シ ョ ン の サ ポ ー ト は そ れ 以 降 の バ ー ジ ョ ン の Linux で 削 除 さ れ た 。 詳 細 は socket (7) を 参 照 。
IP_RECVERR オ プ シ ョ ン が 有 効 に な っ て い る と 、 す べ て の エ ラ ー は ソ ケ ッ ト の エ ラ ー キ ュ ー に 保 存 さ れ る 。 こ れ は MSG_ERRQUEUE フ ラ グ を セ ッ ト し て recvmsg (2) を 呼 べ ば 受 信 で き る 。
/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 を 指 定 し て 呼 び 出 す 。 注 釈 が な い 限 り 、 optval は int へ の ポ イ ン タ ー で あ る 。
Following is a
list of UDP-specific socket options. For details of some
other socket options that are also applicable for UDP
sockets, see
socket
(7).
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 以 上 で の み 対 応 し て い る 。
さ ら に 、 ip (7) と socket (7) で 述 べ ら れ て い る 全 て の ioctl も 対 応 し て い る 。
エ ラ ー
socket
(7)
や
ip
(7) に 記 述 さ
れ て い る 全 て
の エ ラ ー が 、 UDP
ソ ケ ッ ト の 送
受 信 で 返 さ れ
る 可 能 性 が あ
る 。
ECONNREFUSED
行 き 先 ア ド レ ス に 関 連 づ け ら れ て い る 受 信 者 が い な い 。 こ れ は 以 前 の パ ケ ッ ト が そ の パ ケ ッ ト を 上 書 き 送 信 し て し ま っ て い る か ら で あ る こ と が 多 い 。
バ ー ジ ョ ン
IP_RECVERR は Linux 2.2 の 新 し い 機 能 で あ る 。
関 連 項 目
ip (7), raw (7), socket (7), udplite (7)
The kernel source file Documentation/networking/ip-sysctl.txt .
RFC 768 :
User Datagram Protocol
RFC 1122 : ホ ス ト の 必
要 条 件
RFC 1191 : path MTU discovery の 記
述
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。