Man page - tcp(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 ja ru zh_TW zh_CNManual
TCP
名 前書 式
説 明
ア ド レ ス の フ ォ ー マ ッ ト
/proc イ ン タ ー フ ェ ー ス
ソ ケ ッ ト オ プ シ ョ ン
ソ ケ ッ ト API
ioctl
エ ラ ー 処 理
エ ラ ー
バ ー ジ ョ ン
バ グ
関 連 項 目
こ の 文 書 に つ い て
名 前
tcp - TCP プ ロ ト コ ル
書 式
#include
<sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
説 明
こ れ は RFC 793, RFC 1122, RFC 2001 で 定 義 さ れ て い る TCP プ ロ ト コ ル を NewReno 拡 張 と SACK 拡 張 を 含 め て 実 装 し た も の で あ る 。 TCP は 、 ip (7) 上 の 二 つ の ソ ケ ッ ト 間 に 、 信 頼 性 の 高 い 、 ス ト リ ー ム 指 向 の 全 二 重 (full-duplex) 通 信 を 提 供 す る 。 v4 と v6 の 両 方 の バ ー ジ ョ ン の ip (7) に 対 応 し て い る 。 TCP は 、 デ ー タ が 順 序 を 守 っ て 到 着 す る こ と 、 途 中 で 失 わ れ た パ ケ ッ ト が 再 送 さ れ る こ と を 保 証 す る 。 ま た 、 パ ケ ッ ト 単 位 に チ ェ ッ ク サ ム を 生 成 、 検 査 す る こ と で 、 転 送 エ ラ ー を 検 知 す る 。 TCP は レ コ ー ド 境 界 (record boundary) を 保 存 し な い 。
新 し く 生 成 さ れ た ば か り の TCP ソ ケ ッ ト は 、 リ モ ー ト ア ド レ ス か ロ ー カ ル ア ド レ ス が な く 、 し た が っ て 詳 細 が 完 全 に 指 定 さ れ た 状 態 で は な い 。 外 部 へ の TCP 接 続 を 生 成 す る に は 、 connect (2) を 用 い て も う 一 方 の TCP ソ ケ ッ ト へ の 接 続 を 確 立 す る 。 外 部 か ら の 新 た な 接 続 を 受 け る に は 、 ま ず bind (2) で ソ ケ ッ ト を ロ ー カ ル な ア ド レ ス と ポ ー ト に 結 び つ け 、 次 に listen (2) を 呼 ん で ソ ケ ッ ト を 接 続 待 ち 受 け 状 態 に す る 。 そ の 後 、 到 着 し た 接 続 要 求 に 対 し て accept (2) を 用 い 、 ソ ケ ッ ト を 新 し く 生 成 す る 。 accept (2) ま た は connect (2) の コ ー ル が 成 功 し た ソ ケ ッ ト は 、 詳 細 が 完 全 に 指 定 さ れ た 状 態 と な り 、 デ ー タ の や り と り が 可 能 と な る 。 接 続 待 ち 受 け 状 態 の (listening) ソ ケ ッ ト や 、 接 続 (connect) さ れ て い な い ソ ケ ッ ト を 通 し て デ ー タ を や り と り す る こ と は で き な い 。
Linux は RFC 1323 の TCP high performance 拡 張 を サ ポ ー ト し て い る 。 こ れ に は 、 Protection Against Wrapped Sequence Numbers (PAWS)、 ウ ィ ン ド ウ ス ケ ー リ ン グ 、 タ イ ム ス タ ン プ な ど が 含 ま れ て い る 。 ウ ィ ン ド ウ ス ケ ー リ ン グ を 利 用 す る と 、 遅 延 ま た は 帯 域 の 大 き な 接 続 で 、 (64 K 以 上 の ) 巨 大 な TCP ウ ィ ン ド ウ を 用 い る こ と が 可 能 と な る 。 こ れ を 用 い る に は 、 送 受 信 の バ ッ フ ァ ー サ イ ズ を 大 き く し な け れ ば な ら な い 。 シ ス テ ム 全 体 に 対 す る バ ッ フ ァ ー サ イ ズ の 変 更 は 、 フ ァ イ ル /proc/sys/net/ipv4/tcp_wmem と /proc/sys/net/ipv4/tcp_rmem を 用 い て 行 う こ と が で き る 。 ま た 、 個 々 の ソ ケ ッ ト の み を 大 き く し た い 場 合 に は 、 SO_SNDBUF や SO_RCVBUF ソ ケ ッ ト オ プ シ ョ ン を 用 い て setsockopt (2) コ ー ル を 用 い て 設 定 す れ ば よ い 。
SO_SNDBUF や SO_RCVBUF の メ カ ニ ズ ム で 宣 言 さ れ る ソ ケ ッ ト バ ッ フ ァ ー の 最 大 サ イ ズ は 、 フ ァ イ ル /proc/sys/net/core/rmem_max や /proc/sys/net/core/wmem_max で 指 定 さ れ た シ ス テ ム と し て の 制 限 値 を 超 え る こ と は で き な い 。 TCP は 実 際 に は setsockopt (2) コ ー ル が 要 求 し た バ ッ フ ァ ー サ イ ズ の 二 倍 を 割 り 当 て る 。 そ の た め 、 こ の 後 で getsockopt (2) コ ー ル を 行 う と 、 setsockopt (2) で 要 求 し た バ ッ フ ァ ー サ イ ズ と は 異 な る 値 が 返 る 。 TCP は こ の 余 分 な 空 間 を 、 管 理 目 的 や カ ー ネ ル 内 部 の 構 造 体 に 用 い て い る 。 /proc フ ァ イ ル の 値 は 、 こ れ ら を 反 映 し 、 実 際 の TCP ウ ィ ン ド ウ よ り も 大 き な 値 と な る 。 各 接 続 に お け る ソ ケ ッ ト の バ ッ フ ァ ー サ イ ズ 変 更 を 有 効 に す る に は 、 listen (2) や connect (2) コ ー ル の 前 に 設 定 し な け れ ば な ら な い 。 よ り 詳 し い 情 報 は socket (7) を 見 よ 。
TCP は 緊 急 デ ー タ (urgent data) を サ ポ ー ト し て い る 。 緊 急 デ ー タ は 何 ら か の 重 要 な メ ッ セ ー ジ が デ ー タ ス ト リ ー ム に 含 ま れ て い る こ と 、 そ の デ ー タ を で き る だ け 早 く 処 理 す べ き こ と 、 を 受 信 者 に 伝 え る た め に 用 い ら れ る 。 緊 急 デ ー タ を 送 る に は 、 send (2) に MSG_OOB オ プ シ ョ ン を 指 定 す る 。 緊 急 デ ー タ を 受 信 す る と 、 カ ー ネ ル は SIGURG シ グ ナ ル を 送 信 す る 。 送 信 先 は SIOCSPGRP や FIOSETOWN ioctl (や POSIX.1 で 規 定 さ れ て い る fcntl (2) F_SETOWN 操 作 ) を 用 い て そ の ソ ケ ッ ト の 「 所 有 者 」 と し て 設 定 さ れ た プ ロ セ ス か プ ロ セ ス グ ル ー プ で あ る 。 SO_OOBINLINE ソ ケ ッ ト オ プ シ ョ ン が 有 効 に な っ て い る と 、 緊 急 デ ー タ は 通 常 の デ ー タ ス ト リ ー ム の 中 に 混 ぜ て 送 ら れ る (プ ロ グ ラ ム は 下 記 の SIOCATMARK ioctl を 使 っ て 緊 急 デ ー タ の 場 所 を 調 べ る こ と が で き る )。 無 効 に な っ て い る 場 合 に は 、 recv (2) や recvmsg (2) で MSG_OOB フ ラ グ が セ ッ ト さ れ て い る と き に の み 、 緊 急 デ ー タ を 受 信 で き る 。
When out-of-band data is present, select (2) indicates the file descriptor as having an exceptional condition and poll (2) indicates a POLLPRI event.
Linux 2.4 で は 多 く の 変 更 が な さ れ 、 ス ル ー プ ッ ト と ス ケ ー リ ン グ が 向 上 し 、 機 能 も 高 ま っ た 。 こ れ ら の 機 能 に は 、 ゼ ロ コ ピ ー sendfile (2)、 Explicit Congestion Notification、 TIME_WAIT ソ ケ ッ ト の 新 し い 管 理 法 、 keep-alive ソ ケ ッ ト オ プ シ ョ ン 、 Duplicate SACK 拡 張 の サ ポ ー ト な ど が あ る 。
ア ド レ ス の フ ォ ー マ ッ ト
TCP は IP の 上 層 に 構 築 さ れ て い る ( ip (7) を 参 照 )。 ip (7) に 定 義 さ れ て い る ア ド レ ス フ ォ ー マ ッ ト は TCP に も 適 用 さ れ る 。 TCP は point-to-point の 通 信 だ け を サ ポ ー ト す る 。 ブ ロ ー ド キ ャ ス ト や マ ル チ キ ャ ス ト は サ ポ ー ト し な い 。
/proc イ ン タ ー フ ェ ー ス
シ
ス テ ム 全 体 に
対 す る TCP パ ラ メ
ー タ ー の 設 定
に は 、
/proc/sys/net/ipv4/
デ ィ レ ク ト リ
内 の フ ァ イ ル
に よ り ア ク セ
ス で き る 。 さ
ら に 、 IP に 関 連
す る
/proc
イ ン タ
ー フ ェ ー ス の
ほ と ん ど は TCP に
つ い て も 適 用
さ れ る 。
ip
(7) を
参 照 の こ と 。
Boolean
は 整 数 値 で
、 0 以 外 の 値
("true") は 対 応 す
る オ プ シ ョ ン
が 有 効 、 0 値
("false") は 無 効 、
で あ る こ と を
意 味 す る 。
tcp_abc
(Integer; default: 0; Linux 2.6.15 か
ら 3.8 ま で )
RFC 3465 で 定 義 さ れ て い る Appropriate Byte Count (ABC) を 制 御 す る 。 ABC は 、 部 分 的 な ACK に 応 じ た 輻 輳 ウ ィ ン ド ウ ( cwnd ) の 増 加 を よ り 緩 や か に す る 方 法 で あ る 。 以 下 の 値 を 指 定 で き る 。
|
0 |
ACK を 受 信 す る 毎 に cwnd を 増 や す (ABC な し )。 |
||
|
1 |
フ ル サ イ ズ の セ グ メ ン ト の ACK を 受 信 す る 毎 に cwnd を 増 や す 。 |
||
|
2 |
ACK が 遅 延 ACK (delayed acknowledgment) を 相 殺 す る た め の 2 セ グ メ ン ト に 対 す る ACK の 場 合 に 、 cwnd を 2 増 や す こ と が で き る 。 |
tcp_abort_on_overflow (ブ ー ル 値 ; デ フ ォ ル ト : 無 効 ; Linux 2.4 以 降 )
接 続 を 待 ち 受 け て い る サ ー ビ ス が 遅 す ぎ て 、 受 信 に つ い て い け な い 場 合 に 、 接 続 を リ セ ッ ト で き る よ う に す る 。 こ れ を 用 い る と 、 バ ー ス ト に よ っ て オ ー バ ー フ ロ ー が 起 こ っ た と き に 、 接 続 を 回 復 で き る よ う に な る 。 こ の オ プ シ ョ ン を 用 い る の は 、 受 信 デ ー モ ン を 高 速 化 で き な い 場 合 に 「 限 定 す る 」 こ と 。 こ の オ プ シ ョ ン を 用 い る と 、 そ の サ ー バ に 接 続 し て い る ク ラ イ ア ン ト に と っ て は 害 に な る こ と が あ る 。
tcp_adv_win_scale (integer; default: 2; Linux 2.4 以 降 )
バ ッ フ ァ ー リ ン グ の オ ー バ ー ヘ ッ ド の 計 算 方 法 を 、 tcp_adv_win_scale が 正 の 場 合 は bytes/2ˆtcp_adv_win_scale に 、 tcp_adv_win_scale が 負 か 0 の 場 合 は bytes-bytes/2ˆ(-tcp_adv_win_scale) と す る 。
ソ ケ ッ ト の 受 信 バ ッ フ ァ ー 空 間 は ア プ リ ケ ー シ ョ ン と カ ー ネ ル で 共 有 さ れ る 。 TCP は バ ッ フ ァ ー の 一 部 を TCP ウ ィ ン ド ウ と し て 管 理 し 、 こ れ を 受 信 ウ ィ ン ド ウ と し て 接 続 の 他 端 に 通 知 す る 。 空 間 の 残 り は 「 ア プ リ ケ ー シ ョ ン 」 バ ッ フ ァ ー と し て 用 い ら れ 、 ス ケ ジ ュ ー リ ン グ や ア プ リ ケ ー シ ョ ン の 遅 延 か ら ネ ッ ト ワ ー ク を 隔 離 す る 。 tcp_adv_win_scale の デ フ ォ ル ト 値 は 2 で あ り 、 こ の 場 合 ア プ リ ケ ー シ ョ ン バ ッ フ ァ ー は 全 体 の 1/4 に な る 。
tcp_allowed_congestion_control
(String; default: see text; Linux 2.4.20
以 降 )
非 特 権 プ ロ セ ス で 利 用 で き る 輻 輳 制 御 ア ル ゴ リ ズ ム の 選 択 肢 を 表 示 /設 定 す る ( TCP_CONGESTION ソ ケ ッ ト オ プ シ ョ ン の 説 明 を 参 照 の こ と )。 こ の リ ス ト の 要 素 は ホ ワ イ ト ス ペ ー ス で 区 切 ら れ 、 改 行 文 字 で 終 端 さ れ る 。 こ の リ ス ト は tcp_available_congestion_control で 表 示 さ れ る リ ス ト の 部 分 集 合 と な る 。 こ の リ ス ト の デ フ ォ ル ト 値 は 、 "reno" と tcp_congestion_control の デ フ ォ ル ト 設 定 を あ わ せ た も の と な る 。
tcp_autocorking (ブ ー ル 値 ; デ フ ォ ル ト : 有 効 ; Linux 3.14 以 降 )
こ の オ プ シ ョ ン を 有 効 に す る と 、 送 信 総 パ ケ ッ ト 数 を 減 ら す た め 、 カ ー ネ ル は 小 さ な write (連 続 す る write (2) や sendmsg (2) の 呼 び 出 し ) を 可 能 な 限 り 結 合 し よ う と す る 。 パ ケ ッ ト の 結 合 が 行 わ れ る の は 、 そ の フ ロ ー の 前 の パ ケ ッ ト が 少 な く と も 一 つ は qdisc キ ュ ー か デ バ イ ス の 送 信 キ ュ ー で 送 信 待 ち の 場 合 で あ る 。 こ の オ プ シ ョ ン が 有 効 な 場 合 で も TCP_CORK オ プ シ ョ ン を 使 う こ と が で き 、 ア プ リ ケ ー シ ョ ン が ソ ケ ッ ト の 「 コ ル ク 解 除 」 (送 信 待 ち 状 態 の 解 除 ) を い つ ど の よ う に 行 え ば よ い か 分 か っ て い る 場 合 に は 、 最 適 な 動 作 を さ せ る こ と が で き る 。
tcp_available_congestion_control (String; read-only; Linux 2.4.20 以 降 )
登 録 さ れ て い る 輻 輳 制 御 ア ル ゴ リ ズ ム の リ ス ト を 表 示 す る 。 こ の リ ス ト の 要 素 は ホ ワ イ ト ス ペ ー ス で 区 切 ら れ 、 改 行 文 字 で 終 端 さ れ る 。 こ の リ ス ト に 載 っ て い る も の だ け が 、 tcp_allowed_congestion_control に 表 示 さ れ る 。 他 の 輻 輳 制 御 ア ル ゴ リ ズ ム が モ ジ ュ ー ル と し て 利 用 可 能 だ が 、 モ ジ ュ ー ル が ロ ー ド さ れ て い な い こ と も あ る 。
tcp_app_win (integer; default: 31; Linux 2.4 以 降 )
こ の 変 数 は 、 TCP ウ ィ ン ド ウ の 何 バ イ ト 分 を バ ッ フ ァ ー リ ン グ の オ ー バ ー ヘ ッ ド 用 に 予 約 す る か を 指 定 す る 。
そ の ウ ィ ン ド ウ の window/2ˆtcp_app_win と mss の 大 き い ほ う (バ イ ト 単 位 ) が ア プ リ ケ ー シ ョ ン バ ッ フ ァ ー と し て 予 約 さ れ る 。 0 を 指 定 す る と 一 切 予 約 領 域 を 取 ら な い 。
tcp_base_mss (Integer; default: 512; Linux 2.6.17 以 降 )
パ ケ ッ ト 化 レ イ ヤ の Path MTU discovery (MTU probing) で 、 search_low の 初 期 値 と 使 用 さ れ る 値 。 MTU probing が 有 効 な 場 合 、 こ の 値 は そ の 接 続 の MSS の 初 期 値 と な る 。
tcp_bic
(ブ
ー ル 値 ; デ フ ォ
ル ト : 無 効 ; Linux 2.4.27/2.6.6
か ら 2.6.13
ま で )
BIC TCP 輻 輳 制 御 ア ル ゴ リ ズ ム を 有 効 に す る 。 BIC-TCP は 送 信 側 の み の 変 更 で 、 ス ケ ー ラ ビ リ テ ィ と TCP 親 和 性 (friendliness) の 両 方 を 提 供 し つ つ 、 大 き な ウ ィ ン ド ウ の 下 で の 線 形 な RTT 公 平 性 を 保 証 す る も の で あ る 。 こ の プ ロ ト コ ル で は additive increase (追 加 的 な 増 加 ) と binary search increase (二 分 探 索 増 加 ) と い わ れ る 二 つ の 仕 組 み を 組 み 合 わ せ て い る 。 輻 輳 ウ ィ ン ド ウ が 大 き い と き は 、 増 分 の 大 き い additive increase に よ り 、 ス ケ ー ラ ビ リ テ ィ を 確 保 し な が ら 線 形 な RTT 公 平 性 を 保 証 す る 。 輻 輳 ウ ィ ン ド ウ が 小 さ い と き に は binary search increase に よ り TCP 親 和 性 を 達 成 し て い る 。
tcp_bic_low_window
(integer; default: 14; Linux 2.4.27/2.6.6 以 降
2.6.13 ま で )
BIC TCP が 輻 輳 ウ ィ ン ド ウ の 調 整 を 開 始 す る 閾 値 ウ ィ ン ド ウ (パ ケ ッ ト 単 位 ) を 設 定 す る 。 こ の 閾 値 を 下 回 る 場 合 、 BIC TCP は デ フ ォ ル ト の TCP Reno と 同 じ 動 作 を す る 。
tcp_bic_fast_convergence
(ブ ー ル 値 ; デ フ
ォ ル ト : 有 効 ; Linux
2.4.27/2.6.6 以 降 2.6.13 ま で
)
BIC TCP が 輻 輳 ウ ィ ン ド ウ の 変 化 に よ り 速 く 反 応 す る よ う に す る 。 同 じ コ ネ ク シ ョ ン を 共 有 す る 二 つ の フ ロ ー が 一 つ に ま と ま る の を よ り 速 く 行 う よ う に す る 。
tcp_congestion_control (String; default: 説 明 参 照 ; Linux 2.4.13 以 降 )
新 規 の 接 続 で 使 用 さ れ る デ フ ォ ル ト の 輻 輳 制 御 ア ル ゴ リ ズ ム を 設 定 す る 。 "reno" ア ル ゴ リ ズ ム は 常 に 利 用 可 能 だ が 、 カ ー ネ ル 設 定 次 第 で は 別 の 選 択 肢 が 利 用 で き る こ と も あ る 。 こ の フ ァ イ ル の デ フ ォ ル ト 値 は カ ー ネ ル 設 定 の 一 つ と し て 設 定 さ れ る 。
tcp_dma_copybreak (integer; default: 4096; Linux 2.6.24 以 降 )
シ ス テ ム に DMA コ ピ ー エ ン ジ ン が 存 在 し 、 カ ー ネ ル で CONFIG_NET_DMA オ プ シ ョ ン が 有 効 に な っ て い る 場 合 に 、 DMA コ ピ ー エ ン ジ ン に オ フ ロ ー ド さ れ る ソ ケ ッ ト の 読 み 込 み サ イ ズ の 下 限 値 (バ イ ト 単 位 )。
tcp_dsack (ブ ー ル 値 ; デ フ ォ ル ト : 有 効 ; Linux 2.4 以 降 )
RFC 2883 の TCP Duplicate SACK の サ ポ ー ト を 有 効 に す る 。
tcp_ecn (integer; default: see below; Linux 2.4 以 降 )
RFC 3168 Explicit Congestion Notification を 有 効 に す る 。
こ の フ ァ イ ル は 以 下 の い ず れ か の 値 を 取 る こ と が で き る 。
|
0 |
Disable ECN. Neither initiate nor accept ECN. This was the default up to and including Linux 2.6.30. |
||
|
1 |
Enable ECN when requested by incoming connections and also request ECN on outgoing connection attempts. |
||
|
2 |
Enable ECN when requested by incoming connections, but do not request ECN on outgoing connections. This value is supported, and is the default, since Linux 2.6.31. |
When enabled, connectivity to some destinations could be affected due to older, misbehaving middle boxes along the path, causing connections to be dropped. However, to facilitate and encourage deployment with option 1, and to work around such buggy equipment, the tcp_ecn_fallback option has been introduced.
tcp_ecn_fallback (ブ ー ル 値 ; デ フ ォ ル ト : 有 効 ; Linux 4.1 以 降 )
Enable RFC 3168, Section 6.1.1.1. fallback. When enabled, outgoing ECN-setup SYNs that time out within the normal SYN retransmission timeout will be resent with CWR and ECE cleared.
tcp_fack (ブ ー ル 値 ; デ フ ォ ル ト : 有 効 ; Linux 2.2 以 降 )
TCP Forward Acknowledgement の サ ポ ー ト を 有 効 に す る 。
tcp_fin_timeout (integer; default: 60; Linux 2.2 以 降 )
ソ ケ ッ ト を 強 制 的 に ク ロ ー ズ す る 前 に 、 最 後 の FIN パ ケ ッ ト を 待 つ 時 間 を 秒 単 位 で 指 定 す る 。 こ れ は 厳 密 に は TCP の 仕 様 を 満 た し て い な い が 、 DoS 攻 撃 (denial of service attack) か ら 身 を 守 る た め に 必 要 で あ る 。 Linux 2.2 で は デ フ ォ ル ト 値 は 180 で あ っ た 。
tcp_frto (integer; default: 下 記 参 照 ; Linux 2.4.21/2.6 以 降 )
F-RTO を 有 効 に す る 。 F-RTO は TCP 再 送 タ イ ム ア ウ ト (RTO) か ら の 復 旧 性 能 を 向 上 さ せ た ア ル ゴ リ ズ ム で あ る 。 こ の 機 能 は 無 線 環 境 で 特 に 効 果 を 発 揮 す る 。 無 線 環 境 で は 、 通 常 は 、 中 間 ル ー タ ー の 輻 輳 で は な く ラ ン ダ ム な 無 線 の 干 渉 に よ り パ ケ ッ ト ロ ス が 発 生 す る 。 詳 細 は RFC 4138 を 参 照 。
こ の フ ァ イ ル は 以 下 の い ず れ か の 値 を 取 る こ と が で き る 。
|
0 |
Disabled. This was the default up to and including Linux 2.6.23. |
||
|
1 |
基 本 版 の F-RTO ア ル ゴ リ ズ ム を 有 効 に す る 。 |
||
|
2 |
Enable SACK-enhanced F-RTO if flow uses SACK. The basic version can be used also when SACK is in use though in that case scenario(s) exists where F-RTO interacts badly with the packet counting of the SACK-enabled TCP flow. This value is the default since Linux 2.6.24. |
Linu 2.6.22 よ り 前 で は 、 こ の パ ラ メ ー タ ー は ブ ー ル 値 で あ り 、 上 記 の 0 と 1 の み を サ ポ ー ト し て い た 。
tcp_frto_response (integer; default: 0; Linux 2.6.22 以 降 )
F-RTO が TCP 再 送 タ イ ム ア ウ ト が 偽 物 だ と 検 出 し た 場 合 (つ ま り 、 TCP が も っ と 長 い 再 送 タ イ ム ア ウ ト を 設 定 し て い れ ば タ イ ム ア ウ ト が 避 け ら れ た 場 合 )、 次 に ど う す る か に 関 し て 選 択 肢 が い く つ か あ る 。 以 下 の 値 を 選 択 で き る 。
|
0 |
レ ー ト を 元 の 半 分 に す る 。 滑 ら か で 、 保 守 的 な 反 応 を 行 い 、 RTT 1回 分 の 時 間 後 に 輻 輳 ウ ィ ン ド ウ ( cwnd ) と ス ロ ー ス タ ー ト の 閾 値 ( ssthresh ) が 半 分 に な る 。 |
||
|
1 |
非 常 に 保 守 的 な 反 応 。 こ の オ プ シ ョ ン の 使 用 は 推 奨 さ れ な い 。 反 応 が 正 し か っ た 場 合 で あ っ て も 、 Linux TCP の 他 の 部 分 と う ま く 連 携 で き な い か ら で あ る 。 cwnd と ssthresh は 直 ち に 半 分 に さ れ る 。 |
||
|
2 |
積 極 的 な 反 応 。 不 要 と 判 明 し た 輻 輳 制 御 の 測 定 情 報 を 取 り 消 す (TCP が も っ と 注 意 深 く 扱 う べ き 再 送 が 失 わ れ る 可 能 性 を 無 視 す る )。 。 cwnd と ssthresh は タ イ ム ア ウ ト 前 の 値 に 戻 さ れ る 。 |
tcp_keepalive_intvl (integer; default: 75; Linux 2.4 以 降 )
TCP keep-alive の プ ロ ー ブ を 送 る 間 隔 (秒 単 位 )。
tcp_keepalive_probes (integer; default: 9; Linux 2.2 以 降 )
TCP keep-alive プ ロ ー ブ の 最 大 回 数 。 こ の 回 数 だ け 試 し て も 接 続 先 か ら 反 応 が 得 ら れ な い 場 合 は 、 あ き ら め て 接 続 を 切 断 す る 。
tcp_keepalive_time (integer; default: 7200; Linux 2.2 以 降 )
接 続 が ア イ ド ル 状 態 に な っ て か ら 、 keep-alive プ ロ ー ブ を 送 信 す る ま で の 時 間 を 秒 単 位 で 指 定 す る 。 SO_KEEPALIVE ソ ケ ッ ト オ プ シ ョ ン が 有 効 に な っ て い る 場 合 の み keep-alive は 送 信 さ れ る 。 デ フ ォ ル ト 値 は 7200 秒 (2 時 間 )。 keep-alive が 有 効 に な っ て い る 場 合 、 さ ら に お よ そ 11 分 (75 秒 間 隔 の 9 プ ロ ー ブ 分 ) 経 過 す る と ア イ ド ル 状 態 の 接 続 は 終 了 さ せ ら れ る 。
下 層 に あ る 接 続 追 跡 機 構 や ア プ リ ケ ー シ ョ ン で の タ イ ム ア ウ ト は 、 も っ と ず っ と 短 い か も し れ な い 。
tcp_low_latency
(Boolean;
default: disabled; since Linux 2.4.21/2.6;
obsolete since Linux 4.14)
If enabled, the TCP stack makes decisions that prefer lower latency as opposed to higher throughput. It this option is disabled, then higher throughput is preferred. An example of an application where this default should be changed would be a Beowulf compute cluster. Since Linux 4.14, this file still exists, but its value is ignored.
tcp_max_orphans (integer; default: see below; Linux 2.4 以 降 )
シ ス テ ム が 許 容 す る 、 orphan な (ど の ユ ー ザ ー フ ァ イ ル ハ ン ド ル に も ア タ ッ チ さ れ て い な い ) TCP ソ ケ ッ ト の 最 大 数 。 こ の 数 を 越 え る と 、 orphan な 接 続 は リ セ ッ ト さ れ 、 警 告 が 表 示 さ れ る 。 こ の 制 限 が 存 在 す る の は 、 単 純 な 使 用 不 能 (denial-of-service) 攻 撃 を 防 ぐ た め に 過 ぎ な い 。 こ の 値 を 小 さ く す る こ と は 推 奨 し な い 。 ネ ッ ト ワ ー ク の 条 件 に よ っ て は 、 こ の 数 値 を 大 き く し な い と い け な い か も し れ な い が 、 orphan な ソ ケ ッ ト ひ と つ あ た り 64 K 程 度 の ス ワ ッ プ 不 可 能 な メ モ リ ー を 消 費 す る こ と も 注 意 せ よ 。 デ フ ォ ル ト の 初 期 値 は カ ー ネ ル パ ラ メ ー タ ー の NR_FILE と 等 し い 。 こ の 初 期 デ フ ォ ル ト 値 は シ ス テ ム の メ モ リ ー に 応 じ て 調 整 さ れ る 。
tcp_max_syn_backlog (integer; default: 下 記 参 照 ; Linux 2.2 以 降 )
The maximum number of queued connection requests which have still not received an acknowledgement from the connecting client. If this number is exceeded, the kernel will begin dropping requests. The default value of 256 is increased to 1024 when the memory present in the system is adequate or greater (>= 128 MB), and reduced to 128 for those systems with very low memory (<= 32 MB).
Prior to Linux 2.6.20, it was recommended that if this needed to be increased above 1024, the size of the SYNACK hash table ( TCP_SYNQ_HSIZE ) in include/net/tcp.h should be modified to keep
TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog
and the kernel should be recompiled. In Linux 2.6.20, the fixed sized TCP_SYNQ_HSIZE was removed in favor of dynamic sizing.
tcp_max_tw_buckets (integer; default: 下 記 参 照 ; Linux 2.4 以 降 )
シ ス テ ム が 許 容 す る TIME_WAIT 状 態 に あ る ソ ケ ッ ト の 最 大 数 。 こ の 制 限 が 存 在 す る の は 、 単 純 な 使 用 不 能 (denial-of-service) 攻 撃 を 防 ぐ た め に 過 ぎ な い 。 デ フ ォ ル ト 値 は NR_FILE*2 で 、 シ ス テ ム の メ モ リ ー に 応 じ て 調 整 さ れ る 。 こ の 数 値 を 越 え る と 、 そ の よ う な ソ ケ ッ ト は ク ロ ー ズ さ れ 、 警 告 が 表 示 さ れ る 。
tcp_moderate_rcvbuf
(ブ ー ル 値 ; デ フ
ォ ル ト : 有 効 ; Linux
2.4.17/2.6.7
以 降 )
有 効 に す る と 、 TCP は 受 信 バ ッ フ ァ ー の 自 動 調 整 を 行 う 。 具 体 的 に は 、 ( tcp_rmem[2] を 超 え な い 範 囲 で ) バ ッ フ ァ ー の 大 き さ を 自 動 的 に 変 化 さ せ 、 そ の 経 路 で 最 大 の ス ル ー プ ッ ト を 達 成 す る の に 必 要 な 大 き さ に 合 わ せ よ う と す る 。
tcp_mem (Linux 2.4 以 降 )
こ れ は 3 つ の 整 数 [low, pressure, high] か ら な る ベ ク ト ル 値 で あ る 。 こ れ ら は TCP が メ モ リ ー 使 用 量 を 追 跡 す る た め に 用 い ら れ る (使 用 量 は シ ス テ ム の ペ ー ジ サ イ ズ 単 位 で 計 測 さ れ る )。 デ フ ォ ル ト は ブ ー ト 時 に 利 用 で き る メ モ リ ー の 量 か ら 計 算 さ れ る 。 (実 際 に は 、 TCP は low memory の み を 使 用 す る 。 値 は 32ビ ッ ト シ ス テ ム で は 約 900 メ ガ バ イ ト に 制 限 さ れ る 。 64 ビ ッ ト シ ス テ ム で は こ の 制 限 は な い 。 )
|
low |
TCP は 、 グ ロ ー バ ル に ア ロ ケ ー ト し た ペ ー ジ が こ の 数 値 以 下 の 場 合 は 、 メ モ リ ー ア ロ ケ ー シ ョ ン を 調 整 し な い 。 |
pressure
TCP が ア ロ ケ ー ト し た メ モ リ ー が こ の 数 値 分 の ペ ー ジ 数 を 越 え る と 、 TCP は メ モ リ ー 消 費 を 抑 え る よ う に な る 。 ア ロ ケ ー ト し た ペ ー ジ 数 が low 以 下 に な る と 、 こ の メ モ リ ー 圧 迫 状 態 か ら 脱 す る 。
|
high |
TCP が グ ロ ー バ ル に 割 り 当 て る ペ ー ジ 数 の 最 大 値 。 こ の 値 は カ ー ネ ル に よ っ て 課 さ れ る あ ら ゆ る 制 限 よ り も 優 先 さ れ る 。 |
tcp_mtu_probing (integer; default: 0; Linux 2.6.17 以 降 )
こ の パ ラ メ ー タ ー は 、 TCP の パ ケ ッ ト 化 レ イ ヤ の Path MTU discovery を 制 御 す る 。 こ の フ ァ イ ル に は 以 下 の 値 を 設 定 で き る 。
|
0 |
無 効 に す る 。 |
||
|
1 |
デ フ ォ ル ト で は 無 効 だ が 、 ICMP ブ ラ ッ ク ホ ー ル が 検 出 さ れ た 場 合 は 有 効 に す る 。 |
||
|
2 |
常 に 有 効 に す る 。 MSS の 初 期 値 と し て tcp_base_mss が 使 用 さ れ る 。 |
tcp_no_metrics_save (ブ ー ル 値 ; デ フ ォ ル ト : 無 効 ; Linux 2.6.6 以 降 )
デ フ ォ ル ト で は 、 TCP は 接 続 ク ロ ー ズ 時 に 各 種 の 接 続 パ ラ メ ー タ ー を ル ー ト キ ャ ッ シ ュ (route cache) に 保 存 し 、 近 い 将 来 に 接 続 が 確 立 さ れ た 際 に こ れ ら の 情 報 を 初 期 状 態 と し て 使 用 で き る よ う に な っ て い る 。 通 常 は 、 こ れ に よ り 全 体 と し て 性 能 が 向 上 す る が 、 時 と し て 性 能 の 劣 化 を 引 き 起 こ す こ と も あ る 。 tcp_no_metrics_save を 有 効 に す る と 、 TCP は 接 続 ク ロ ー ズ 時 に 接 続 パ ラ メ ー タ ー を キ ャ ッ シ ュ し な く な る 。
tcp_orphan_retries (integer; default: 8; Linux 2.4 以 降 )
こ ち ら か ら ク ロ ー ズ し た 接 続 に つ い て 、 先 方 を プ ロ ー ブ す る 最 大 試 行 数 。
tcp_reordering (integer; default: 3; Linux 2.4 以 降 )
TCP パ ケ ッ ト ス ト リ ー ム で パ ケ ッ ト 順 序 の 逆 転 が 発 生 し た だ け で あ り 、 パ ケ ッ ト ロ ス が 起 こ っ た と は み な さ な い 、 パ ケ ッ ト 数 の 最 大 値 。 こ の 値 を 超 え て パ ケ ッ ト の 順 序 逆 転 が 起 こ る と 、 パ ケ ッ ト ロ ス が 生 じ た と み な し 、 slow start に 入 る 。 こ の 数 値 は 変 更 し な い ほ う が 良 い 。 こ れ は 、 接 続 中 の パ ケ ッ ト の 並 び 替 え に よ っ て 生 じ る 不 必 要 な 速 度 低 下 や 再 送 を 最 小 化 す る よ う に 設 計 さ れ た 、 パ ケ ッ ト 並 び 替 え (packet reordering) の 検 知 メ ト リ ッ ク な の で あ る 。
tcp_retrans_collapse (ブ ー ル 値 ; デ フ ォ ル ト : 有 効 ; Linux 2.2 以 降 )
再 送 の 際 に フ ル サ イ ズ の パ ケ ッ ト を 送 ろ う と す る 。
tcp_retries1 (integer; default: 3; Linux 2.2 以 降 )
普 通 に 確 立 さ れ て い る 接 続 上 に 、 TCP が ネ ッ ト ワ ー ク 層 を 巻 き 込 ま ず に 再 送 を 試 み る 回 数 。 再 送 が こ の 回 数 を 越 え る と 、 ま ず 最 初 に 、 新 し い 再 送 を 送 る 前 に 可 能 な ら ネ ッ ト ワ ー ク 層 に 経 路 を 更 新 さ せ る 。 デ フ ォ ル ト は RFC が 指 定 し て い る 最 少 数 で あ る 3。
tcp_retries2 (integer; default: 15; Linux 2.2 以 降 )
確 立 状 態 の 接 続 に 、 こ の 回 数 TCP パ ケ ッ ト の 再 送 信 を 行 な っ て も だ め な 場 合 は あ き ら め る 。 デ フ ォ ル ト 値 は 15 で 、 こ れ は (再 送 の タ イ ム ア ウ ト に 依 存 す る が ) お よ そ 13〜 30 分 程 度 の 期 間 に 対 応 す る 。 RFC 1122 は 最 小 の 限 界 を 100 秒 と 置 い て い る が 、 こ れ は た い て い の 場 合 に は 短 す ぎ る と 思 わ れ る 。
tcp_rfc1337 (ブ ー ル 値 ; デ フ ォ ル ト : 無 効 ; Linux 2.2 以 降 )
TCP の 動 作 を RFC 1337 に 準 拠 さ せ る 。 無 効 に す る と 、 TIME_WAIT 状 態 の と き に RST が 受 信 さ れ た 場 合 、 TIME_WAIT 期 間 の 終 了 を 待 た ず に そ の ソ ケ ッ ト を 直 ち に ク ロ ー ズ す る 。
tcp_rmem (Linux 2.4 以 降 )
こ れ は 3 つ の 整 数 [min, default, max] か ら な る ベ ク ト ル 値 で あ る 。 こ れ ら は TCP が 受 信 バ ッ フ ァ ー サ イ ズ を 調 整 す る た め に 用 い ら れ る 。 TCP は 、 シ ス テ ム で 利 用 で き る メ モ リ ー に 応 じ て 、 受 信 バ ッ フ ァ ー の サ イ ズ を こ れ ら の 変 数 の 範 囲 で 以 下 に 示 す デ フ ォ ル ト か ら 動 的 に 調 整 す る 。
|
min |
各 TCP ソ ケ ッ ト が 用 い る 受 信 バ ッ フ ァ ー の 最 小 サ イ ズ 。 デ フ ォ ル ト 値 は シ ス テ ム の ペ ー ジ サ イ ズ で あ る (Linux 2.4 で は 、 デ フ ォ ル ト 値 は 4 K バ イ ト で 、 メ モ リ ー の 少 な い シ ス テ ム で は PAGE_SIZE バ イ ト に 減 ら さ れ る )。 こ の 値 は 、 メ モ リ ー 圧 迫 モ ー ド に お い て も 、 こ の サ イ ズ の 割 り 当 て が 成 功 す る こ と を 保 証 す る た め に 用 い ら れ る 。 こ れ は 、 SO_RCVBUF を 用 い て ソ ケ ッ ト の 最 低 受 信 バ ッ フ ァ ー サ イ ズ を 宣 言 す る 際 に は 用 い ら れ な い 。 |
default
TCP ソ ケ ッ ト の 受 信 バ ッ フ ァ ー の デ フ ォ ル ト サ イ ズ 。 こ の 値 は 、 す べ て の プ ロ ト コ ル に 対 し て 定 義 さ れ て い る 、 ジ ェ ネ リ ッ ク な グ ロ ー バ ル の デ フ ォ ル ト バ ッ フ ァ ー サ イ ズ net.core.rmem_default よ り 優 先 さ れ る 。 デ フ ォ ル ト 値 は 87380 バ イ ト で あ る (Linux 2.4 で は 、 メ モ リ ー の 少 な い シ ス テ ム の 場 合 43689 ま で 減 ら さ れ る )。 大 き な 受 信 バ ッ フ ァ ー サ イ ズ が 必 要 な 場 合 は 、 こ の 値 を 増 や す べ き で あ る (す べ て の ソ ケ ッ ト に 影 響 す る )。 大 き な TCP ウ ィ ン ド ウ を 用 い る に は 、 net.ipv4.tcp_window_scaling を 有 効 に し て お か な け れ ば な ら な い (デ フ ォ ル ト は 有 効 )。
|
max |
各 TCP ソ ケ ッ ト で 用 い る 受 信 バ ッ フ ァ ー の 最 大 サ イ ズ 。 こ の 値 よ り も グ ロ ー バ ル の net.core.rmem_max が 優 先 さ れ る 。 こ れ は 、 SO_RCVBUF を 用 い て ソ ケ ッ ト の 受 信 バ ッ フ ァ ー サ イ ズ 制 限 を 宣 言 す る 際 に は 用 い ら れ な い 。 デ フ ォ ル ト 値 は 以 下 の 式 で 計 算 さ れ る 。 |
max(87380, min(4 MB, tcp_mem [1]*PAGE_SIZE/128))
(Linux 2.4 で は 、 デ フ ォ ル ト 値 は 87380*2 バ イ ト で 、 メ モ リ ー の 少 な い シ ス テ ム で は 87380 ま で 減 ら さ れ る 。 )
tcp_sack (ブ ー ル 値 ; デ フ ォ ル ト : 有 効 ; Linux 2.2 以 降 )
RFC 2018 の TCP Selective Acknowledgements を 有 効 に す る 。
tcp_slow_start_after_idle
(ブ ー ル 値 ; デ フ
ォ ル ト : 有 効 ; Linux
2.6.18
以 降 )
有 効 に す る と 、 RFC 2861 の 動 作 が 行 わ れ 、 ア イ ド ル 時 間 経 過 後 に 輻 輳 ウ ィ ン ド ウ を タ イ ム ア ウ ト さ せ る 。 ア イ ド ル 時 間 は 現 在 の RTO (再 送 タ イ ム ア ウ ト ) で 定 義 さ れ る 。 無 効 に す る と 、 輻 輳 ウ ィ ン ド ウ は ア イ ド ル 時 間 経 過 後 も タ イ ム ア ウ ト さ れ な い 。
tcp_stdurg (ブ ー ル 値 ; デ フ ォ ル ト : 無 効 ; Linux 2.2 以 降 )
こ の オ プ シ ョ ン を 有 効 に す る と 、 TCP 緊 急 ポ イ ン タ ー (urgent-pointer) フ ィ ー ル ド を RFC 1122 に 従 っ た 解 釈 を 行 う 。 こ の 解 釈 に 従 う と 、 緊 急 ポ イ ン タ ー は 緊 急 デ ー タ の 最 後 の バ イ ト を 指 す 。 こ の オ プ シ ョ ン を 無 効 に す る と 、 緊 急 ポ イ ン タ ー の 解 釈 が BSD 互 換 の 方 法 で 行 わ れ る : 緊 急 ポ イ ン タ ー は 緊 急 デ ー タ の 後 の 最 初 の バ イ ト を 指 す 。 こ の オ プ シ ョ ン を 有 効 に す る と 、 相 互 運 用 性 に 問 題 が 生 じ る か も し れ な い 。
tcp_syn_retries (integer; default: 6; Linux 2.2 以 降 )
The maximum number of times initial SYNs for an active TCP connection attempt will be retransmitted. This value should not be higher than 255. The default value is 6, which corresponds to retrying for up to approximately 127 seconds. Before Linux 3.7, the default value was 5, which (in conjunction with calculation based on other kernel parameters) corresponded to approximately 180 seconds.
tcp_synack_retries (integer; default: 5; Linux 2.2 以 降 )
passive な TCP 接 続 の SYN/ACK セ グ メ ン ト で 再 送 を 試 み る 最 大 数 。 こ の 数 値 は 255 よ り も 大 き く す べ き で は な い 。
tcp_syncookies (integer; default: 1; Linux 2.2 以 降 )
Enable TCP syncookies. The kernel must be compiled with CONFIG_SYN_COOKIES . The syncookies feature attempts to protect a socket from a SYN flood attack. This should be used as a last resort, if at all. This is a violation of the TCP protocol, and conflicts with other areas of TCP such as TCP extensions. It can cause problems for clients and relays. It is not recommended as a tuning mechanism for heavily loaded servers to help with overloaded or misconfigured conditions. For recommended alternatives see tcp_max_syn_backlog , tcp_synack_retries , and tcp_abort_on_overflow . Set to one of the following values:
|
0 |
Disable TCP syncookies. |
||
|
1 |
Send out syncookies when the syn backlog queue of a socket overflows. |
||
|
2 |
(since Linux 3.12) Send out syncookies unconditionally. This can be useful for network testing. |
tcp_timestamps (integer; default: 1; Linux 2.2 以 降 )
Set to one of the following values to enable or disable RFC 1323 TCP timestamps:
|
0 |
timestamps を 有 効 に す る 。 |
||
|
1 |
Enable timestamps as defined in RFC1323 and use random offset for each connection rather than only using the current time. |
||
|
2 |
As for the value 1, but without random offsets. Setting tcp_timestamps to this value is meaningful since Linux 4.10. |
tcp_tso_win_divisor (integer; default: 3; Linux 2.6.9 以 降 )
こ の パ ラ メ ー タ ー は 、 一 つ の TCP Segmentation Offload (TSO) フ レ ー ム で 消 費 で き る 輻 輳 ウ ィ ン ド ウ の 割 合 (パ ー セ ン ト ) を 制 御 す る 。 バ ー ス ト 性 と 、 ど れ だ け 大 き な TSO フ レ ー ム を 構 築 す る か の は ト レ ー ド オ フ で あ り 、 こ の パ ラ メ ー タ ー は そ の 度 合 い を 設 定 す る 。
tcp_tw_recycle (ブ ー ル 値 ; デ フ ォ ル ト : 無 効 ; Linux 2.4 以 降 4.11 ま で )
Enable fast recycling of TIME_WAIT sockets. Enabling this option is not recommended as the remote IP may not use monotonically increasing timestamps (devices behind NAT, devices with per-connection timestamp offsets). See RFC 1323 (PAWS) and RFC 6191.
tcp_tw_reuse (ブ ー ル 値 ; デ フ ォ ル ト : 無 効 ; Linux 2.4.19/2.6 以 降 )
プ ロ ト コ ル の 面 か ら 見 て 問 題 な い 場 合 に 新 規 コ ネ ク シ ョ ン に TIME_WAIT 状 態 の ソ ケ ッ ト を 再 利 用 す る こ と を 許 可 す る 。 技 術 的 に 詳 し い 人 の 助 言 や 要 請 な し に こ の オ プ シ ョ ン を 変 更 す べ き で は な い 。
tcp_vegas_cong_avoid
(ブ ー ル 値 ; デ フ
ォ ル ト : 無 効 ; Linux 2.2
か ら 2.6.13
ま で )
TCP Vegas 輻 輳 制 御 ア ル ゴ リ ズ ム を 有 効 に す る 。 TCP Vegas は 帯 域 を 推 測 す る こ と で 輻 輳 の 起 こ り 始 め を 予 想 す る よ う に TCP の 送 信 側 の み に 変 更 を 加 え た も の で あ る 。 TCP Vegas は 輻 輳 ウ ィ ン ド ウ を 修 正 す る こ と で 、 送 信 レ ー ト を 調 整 す る 。 TCP Vegas は TCP Reno と 比 べ て パ ケ ッ ト ロ ス は 少 な い が 、 TCP Reno ほ ど 積 極 的 な 挙 動 は し な い 。
tcp_westwood
(ブ
ー ル 値 ; デ フ ォ
ル ト : 無 効 ; Linux 2.4.26/2.6.3
か ら
2.6.13 ま で )
TCP Westwood+ 輻 輳 制 御 ア ル ゴ リ ズ ム を 有 効 に す る 。 TCP Westwood+ は TCP 輻 輳 制 御 の 性 能 を 最 適 化 す る よ う に TCP Reno の プ ロ ト コ ル ス タ ッ ク の 送 信 側 の み に 修 正 を 加 え た も の で あ る 。 輻 輳 が 起 こ っ た 後 で 、 輻 輳 ウ ィ ン ド ウ や slow start の 閾 値 を 通 信 両 端 間 の 帯 域 の 推 測 に 基 づ い て 設 定 す る 。 こ の 推 測 を 使 っ て 、 TCP Westwood+ は 輻 輳 が 発 生 し た 時 に 使 っ て い た 帯 域 を 考 慮 に 入 れ た slow start の 閾 値 と 輻 輳 ウ ィ ン ド ウ を 設 定 す る 。 TCP Westwood+ は 、 有 線 ネ ッ ト ワ ー ク に お け る TCP Reno の 公 平 性 (fairness) と 、 無 線 リ ン ク で の ス ル ー プ ッ ト を 大 き く 向 上 す る 。
tcp_window_scaling (ブ ー ル 値 ; デ フ ォ ル ト : 有 効 ; Linux 2.2 以 降 )
RFC 1323 の TCP ウ ィ ン ド ウ ス ケ ー リ ン グ を 有 効 に す る 。 こ の 機 能 を 用 い る と 、 接 続 先 が 対 応 し て い れ ば 、 TCP 接 続 で 大 き な (64 K 以 上 の ) ウ ィ ン ド ウ が 使 え る よ う に な る 。 通 常 は TCP ヘ ッ ダ ー の ウ イ ン ド ウ 長 フ ィ ー ル ド は 16 ビ ッ ト な の で 、 ウ ィ ン ド ウ サ イ ズ は 64 K バ イ ト 以 下 に 限 ら れ る 。 も っ と 大 き な ウ ィ ン ド ウ を 使 い た い 場 合 は 、 ア プ リ ケ ー シ ョ ン は ソ ケ ッ ト バ ッ フ ァ ー の サ イ ズ を 増 や し て 、 ウ ィ ン ド ウ ス ケ ー リ ン グ の オ プ シ ョ ン を 利 用 す れ ば よ い 。 tcp_window_scaling を 無 効 に し て い る と 、 TCP は 他 端 と の 接 続 設 定 の 際 に 、 ウ ィ ン ド ウ ス ケ ー リ ン グ の ネ ゴ シ エ ー シ ョ ン を 行 な わ な い 。
tcp_wmem (Linux 2.4 以 降 )
こ れ は 3 つ の 整 数 [min, default, max] か ら な る ベ ク ト ル 値 で あ る 。 こ れ ら は TCP が 送 信 バ ッ フ ァ ー サ イ ズ を 調 整 す る た め に 用 い ら れ る 。 TCP は 、 シ ス テ ム で 利 用 で き る メ モ リ ー に 応 じ て 、 送 信 バ ッ フ ァ ー の サ イ ズ を こ れ ら の 変 数 の 範 囲 で 以 下 に 示 す デ フ ォ ル ト か ら 動 的 に 調 整 す る 。
|
min |
各 TCP ソ ケ ッ ト が 用 い る 送 信 バ ッ フ ァ ー の 最 小 サ イ ズ 。 デ フ ォ ル ト 値 は シ ス テ ム の ペ ー ジ サ イ ズ で あ る (Linux 2.4 で は 、 デ フ ォ ル ト 値 は 4 K で あ る )。 こ の 値 は 、 メ モ リ ー 圧 迫 モ ー ド に お い て も 、 こ の サ イ ズ 以 下 の 割 り 当 て が 成 功 す る こ と を 保 証 す る た め に 用 い ら れ る 。 こ れ は 、 SO_SNDBUF を 用 い て ソ ケ ッ ト の 最 低 送 信 バ ッ フ ァ ー サ イ ズ を 宣 言 す る 際 に は 用 い ら れ な い 。 |
default
TCP ソ ケ ッ ト の 送 信 バ ッ フ ァ ー の デ フ ォ ル ト サ イ ズ 。 こ の 値 は 、 す べ て の プ ロ ト コ ル に 対 し て 定 義 さ れ て い る 、 ジ ェ ネ リ ッ ク な グ ロ ー バ ル の デ フ ォ ル ト バ ッ フ ァ ー サ イ ズ /proc/sys/net/core/wmem_default よ り 優 先 さ れ る 。 デ フ ォ ル ト 値 は 16 K バ イ ト で あ る 。 大 き な 送 信 バ ッ フ ァ ー サ イ ズ が 必 要 な 場 合 は 、 こ の 値 を 増 や す べ き で あ る (す べ て の ソ ケ ッ ト に 影 響 す る )。 大 き な TCP ウ ィ ン ド ウ を 用 い る に は 、 /proc/sys/net/ipv4/tcp_window_scaling を 0 以 外 の 値 (デ フ ォ ル ト 値 ) に し て お か な け れ ば な ら な い 。
|
max |
各 TCP ソ ケ ッ ト で 用 い る 送 信 バ ッ フ ァ ー の 最 大 サ イ ズ 。 こ の 値 よ り も /proc/sys/net/core/wmem_max が 優 先 さ れ る 。 こ れ は SO_SNDBUF を 用 い て ソ ケ ッ ト の 送 信 バ ッ フ ァ ー サ イ ズ 制 限 を 宣 言 す る 際 に は 用 い ら れ な い 。 デ フ ォ ル ト 値 は 以 下 の 式 で 計 算 さ れ る 。 |
max(65536, min(4 MB, tcp_mem [1]*PAGE_SIZE/128))
(Linux 2.4 で は 、 デ フ ォ ル ト 値 は 128 K バ イ ト で 、 メ モ リ ー の 少 な い シ ス テ ム で は 64 K に ま で 減 ら さ れ る 。 )
tcp_workaround_signed_windows
(ブ ー ル 値 ; デ フ
ォ ル ト : 無 効 ; Linux
2.6.26
以 降 )
有 効 に す る と 、 ウ ィ ン ド ウ ス ケ ー リ ン グ オ プ シ ョ ン を 受 信 し な い の は 、 接 続 相 手 の TCP が 壊 れ て い る と 考 え 、 ウ ィ ン ド ウ を 符 号 付 き の 量 と み な す 。 無 効 に す る と 、 接 続 相 手 か ら ウ ィ ン ド ウ ス ケ ー リ ン グ オ プ シ ョ ン を 受 信 し な か っ た 場 合 で あ っ て も 、 接 続 相 手 の TCP が 壊 れ て い る と は み な さ な い 。
ソ ケ ッ ト オ プ シ ョ ン
TCP ソ ケ ッ ト の オ プ シ ョ ン は 、 オ プ シ ョ ン レ ベ ル 引 数 に IPPROTO_TCP を 指 定 し た setsockopt (2) で 設 定 で き 、 getsockopt (2) で 取 得 で き る 。 注 釈 が な い 限 り 、 optval は int へ の ポ イ ン タ ー で あ る 。 さ ら に 、 ほ と ん ど の IPPROTO_IP ソ ケ ッ ト オ プ シ ョ ン も TCP ソ ケ ッ ト に 対 し て 有 効 で あ る 。 詳 細 は ip (7) を 見 よ 。
Following is a
list of TCP-specific socket options. For details of some
other socket options that are also applicable for TCP
sockets, see
socket
(7).
TCP_CONGESTION
(Linux 2.6.13 以 降 )
こ の オ プ シ ョ ン の 引 数 は 文 字 列 で あ る 。 こ の オ プ シ ョ ン を 使 う と 、 呼 び 出 し 元 が ソ ケ ッ ト 単 位 に 使 用 す る TCP 輻 輳 制 御 ア ル ゴ リ ズ ム を 設 定 す る こ と が で き る 。 非 特 権 プ ロ セ ス が 使 用 で き る ア ル ゴ リ ズ ム は (上 述 の ) tcp_allowed_congestion_control で 設 定 さ れ た も の だ け に 制 限 さ れ る 。 特 権 プ ロ セ ス ( CAP_NET_ADMIN ) は 任 意 の 輻 輳 制 御 ア ル ゴ リ ズ ム を 選 択 す る こ と が で き る (上 記 の tcp_available_congestion_control の 説 明 を 参 照 )。
TCP_CORK (Linux 2.2 以 降 )
セ ッ ト さ れ る と 、 partial フ レ ー ム を 送 信 し な い 。 こ の オ プ シ ョ ン が 解 除 さ れ る と 、 キ ュ ー イ ン グ さ れ た partial フ レ ー ム が 送 ら れ る 。 こ れ は sendfile (2) を 呼 ぶ 前 に ヘ ッ ダ ー を 前 置 し た り 、 ス ル ー プ ッ ト を 最 適 化 し た い 場 合 に 便 利 で あ る 。 現 在 の 実 装 で は 、 TCP_CORK で 出 力 を 抑 え る こ と が で き る 時 間 の 上 限 は 200 ミ リ 秒 で あ る 。 こ の 上 限 に 達 す る と 、 キ ュ ー イ ン グ さ れ た デ ー タ は 自 動 的 に 送 信 さ れ る 。 Linux 2.5.71 以 降 に お い て の み 、 こ の オ プ シ ョ ン を TCP_NODELAY と 同 時 に 用 い る こ と が で き る 。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_DEFER_ACCEPT (Linux 2.4 以 降 )
こ れ を 用 い る と 、 リ ス ナ は デ ー タ が ソ ケ ッ ト に 到 着 し た 時 の み 目 覚 め る よ う に な る 。 整 数 値 (秒 ) を と り 、 TCP が 接 続 を 完 了 し よ う と 試 み る 回 数 を 制 限 で き る 。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_INFO (Linux 2.4 以 降 )
こ の ソ ケ ッ ト の 情 報 を 収 集 す る の に 用 い る 。 カ ー ネ ル は /usr/include/linux/tcp.h フ ァ イ ル で 定 義 さ れ て い る struct tcp_info を 返 す 。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_KEEPCNT (Linux 2.4 以 降 )
接 続 を 落 と す 前 に TCP が 試 み る keepalive プ ロ ー ブ の 最 大 回 数 。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_KEEPIDLE (Linux 2.4 以 降 )
こ の 時 間 (秒 単 位 ) を 越 え て 接 続 が ア イ ド ル 状 態 に 留 ま っ て い る と 、 こ の ソ ケ ッ ト に SO_KEEPALIVE ソ ケ ッ ト オ プ シ ョ ン が 設 定 さ れ て い る 場 合 、 TCP は keepalive プ ロ ー ブ を 送 り は じ め る 。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_KEEPINTVL (Linux 2.4 以 降 )
各 keepalive プ ロ ー ブ の 間 隔 (秒 単 位 )。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_LINGER2 (Linux 2.4 以 降 )
orphan さ れ た FIN_WAIT2 状 態 の ソ ケ ッ ト の 寿 命 。 こ の オ プ シ ョ ン を 用 い る と 、 シ ス テ ム 全 体 に 適 用 さ れ る フ ァ イ ル /proc/sys/net/ipv4/tcp_fin_timeout の 値 を 、 こ の ソ ケ ッ ト に 対 し て の み 変 更 で き る 。 socket (7) レ ベ ル の オ プ シ ョ ン SO_LINGER と 混 同 し な い こ と 。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_MAXSEG
送 出 TCP パ ケ ッ ト の 最 大 セ グ メ ン ト サ イ ズ 。 Linux 2.2 以 前 と Linux 2.6.28 以 降 で は 、 こ の オ プ シ ョ ン を 接 続 確 立 の 前 に 設 定 す る と 、 初 期 パ ケ ッ ト で 他 端 に ア ナ ウ ン ス す る MSS の 値 も 変 化 す る 。 イ ン タ ー フ ェ ー ス の MTU よ り も 大 き な (あ る い は 大 き く な っ て し ま っ た ) 値 は 効 果 を 持 た な い 。 ま た TCP は 、 こ の 値 よ り も 最 小 ・ 最 大 の 制 限 の 方 を 優 先 す る 。
TCP_NODELAY
設 定 す る と Nagle ア ル ゴ リ ズ ム を 無 効 に す る 。 す な わ ち 、 デ ー タ 量 が 少 な い 場 合 で も 各 セ グ メ ン ト は 可 能 な 限 り 早 く 送 信 さ れ る 。 設 定 さ れ て い な い と 、 送 信 す る 分 だ け 溜 ま る ま で デ ー タ は バ ッ フ ァ ー さ れ 、 小 さ な パ ケ ッ ト を 頻 繁 に 送 ら ず に す み 、 ネ ッ ト ワ ー ク を 有 効 に 利 用 で き る 。 こ の オ プ シ ョ ン は TCP_CORK に よ り 上 書 き さ れ る 。 し か し な が ら 、 TCP_CORK が 設 定 さ れ て い る 場 合 で あ っ て も 、 こ の オ プ シ ョ ン を 設 定 す る と 、 送 信 待 ち の 出 力 を 明 示 的 に 掃 き 出 す (flush) こ と に な る 。
TCP_QUICKACK (Linux 2.4.4 以 降 )
設 定 さ れ て い る と quickack モ ー ド を 有 効 に し 、 ク リ ア さ れ る と 無 効 に す る 。 通 常 の TCP 動 作 で は ack は 必 要 に 応 じ て 遅 延 さ れ る の に 対 し 、 quickack モ ー ド で は ack は す ぐ に 送 信 さ れ る 。 こ の フ ラ グ は 永 続 的 な も の で は な く 、 quickack モ ー ド か ら /モ ー ド へ 切 り 替 え る た め の も の で あ る 。 こ れ 以 降 の TCP プ ロ ト コ ル の 動 作 に よ っ て は 、 内 部 の プ ロ ト コ ル 処 理 や 、 遅 延 ack タ イ ム ア ウ ト の 発 生 、 デ ー タ 転 送 な ど の 要 因 に よ っ て 、 再 び quickack か ら 出 た り 入 っ た り す る 。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_SYNCNT (Linux 2.4 以 降 )
接 続 の 試 行 を 中 止 さ せ る 前 に TCP が 送 る SYN 再 送 数 を 設 定 す る 。 こ れ は 255 よ り 大 き く は で き な い 。 移 植 性 の 必 要 な プ ロ グ ラ ム で は こ の オ プ シ ョ ン を 用 い る べ き で は な い 。
TCP_USER_TIMEOUT (Linux 2.6.37 以 降 )
こ の オ プ シ ョ ン は unsigned int 型 の 引 数 を 取 る 。 値 が 0 よ り 大 き い 場 合 、 そ の 値 は 、 ど の く ら い の 時 間 、 送 信 さ れ た デ ー タ が ACK を 受 信 し な い ま ま の 状 態 が 続 く と 、 TCP が そ の 接 続 を 強 制 的 に ク ロ ー ズ し 、 ア プ リ ケ ー シ ョ ン に ETIMEDOUT を 返 す か を 、 ミ リ 秒 単 位 で 指 定 す る 。 オ プ シ ョ ン の 値 が 0 の 場 合 、 TCP は シ ス テ ム の デ フ ォ ル ト 値 を 使 用 す る 。
ユ ー ザ ー タ イ ム ア ウ ト を 長 く す る と 、 通 信 の 両 端 で の 接 続 性 が な い 場 合 で も 長 い 時 間 TCP 接 続 が 維 持 さ れ る よ う に な る 。 ユ ー ザ ー タ イ ム ア ウ ト を 短 く す る と 、 ア プ リ ケ ー シ ョ ン は 必 要 で あ れ ば 「 早 く 失 敗 」 で き る よ う に な る 。 設 定 し な か っ た 場 合 は 、 通 常 の WAN 環 境 で は 現 在 の シ ス テ ム の デ フ ォ ル ト の 20 分 で 失 敗 す る こ と に な る 。
こ の オ プ シ ョ ン は TCP 接 続 が ど の 状 態 の 場 合 で も 設 定 す る こ と が で き る が 、 接 続 が 同 期 状 態 (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK) の 場 合 の み 効 果 が あ る 。 ま た 、 TCP keepalive ( SO_KEEPALIVE ) オ プ シ ョ ン と と も に 使 用 さ れ た 場 合 、 TCP_USER_TIMEOUT は keepalive 失 敗 に よ る 接 続 ク ロ ー ズ を 判 定 す る た め の keepalive 値 を 上 書 き す る 。
こ の オ プ シ ョ ン は TCP が パ ケ ッ ト を 再 送 す る 際 や keepalive プ ロ ー ブ を 送 信 す る 際 に は 影 響 を 及 ぼ さ な い 。
他 の 多 く の オ プ シ ョ ン 同 様 、 リ ッ ス ン 中 の ソ ケ ッ ト で こ の オ プ シ ョ ン が セ ッ ト さ れ て い れ ば accept (2) が 返 す ソ ケ ッ ト に オ プ シ ョ ン が 継 承 さ れ る 。
ユ ー ザ ー タ イ ム ア ウ ト 機 能 の 詳 細 は RFC 793 と RFC 5482 ("TCP User Timeout Option") に 書 か れ て い る 。
TCP_WINDOW_CLAMP (Linux 2.4 以 降 )
広 報 す る ウ ィ ン ド ウ の サ イ ズ を こ の 値 に 固 定 す る 。 カ ー ネ ル に よ っ て 最 小 サ イ ズ は SOCK_MIN_RCVBUF/2 に 制 限 さ れ て い る 。 こ の オ プ シ ョ ン は 移 植 性 の 必 要 な コ ー ド で は 用 い る べ き で な い 。
ソ ケ ッ ト API
TCP は 帯 域 外 デ ー タ (out-of-band data) を 限 定 的 に サ ポ ー ト し て お り 、 (1 バ イ ト の ) 緊 急 デ ー タ と い う 形 で あ る 。 つ ま り Linux に お い て は 、 接 続 先 が (新 し い や り 方 の ) 帯 域 外 デ ー タ を 送 っ て き た 場 合 、 (古 い や り 方 の ) 緊 急 デ ー タ は 通 常 の デ ー タ と し て ス ト リ ー ム に 挿 入 さ れ る こ と に な る (こ れ は SO_OOBINLINE が セ ッ ト さ れ て い る 場 合 で も 同 様 で あ る )。 こ れ は BSD ベ ー ス の ス タ ッ ク と は 異 な る 。
Linux は 、 デ フ ォ ル ト で は urgent ポ イ ン タ ー フ ィ ー ル ド の 解 釈 に BSD 互 換 の 方 法 を 用 い る 。 こ れ は RFC 1122 に 反 し て い る が 、 他 の ス タ ッ ク と 同 時 に 動 作 さ せ る に は や む を 得 な い 。 こ れ は /proc/sys/net/ipv4/tcp_stdurg に よ っ て 変 更 で き る 。
recv (2) の MSG_PEEK フ ラ グ を 使 う と 、 帯 域 外 デ ー タ を 覗 き 見 す る こ と が で き る 。
Linux 2.4 以 降 で は 、 recv (2) (や recvmsg (2)) の flags 引 数 に MSG_TRUNC を 使 う こ と が で き る 。 こ の フ ラ グ を 指 定 す る と 、 受 信 デ ー タ は 、 呼 び 出 し 元 か ら 渡 さ れ た バ ッ フ ァ ー に コ ピ ー さ れ て 返 さ れ る の で は な く 、 廃 棄 さ れ る よ う に な る 。 Linux 2.4.4 以 降 で は 、 MSG_TRUNC を 、 帯 域 外 デ ー タ を 受 信 す る た め の MSG_OOB と 組 み 合 わ せ て 使 っ た 場 合 に も 、 こ れ と 同 じ 効 果 を 持 つ よ う に な っ て い る 。
ioctl
以 下 の ioctl (2) 呼 び 出 し は value に 情 報 を 入 れ て 返 す 。 正 し い 書 式 は 以 下 の 通 り 。
int
value
;
error
= ioctl(
tcp_socket
,
ioctl_type
, &
value
);
ioctl_type
は 以 下 の い ず
れ か 一 つ で あ
る :
SIOCINQ
受 信 バ ッ フ ァ ー の キ ュ ー に あ る 、 ま だ 読 ん で い な い デ ー タ の 量 を 返 す 。 ソ ケ ッ ト は LISTEN 状 態 に あ っ て は な ら ず 、 さ も な い と エ ラ ー ( EINVAL ) が 返 る 。 SIOCINQ は <linux/sockios.h> で 定 義 さ れ て い る 。 代 わ り に 、 <sys/ioctl.h> で 定 義 さ れ て い る 、 同 義 語 の FIONREAD を 使 う こ と も で き る 。
SIOCATMARK
受 信 デ ー タ ス ト リ ー ム が 緊 急 マ ー ク の 位 置 で あ れ ば 、 真 を 返 す (つ ま り value が 0 以 外 )。
SO_OOBINLINE ソ ケ ッ ト オ プ シ ョ ン が 設 定 さ れ て い て 、 SIOCATMARK が 真 を 返 し た 場 合 、 次 の ソ ケ ッ ト か ら の 読 み 込 み で は 緊 急 デ ー タ が 返 さ れ る 。 SO_OOBINLINE ソ ケ ッ ト オ プ シ ョ ン が 設 定 さ れ て お ら ず 、 SIOCATMARK が 真 を 返 し た 場 合 、 次 の ソ ケ ッ ト か ら の 読 み 込 み で は 緊 急 デ ー タ に 続 く デ ー タ が 返 さ れ る (実 際 に 緊 急 デ ー タ を 読 み 込 む に は recv(MSG_OOB) と フ ラ グ を つ け る 必 要 が あ る )。
デ ー タ の 一 回 の 読 み 込 み で は 緊 急 マ ー ク を 跨 が っ て の 読 み 込 み は 行 わ れ な い 。 ア プ リ ケ ー シ ョ ン が 緊 急 デ ー タ の 存 在 を ( exceptfds 引 数 を 使 っ て ) select (2) 経 由 ま た は SIGURG シ グ ナ ル の 配 送 を 通 じ て 知 ら さ れ た 場 合 、 SIOCATMARK の チ ェ ッ ク と 読 み 込 み (何 バ イ ト 読 み 込 み 要 求 を し て も よ い ) を SIOCATMARK が 偽 を 返 さ な く な る ま で 繰 り 返 し 行 う こ と で 、 緊 急 マ ー ク の 位 置 ま で 読 み 進 め る こ と が で き る 。
SIOCOUTQ
ソ ケ ッ ト の 送 信 キ ュ ー に 残 っ て い る 未 送 信 デ ー タ の 量 を 返 す 。 ソ ケ ッ ト は LISTEN 状 態 に あ っ て は な ら な い 。 LISTEN 状 態 の 場 合 に は エ ラ ー ( EINVAL ) と な る 。 SIOCOUTQ は <linux/sockios.h> で 定 義 さ れ て い る 。 代 わ り に 、 <sys/ioctl.h> で 定 義 さ れ て い る 、 同 義 語 の TIOCOUTQ を 使 う こ と も で き る 。
エ ラ ー 処 理
ネ ッ ト ワ ー ク エ ラ ー が 起 こ る と 、 TCP は パ ケ ッ ト の 再 送 を 試 み る 。 何 回 か や っ て も 成 功 し な け れ ば 、 こ の 接 続 に 対 し て ETIMEOUT エ ラ ー か 最 後 に 受 信 し た エ ラ ー が 返 さ れ る 。
ア プ リ ケ ー シ ョ ン に よ っ て は 、 も っ と 早 く エ ラ ー を 知 ら せ て ほ し い 場 合 が あ る 。 こ れ に は IPPROTO_IP レ ベ ル の IP_RECVERR ソ ケ ッ ト オ プ シ ョ ン を 用 い る と 良 い 。 こ の オ プ シ ョ ン が 有 効 に な っ て い る と 、 到 着 し た エ ラ ー は す べ て た だ ち に ユ ー ザ ー プ ロ グ ラ ム に 渡 さ れ る 。 こ の オ プ シ ョ ン は 慎 重 に 用 い る こ と — ル ー テ ィ ン グ の 変 更 な ど 、 通 常 あ り う る ネ ッ ト ワ ー ク 状 態 に 対 し て TCP を よ り 脆 弱 に し て し ま う 。
エ ラ ー
EAFNOTSUPPORT
sin_family に 渡 さ れ た ソ ケ ッ ト ア ド レ ス の タ イ プ が AF_INET で は な か っ た 。
|
EPIPE |
接 続 先 が 予 期 し な か っ た か た ち で ソ ケ ッ ト を ク ロ ー ズ し た 。 ま た は シ ャ ッ ト ダ ウ ン さ れ た ソ ケ ッ ト に 読 み 込 み が 実 行 さ れ た 。 |
ETIMEDOUT
接 続 先 が 、 何 回 か デ ー タ を 再 送 し て も 反 応 し な い 。
ip (7) で 定 義 さ れ て い る エ ラ ー や 、 ジ ェ ネ リ ッ ク な ソ ケ ッ ト 層 に お け る エ ラ ー も TCP に 返 さ れ る こ と が あ る 。
バ ー ジ ョ ン
Explicit Congestion Notification、 zero-copy の sendfile (2)、 並 び 替 え の サ ポ ー ト 、 SACK 拡 張 (DSACK) な ど の サ ポ ー ト は 2.4 で 導 入 さ れ た 。 フ ォ ワ ー ド 確 認 (FACK)、 TIME_WAIT リ サ イ ク ル 、 接 続 ご と の keepalive に 対 す る ソ ケ ッ ト オ プ シ ョ ン は 2.3 で 導 入 さ れ た 。
バ グ
ま だ 説 明 さ れ て い な い エ ラ ー が あ る 。
IPv6 に 関 す る 記 述 が な い 。
関 連 項 目
accept (2), bind (2), connect (2), getsockopt (2), listen (2), recvmsg (2), sendfile (2), sendmsg (2), socket (2), ip (7), socket (7)
The kernel source file Documentation/networking/ip-sysctl.txt .
RFC 793:
TCP の 仕 様 。
RFC 1122: TCP の 要 求 事
項 と Nagle ア ル ゴ リ
ズ ム の 記 述 。
RFC 1323: TCP の タ イ ム
ス タ ン プ ・ ウ
ィ ン ド ウ ス ケ
ー リ ン グ 各 オ
プ シ ョ ン 。
RFC 1337: TIME_WAIT assassination hazard に
関 す る 説 明 。
RFC 3168: Explicit Congestion Notification に
関 す る 説 明 。
RFC 2581: TCP 輻 輳 制 御
ア ル ゴ リ ズ ム
。
RFC 2018 と RFC 2883: SACK と そ
の 拡 張 。
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。