tcp

Autres langues

Langue: ja

Version: 2005-06-15 (openSuse - 09/10/07)

Section: 7 (Divers)

̾Á°

tcp - TCP ¥×¥í¥È¥³¥ë

½ñ¼°

#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
tcp_socket = socket(PF_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)¡¢ ¥¦¥£¥ó¥É¥¦¥¹¥±¡¼¥ê¥ó¥°¡¢¥¿¥¤¥à¥¹¥¿¥ó¥×¤Ê¤É¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£ ¥¦¥£¥ó¥É¥¦¥¹¥±¡¼¥ê¥ó¥°¤òÍøÍѤ¹¤ë¤È¡¢ÃÙ±ä¤Þ¤¿¤ÏÂÓ°è¤ÎÂ礭¤ÊÀܳ¤Ç¡¢ (64K °Ê¾å¤Î) µðÂç¤Ê TCP ¥¦¥£¥ó¥É¥¦¤òÍѤ¤¤ë¤³¤È¤¬²Äǽ¤È¤Ê¤ë¡£ ¤³¤ì¤òÍѤ¤¤ë¤Ë¤Ï¡¢Á÷¼õ¿®¤Î¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤òÂ礭¤¯¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤Ï sysctl ÊÑ¿ô net.ipv4.tcp_wmem ¤È net.ipv4.tcp_rmem ¤òÍѤ¤¤Æ¡¢¥·¥¹¥Æ¥àÁ´ÂΤÇÂ礭¤¯¤Ç¤­¤ë¡£ ¤¢¤ë¤¤¤Ï¡¢¸Ä¡¹¤Î¥½¥±¥Ã¥È¤Î¤ß¤òÂ礭¤¯¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢ SO_SNDBUF ¤ä SO_RCVBUF ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤Æ setsockopt(2) ¥³¡¼¥ë¤òÍѤ¤¤ÆÀßÄꤹ¤ì¤Ð¤è¤¤¡£

SO_SNDBUF ¤ä SO_RCVBUF ¤Î¥á¥«¥Ë¥º¥à¤ÇÀë¸À¤µ¤ì¤ë¥½¥±¥Ã¥È¥Ð¥Ã¥Õ¥¡¤ÎºÇÂ祵¥¤¥º¤Ï¡¢ net.core.rmem_max ¤ä net.core.wmem_max sysctl ¤Ç»ØÄꤵ¤ì¤¿¥·¥¹¥Æ¥à¤È¤·¤Æ¤ÎÀ©¸ÂÃͤòĶ¤¨¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£ TCP ¤Ï¼ÂºÝ¤Ë¤Ï setsockopt(2) ¥³¡¼¥ë¤¬Í׵ᤷ¤¿¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤ÎÆóÇܤò³ä¤êÅö¤Æ¤ë¡£ ¤½¤Î¤¿¤á¡¢¤³¤Î¸å¤Ç getsockopt(2) ¥³¡¼¥ë¤ò¹Ô¤¦¤È¡¢ setsockopt(2) ¤ÇÍ׵ᤷ¤¿¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤È¤Ï°Û¤Ê¤ëÃͤ¬Ê֤롣 TCP ¤Ï¤³¤Î;ʬ¤Ê¶õ´Ö¤ò¡¢´ÉÍýÌÜŪ¤ä¥«¡¼¥Í¥ëÆâÉô¤Î¹½Â¤ÂΤËÍѤ¤¤Æ¤ª¤ê¡¢ sysctl ÊÑ¿ô¤Ï¼ÂºÝ¤Î TCP ¥¦¥£¥ó¥É¥¦¤è¤ê¤âÂ礭¤Ê¥µ¥¤¥º¤òÈ¿±Ç¤¹¤ë¡£ ³ÆÀܳ¤Ë¤ª¤±¤ë¥½¥±¥Ã¥È¤Î¥Ð¥Ã¥Õ¥¡¥µ¥¤¥ºÊѹ¹¤òÍ­¸ú¤Ë¤¹¤ë¤Ë¤Ï¡¢ listen(2) ¤ä connect(2) ¥³¡¼¥ë¤ÎÁ°¤ËÀßÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¤è¤ê¾Ü¤·¤¤¾ðÊó¤Ï socket(7) ¤ò¸«¤è¡£

TCP ¤Ï¶ÛµÞ¥Ç¡¼¥¿ (urgent data) ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£¶ÛµÞ¥Ç¡¼¥¿¤Ï ²¿¤é¤«¤Î½ÅÍפʥá¥Ã¥»¡¼¥¸¤¬¥Ç¡¼¥¿¥¹¥È¥ê¡¼¥à¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¡¢ ¤½¤Î¥Ç¡¼¥¿¤ò¤Ç¤­¤ë¤À¤±Á᤯½èÍý¤¹¤Ù¤­¤³¤È¡¢¤ò¼õ¿®¼Ô¤ËÅÁ¤¨¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ ¶ÛµÞ¥Ç¡¼¥¿¤òÁ÷¤ë¤Ë¤Ï¡¢ send(2) ¤Ë MSG_OOB ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¡£ ¶ÛµÞ¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ë¤È¡¢¥«¡¼¥Í¥ë¤Ï SIGURG ¥·¥°¥Ê¥ë¤òÁ÷¿®¤¹¤ë¡£Á÷¿®Àè¤Ï SIOCSPGRP ¤ä FIOSETOWN ioctl (¤ä POSIX.1-2001 ¤Çµ¬Äꤵ¤ì¤Æ¤¤¤ë fcntl(2) F_SETOWN Áàºî) ¤òÍѤ¤¤Æ¤½¤Î¥½¥±¥Ã¥È¤Î¡Ö½êÍ­¼Ô¡×¤È¤·¤ÆÀßÄꤵ¤ì¤¿ ¥×¥í¥»¥¹¤«¥×¥í¥»¥¹¥°¥ë¡¼¥×¤Ç¤¢¤ë¡£ SO_OOBINLINE ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¡¢¶ÛµÞ¥Ç¡¼¥¿¤Ï Ä̾ï¤Î¥Ç¡¼¥¿¥¹¥È¥ê¡¼¥à¤ÎÃæ¤Ëº®¤¼¤ÆÁ÷¤é¤ì¤ë (¥×¥í¥°¥é¥à¤Ï²¼µ­¤Î SIOCATMARK ioctl ¤ò»È¤Ã¤Æ¶ÛµÞ¥Ç¡¼¥¿¤Î¾ì½ê¤òÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤ë)¡£ ̵¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ recv(2) ¤ä recvmsg(2) ¤Ç MSG_OOB ¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤È¤­¤Ë¤Î¤ß¡¢¶ÛµÞ¥Ç¡¼¥¿¤ò¼õ¿®¤Ç¤­¤ë¡£

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 ¤ÎÄÌ¿®¤À¤±¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ ¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¤ä¥Þ¥ë¥Á¥­¥ã¥¹¥È¤Ï¥µ¥Ý¡¼¥È¤·¤Ê¤¤¡£

sysctl

¤³¤ì¤é¤ÎÊÑ¿ô¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢ proc/sys/net/ipv4/* ¥Õ¥¡¥¤¥ë¤òÆɤ߽ñ¤­¤¹¤ëÊýË¡¤È¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ËÂФ·¤Æ sysctl(2) ¤òÍѤ¤¤ëÊýË¡¤¬¤¢¤ë¡£ ²Ã¤¨¤Æ¡¢¤Û¤È¤ó¤É¤Î IP sysctl ¤Ï TCP ¤Ë¤âŬÍѤǤ­¤ë¡£ ip(7) ¤ò»²¾È¤Î¤³¤È¡£ Boolean ¤ÏÀ°¿ôÃͤǡ¢ 0 °Ê³°¤ÎÃÍ ("true") ¤ÏÂбþ¤¹¤ë¥ª¥×¥·¥ç¥ó¤¬Í­¸ú¡¢ 0 ÃÍ ("false") ¤Ï̵¸ú¡¢¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
tcp_abort_on_overflow (Boolean; default: disabled)
Àܳ¤òÂÔ¤Á¼õ¤±¤Æ¤¤¤ë¥µ¡¼¥Ó¥¹¤¬ÃÙ¤¹¤®¤Æ¡¢¼õ¿®¤Ë¤Ä¤¤¤Æ¤¤¤±¤Ê¤¤¾ì¹ç¤Ë¡¢ Àܳ¤ò¥ê¥»¥Ã¥È¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£ ¤³¤ì¤òÍѤ¤¤ë¤È¡¢¥Ð¡¼¥¹¥È¤Ë¤è¤Ã¤Æ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¬µ¯¤³¤Ã¤¿¤È¤­¤Ë¡¢ Àܳ¤ò²óÉü¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Î¤Ï¡¢ ¼õ¿®¥Ç¡¼¥â¥ó¤ò¹â®²½¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë¡Ö¸ÂÄꤹ¤ë¡×¤³¤È¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤È¡¢¤½¤Î¥µ¡¼¥Ð¤ËÀܳ¤·¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È ¤Ë¤È¤Ã¤Æ¤Ï³²¤Ë¤Ê¤ë¤³¤È¤¬¤¢¤ë¡£
tcp_adv_win_scale (integer; default: 2)
¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤Î¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤Î·×»»ÊýË¡¤ò¡¢ 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_app_win (integer; default: 31)
¤³¤ÎÊÑ¿ô¤Ï¡¢TCP ¥¦¥£¥ó¥É¥¦¤Î²¿¥Ð¥¤¥Èʬ¤ò ¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤Î¥ª¡¼¥Ð¡¼¥Ø¥Ã¥ÉÍѤËͽÌ󤹤뤫¤ò»ØÄꤹ¤ë¡£

¤½¤Î¥¦¥£¥ó¥É¥¦¤Î window/2^tcp_app_win ¤È mss ¤ÎÂ礭¤¤¤Û¤¦ (¥Ð¥¤¥Èñ°Ì) ¤¬¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥Ð¥Ã¥Õ¥¡¤È¤·¤ÆͽÌ󤵤ì¤ë¡£ 0 ¤ò»ØÄꤹ¤ë¤È°ìÀÚͽÌóÎΰè¤ò¼è¤é¤Ê¤¤¡£

tcp_bic (Boolean; default: disabled)
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)
BIC TCP ¤¬íÕíÔ¥¦¥£¥ó¥É¥¦¤ÎÄ´À°¤ò³«»Ï¤¹¤ëïçÃÍ¥¦¥£¥ó¥É¥¦ (¥Ñ¥±¥Ã¥Èñ°Ì) ¤òÀßÄꤹ¤ë¡£¤³¤ÎïçÃͤò²¼²ó¤ë¾ì¹ç¡¢BIC TCP ¤Ï¥Ç¥Õ¥©¥ë¥È¤Î TCP Reno ¤È Ʊ¤¸Æ°ºî¤ò¤¹¤ë¡£
tcp_bic_fast_convergence (Boolean; default: enabled)
BIC TCP ¤¬íÕíÔ¥¦¥£¥ó¥É¥¦¤ÎÊѲ½¤Ë¤è¤ê®¤¯È¿±þ¤¹¤ë¤è¤¦¤Ë¤¹¤ë¡£ Ʊ¤¸¥³¥Í¥¯¥·¥ç¥ó¤ò¶¦Í­¤¹¤ëÆó¤Ä¤Î¥Õ¥í¡¼¤¬°ì¤Ä¤Ë¤Þ¤È¤Þ¤ë¤Î¤ò ¤è¤ê®¤¯¹Ô¤¦¤è¤¦¤Ë¤¹¤ë¡£
tcp_dsack (Boolean; default: enabled)
RFC 2883 ¤Î TCP Duplicate SACK ¤Î¥µ¥Ý¡¼¥È¤òÍ­¸ú¤Ë¤¹¤ë¡£
tcp_ecn (Boolean; default: disabled)
RFC 2884 ¤Î Explicit Congestion Notification ¤òÍ­¸ú¤Ë¤¹¤ë¡£ ¤³¤ì¤òÍ­¸ú¤Ë¤¹¤ë¤È¡¢´Ö°ã¤Ã¤¿¿¶Éñ¤¤¤ò¤¹¤ë¸Å¤¤¥ë¡¼¥¿¤¬ ·ÐÏ©¤ÎÅÓÃæ¤Ë¤¢¤ë¤è¤¦¤ÊÀܳÀè¤ËÂФ·¤Æ±Æ¶Á¤¬À¸¤¸¡¢ ¾ì¹ç¤Ë¤è¤Ã¤Æ¤ÏÀܳ¤¬Íî¤Á¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
tcp_fack (Boolean; default: enabled)
TCP Forward Acknowledgement ¤Î¥µ¥Ý¡¼¥È¤òÍ­¸ú¤Ë¤¹¤ë¡£
tcp_fin_timeout (integer; default: 60)
¥½¥±¥Ã¥È¤ò¶¯À©Åª¤Ë¥¯¥í¡¼¥º¤¹¤ëÁ°¤Ë¡¢ ºÇ¸å¤Î FIN ¥Ñ¥±¥Ã¥È¤òÂԤĻþ´Ö¤òÉÃñ°Ì¤Ç»ØÄꤹ¤ë¡£ ¤³¤ì¤Ï¸·Ì©¤Ë¤Ï TCP ¤Î»ÅÍͤòËþ¤¿¤·¤Æ¤¤¤Ê¤¤¤¬¡¢ DoS ¹¶·â (denial of service attack) ¤«¤é¿È¤ò¼é¤ë¤¿¤á¤ËɬÍפǤ¢¤ë¡£ Linux 2.2 ¤Ç¤Ï¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 180 ¤Ç¤¢¤Ã¤¿¡£
tcp_frto (Boolean; default: disabled)
TCP ºÆÁ÷¥¿¥¤¥à¥¢¥¦¥È¤«¤é¤ÎÉüµìÀ­Ç½¤ò¸þ¾å¤µ¤»¤¿¥¢¥ë¥´¥ê¥º¥à¤Ç¤¢¤ë¡¢ F-RIO ¤òÍ­¸ú¤Ë¤¹¤ë¡£¤³¤Îµ¡Ç½¤Ï̵Àþ´Ä¶­¤ÇÆä˸ú²Ì¤òȯ´ø¤¹¤ë¡£ ̵Àþ´Ä¶­¤Ç¤Ï¡¢Ä̾ï¤Ï¡¢Ãæ´Ö¥ë¡¼¥¿¤ÎíÕíԤǤϤʤ¯¥é¥ó¥À¥à¤Ê̵Àþ¤Î´³¾Ä ¤Ë¤è¤ê¥Ñ¥±¥Ã¥È¥í¥¹¤¬È¯À¸¤¹¤ë¡£
tcp_keepalive_intvl (integer; default: 75)
TCP keep-alive ¤Î¥×¥í¡¼¥Ö¤òÁ÷¤ë´Ö³Ö (ÉÃñ°Ì)¡£
tcp_keepalive_probes (integer; default: 9)
TCP keep-alive ¥×¥í¡¼¥Ö¤ÎºÇÂç²ó¿ô¡£ ¤³¤Î²ó¿ô¤À¤±»î¤·¤Æ¤âÀܳÀ褫¤éÈ¿±þ¤¬ÆÀ¤é¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢ ¤¢¤­¤é¤á¤ÆÀܳ¤òÀÚÃǤ¹¤ë¡£
tcp_keepalive_time (integer; default: 7200)
Àܳ¤¬¥¢¥¤¥É¥ë¾õÂ֤ˤʤäƤ«¤é¡¢keep-alive ¥×¥í¡¼¥Ö¤òÁ÷¿®¤¹¤ë¤Þ¤Ç¤Î»þ´Ö¤òÉÃñ°Ì¤Ç»ØÄꤹ¤ë¡£ SO_KEEPALIVE ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤È keep-alive ¤ÏÁ÷¤é¤ì¤Ê¤¤¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 7200 Éà (2 »þ´Ö)¡£ keep-alive ¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢ ¤µ¤é¤Ë¤ª¤è¤½ 11 ʬ (75 Éôֳ֤Π9 ¥×¥í¡¼¥Öʬ) ·Ð²á¤¹¤ë¤È¥¢¥¤¥É¥ë¾õÂÖ¤ÎÀܳ¤Ï½ªÎ»¤µ¤»¤é¤ì¤ë¡£

²¼Áؤˤ¢¤ëÀܳÄÉÀ×µ¡¹½¤ä¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Î¥¿¥¤¥à¥¢¥¦¥È¤Ï¡¢ ¤â¤Ã¤È¤º¤Ã¤Èû¤¤¤«¤â¤·¤ì¤Ê¤¤¡£

tcp_low_latency (Boolean; default: disabled)
Í­¸ú¤Ë¤¹¤ë¤È¡¢TCP ¥¹¥¿¥Ã¥¯¤Ï¥¹¥ë¡¼¥×¥Ã¥È¤ò¹â¤¯¤¹¤ë¤è¤ê¤â ÃÙ±ä¤ò¾¯¤Ê¤¯¤¹¤ë¤³¤È¤òÍ¥À褷¤ÆȽÃǤò¹Ô¤¦¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤ò̵¸ú¤Ë¤¹¤ë¤È¡¢¥¹¥ë¡¼¥×¥Ã¥È¤ò¹â¤¯¤¹¤ë¤³¤È¤¬Í¥À褵¤ì¤ë¡£ ¤³¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤòÊѹ¹¤·¤¿Êý¤¬¤è¤¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÎã¤È¤·¤Æ¤Ï Beowulf ¥³¥ó¥Ô¥å¡¼¥¿¥¯¥é¥¹¥¿¤¬µó¤²¤é¤ì¤ë¤À¤í¤¦¡£
tcp_max_orphans (integer; default: ²¼µ­)
¥·¥¹¥Æ¥à¤¬µöÍƤ¹¤ë¡¢ orphan ¤Ê (¤É¤Î¥æ¡¼¥¶¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ë¤â¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Ê¤¤) TCP ¥½¥±¥Ã¥È¤ÎºÇÂç¿ô¡£ ¤³¤Î¿ô¤ò±Û¤¨¤ë¤È¡¢orphan ¤ÊÀܳ¤Ï¥ê¥»¥Ã¥È¤µ¤ì¡¢·Ù¹ð¤¬É½¼¨¤µ¤ì¤ë¡£ ¤³¤ÎÀ©¸Â¤¬Â¸ºß¤¹¤ë¤Î¤Ï¡¢Ã±½ã¤Ê»ÈÍÑÉÔǽ (denial-of-service) ¹¶·â¤ò Ëɤ°¤¿¤á¤Ë²á¤®¤Ê¤¤¡£¤³¤ÎÃͤò¾®¤µ¤¯¤¹¤ë¤³¤È¤Ï¿ä¾©¤·¤Ê¤¤¡£ ¥Í¥Ã¥È¥ï¡¼¥¯¤Î¾ò·ï¤Ë¤è¤Ã¤Æ¤Ï¡¢¤³¤Î¿ôÃͤòÂ礭¤¯¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢ orphan ¤Ê¥½¥±¥Ã¥È¤Ò¤È¤Ä¤¢¤¿¤ê 64K ÄøÅ٤Υ¹¥ï¥Ã¥×ÉÔ²Äǽ¤Ê¥á¥â¥ê¤ò¾ÃÈñ¤¹¤ë¤³¤È¤âÃí°Õ¤»¤è¡£ ¥Ç¥Õ¥©¥ë¥È¤Î½é´üÃͤϥ«¡¼¥Í¥ë¥Ñ¥é¥á¡¼¥¿¤Î NR_FILE ¤ÈÅù¤·¤¤¡£ ¤³¤Î½é´ü¥Ç¥Õ¥©¥ë¥ÈÃͤϥ·¥¹¥Æ¥à¤Î¥á¥â¥ê¤Ë±þ¤¸¤ÆÄ´À°¤µ¤ì¤ë¡£
tcp_max_syn_backlog (integer; default: ²¼µ­)
Àܳ¤·¤Æ¤­¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¤«¤é ack ¤ò¼õ¿®¤·¤Æ¤¤¤Ê¤¤¾õÂÖ¤ÎÀܳ¥ê¥¯¥¨¥¹¥È¤ò¥­¥å¡¼¤ËÃÖ¤±¤ëºÇÂç¿ô¡£ ¤³¤Î¿ôÃͤò±Û¤¨¤ë¤È¡¢¥«¡¼¥Í¥ë¤Ï¥ê¥¯¥¨¥¹¥È¤ò¼Î¤Æ»Ï¤á¤ë¡£ ¥Ç¥Õ¥©¥ë¥È¤ÎÃÍ¤Ï 256 ¤Ç¡¢ ¥·¥¹¥Æ¥à¤Ë½¼Ê¬¤Ê¥á¥â¥ê¤¬¤¢¤ë (128Mb °Ê¾å) ¾ì¹ç¤Ï 1024 ¤Ë¤Ê¤ê¡¢ ¥á¥â¥ê¤¬Èó¾ï¤Ë¾¯¤Ê¤¤¾ì¹ç (32 Mb °Ê²¼) ¤Ï 128 ¤Ë¤Ê¤ë¡£ ¤³¤Î¿ôÃͤò 1024 °Ê¾å¤ËÁý¤ä¤·¤¿¤¤¾ì¹ç¤Ï¡¢ include/net/tcp.h ¤Î TCP_SYNQ_HSIZE ¤ò TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog ¤Î¤è¤¦¤Ë½¤Àµ¤·¡¢ ¥«¡¼¥Í¥ë¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤ò¾©¤á¤ë¡£
tcp_max_tw_buckets (integer; default: ²¼µ­)
¥·¥¹¥Æ¥à¤¬µöÍƤ¹¤ë TIME_WAIT ¾õÂ֤ˤ¢¤ë¥½¥±¥Ã¥È¤ÎºÇÂç¿ô¡£ ¤³¤ÎÀ©¸Â¤¬Â¸ºß¤¹¤ë¤Î¤Ï¡¢ ñ½ã¤Ê»ÈÍÑÉÔǽ (denial-of-service) ¹¶·â¤òËɤ°¤¿¤á¤Ë²á¤®¤Ê¤¤¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï NR_FILE*2 ¤Ç¡¢¥·¥¹¥Æ¥à¤Î¥á¥â¥ê¤Ë±þ¤¸¤ÆÄ´À°¤µ¤ì¤ë¡£ ¤³¤Î¿ôÃͤò±Û¤¨¤ë¤È¡¢¤½¤Î¤è¤¦¤Ê¥½¥±¥Ã¥È¤Ï¥¯¥í¡¼¥º¤µ¤ì¡¢·Ù¹ð¤¬É½¼¨¤µ¤ì¤ë¡£
tcp_mem
¤³¤ì¤Ï 3 ¤Ä¤ÎÀ°¿ô [low, pressure, high] ¤«¤é¤Ê¤ë¥Ù¥¯¥È¥ëÃͤǤ¢¤ë¡£ ¤³¤ì¤é¤Ï TCP ¤¬¥á¥â¥ê»ÈÍÑÎ̤òÄÉÀפ¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ ¥Ç¥Õ¥©¥ë¥È¤Ï¥Ö¡¼¥È»þ¤ËÍøÍѤǤ­¤ë¥á¥â¥ê¤ÎÎ̤«¤é·×»»¤µ¤ì¤ë¡£ (¼ÂºÝ¤Ë¤Ï¡¢TCP ¤Ï low memory ¤Î¤ß¤ò»ÈÍѤ¹¤ë¡£ÃÍ¤Ï 32¥Ó¥Ã¥È¥·¥¹¥Æ¥à¤Ç¤ÏÌó 900 ¥á¥¬¥Ð¥¤¥È¤ËÀ©¸Â¤µ¤ì¤ë¡£ 64 ¥Ó¥Ã¥È¥·¥¹¥Æ¥à¤Ç¤Ï¤³¤ÎÀ©¸Â¤Ï¤Ê¤¤¡£)

low - TCP ¤Ï¡¢¥°¥í¡¼¥Ð¥ë¤Ë¥¢¥í¥±¡¼¥È¤·¤¿¥Ú¡¼¥¸¤¬¤³¤Î¿ôÃͰʲ¼¤Î¾ì¹ç¤Ï¡¢ ¥á¥â¥ê¥¢¥í¥±¡¼¥·¥ç¥ó¤òÄ´À°¤·¤Ê¤¤¡£

pressure - TCP ¤¬¥¢¥í¥±¡¼¥È¤·¤¿¥á¥â¥ê¤¬¤³¤Î¿ôÃÍʬ¤Î¥Ú¡¼¥¸¿ô¤ò±Û¤¨¤ë¤È¡¢ TCP ¤Ï¥á¥â¥ê¾ÃÈñ¤òÍÞ¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£ ¥¢¥í¥±¡¼¥È¤·¤¿¥Ú¡¼¥¸¿ô¤¬ low °Ê²¼¤Ë¤Ê¤ë¤È¡¢¤³¤Î¥á¥â¥ê°µÇ÷¾õÂÖ¤«¤é椹¤ë¡£

high - TCP ¤¬¥°¥í¡¼¥Ð¥ë¤Ë³ä¤êÅö¤Æ¤ë¥Ú¡¼¥¸¿ô¤ÎºÇÂçÃÍ¡£ ¤³¤ÎÃͤϥ«¡¼¥Í¥ë¤Ë¤è¤Ã¤Æ²Ý¤µ¤ì¤ë¤¢¤é¤æ¤ëÀ©¸Â¤è¤ê¤âÍ¥À褵¤ì¤ë¡£

tcp_orphan_retries (integer; default: 8)
¤³¤Á¤é¤«¤é¥¯¥í¡¼¥º¤·¤¿Àܳ¤Ë¤Ä¤¤¤Æ¡¢ ÀèÊý¤ò¥×¥í¡¼¥Ö¤¹¤ëºÇÂç»î¹Ô¿ô¡£
tcp_reordering (integer; default: 3)
TCP ¥Ñ¥±¥Ã¥È¥¹¥È¥ê¡¼¥à¤Ç¥Ñ¥±¥Ã¥È½ç½ø¤ÎµÕž¤¬È¯À¸¤·¤¿¤À¤±¤Ç¤¢¤ê¡¢ ¥Ñ¥±¥Ã¥È¥í¥¹¤¬µ¯¤³¤Ã¤¿¤È¤Ï¤ß¤Ê¤µ¤Ê¤¤¡¢¥Ñ¥±¥Ã¥È¿ô¤ÎºÇÂçÃÍ¡£ ¤³¤ÎÃͤòĶ¤¨¤Æ¥Ñ¥±¥Ã¥È¤Î½ç½øµÕž¤¬µ¯¤³¤ë¤È¡¢¥Ñ¥±¥Ã¥È¥í¥¹¤¬À¸¤¸¤¿¤È ¤ß¤Ê¤·¡¢slow start ¤ËÆþ¤ë¡£ ¤³¤Î¿ôÃͤÏÊѹ¹¤·¤Ê¤¤¤Û¤¦¤¬Îɤ¤¡£ ¤³¤ì¤Ï¡¢ÀܳÃæ¤Î¥Ñ¥±¥Ã¥È¤ÎʤÓÂؤ¨¤Ë¤è¤Ã¤ÆÀ¸¤¸¤ë ÉÔɬÍפÊ®ÅÙÄã²¼¤äºÆÁ÷¤òºÇ¾®²½¤¹¤ë¤è¤¦¤ËÀ߷פµ¤ì¤¿¡¢ ¥Ñ¥±¥Ã¥ÈʤÓÂؤ¨ (packet reordering) ¤Î¸¡ÃÎ¥á¥È¥ê¥Ã¥¯¤Ê¤Î¤Ç¤¢¤ë¡£
tcp_retrans_collapse (Boolean; default: enabled)
ºÆÁ÷¤ÎºÝ¤Ë¥Õ¥ë¥µ¥¤¥º¤Î¥Ñ¥±¥Ã¥È¤òÁ÷¤í¤¦¤È¤¹¤ë¡£
tcp_retries1 (integer; default: 3)
ÉáÄ̤˳ÎΩ¤µ¤ì¤Æ¤¤¤ëÀܳ¾å¤Ë¡¢ TCP ¤¬¥Í¥Ã¥È¥ï¡¼¥¯Áؤò´¬¤­¹þ¤Þ¤º¤ËºÆÁ÷¤ò»î¤ß¤ë²ó¿ô¡£ ºÆÁ÷¤¬¤³¤Î²ó¿ô¤ò±Û¤¨¤ë¤È¡¢¤Þ¤ººÇ½é¤Ë¡¢ ¿·¤·¤¤ºÆÁ÷¤òÁ÷¤ëÁ°¤Ë²Äǽ¤Ê¤é¥Í¥Ã¥È¥ï¡¼¥¯Áؤ˷ÐÏ©¤ò¹¹¿·¤µ¤»¤ë¡£ ¥Ç¥Õ¥©¥ë¥È¤Ï RFC ¤¬»ØÄꤷ¤Æ¤¤¤ëºÇ¾¯¿ô¤Ç¤¢¤ë 3¡£
tcp_retries2 (integer; default: 15)
³ÎΩ¾õÂÖ¤ÎÀܳ¤Ë¡¢¤³¤Î²ó¿ô TCP ¥Ñ¥±¥Ã¥È¤ÎºÆÁ÷¿®¤ò ¹Ô¤Ê¤Ã¤Æ¤â¤À¤á¤Ê¾ì¹ç¤Ï¤¢¤­¤é¤á¤ë¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 15 ¤Ç¡¢¤³¤ì¤Ï (ºÆÁ÷¤Î¥¿¥¤¥à¥¢¥¦¥È¤Ë°Í¸¤¹¤ë¤¬) ¤ª¤è¤½ 13¡Á30 ʬÄøÅ٤δü´Ö¤ËÂбþ¤¹¤ë¡£ RFC 1122 ¤ÏºÇ¾®¤Î¸Â³¦¤ò 100 ÉäÈÃÖ¤¤¤Æ¤¤¤ë¤¬¡¢ ¤³¤ì¤Ï¤¿¤¤¤Æ¤¤¤Î¾ì¹ç¤Ë¤Ïû¤¹¤®¤ë¤È»×¤ï¤ì¤ë¡£
tcp_rfc1337 (Boolean; default: disabled)
TCP ¤ÎÆ°ºî¤ò RFC 1337 ¤Ë½àµò¤µ¤»¤ë¡£ ̵¸ú¤Ë¤¹¤ë¤È¡¢TIME_WAIT ¾õÂ֤ΤȤ­¤Ë RST ¤¬¼õ¿®¤µ¤ì¤¿¾ì¹ç¡¢ TIME_WAIT ´ü´Ö¤Î½ªÎ»¤òÂÔ¤¿¤º¤Ë¤½¤Î¥½¥±¥Ã¥È¤òľ¤Á¤Ë¥¯¥í¡¼¥º¤¹¤ë¡£
tcp_rmem
¤³¤ì¤Ï 3 ¤Ä¤ÎÀ°¿ô [min, default, max] ¤«¤é¤Ê¤ë¥Ù¥¯¥È¥ëÃͤǤ¢¤ë¡£ ¤³¤ì¤é¤Ï TCP ¤¬¼õ¿®¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤òÄ´À°¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ TCP ¤Ï¡¢¥·¥¹¥Æ¥à¤ÇÍøÍѤǤ­¤ë¥á¥â¥ê¤Ë±þ¤¸¤Æ¡¢ ¼õ¿®¥Ð¥Ã¥Õ¥¡¤Î¥µ¥¤¥º¤ò¤³¤ì¤é¤Î sysctl ÊÑ¿ô¤ÎÈÏ°Ï¤Ç °Ê²¼¤Ë¼¨¤¹¥Ç¥Õ¥©¥ë¥È¤«¤éưŪ¤ËÄ´À°¤¹¤ë¡£

min - ³Æ TCP ¥½¥±¥Ã¥È¤¬ÍѤ¤¤ë¼õ¿®¥Ð¥Ã¥Õ¥¡¤ÎºÇ¾®¥µ¥¤¥º¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 4K ¥Ð¥¤¥È¤Ç¡¢¥á¥â¥ê¤Î¾¯¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï PAGE_SIZE ¥Ð¥¤¥È¤Ë¸º¤é¤µ¤ì¤ë¡£ ¤³¤ÎÃͤϡ¢¥á¥â¥ê°µÇ÷¥â¡¼¥É¤Ë¤ª¤¤¤Æ¤â¡¢ ¤³¤Î¥µ¥¤¥º¤Î³ä¤êÅö¤Æ¤¬À®¸ù¤¹¤ë¤³¤È¤òÊݾڤ¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ ¤³¤ì¤Ï¡¢ SO_RCVBUF ¤òÍѤ¤¤Æ¥½¥±¥Ã¥È¤ÎºÇÄã¼õ¿®¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤òÀë¸À¤¹¤ëºÝ¤Ë¤ÏÍѤ¤¤é¤ì¤Ê¤¤¡£

default - TCP ¥½¥±¥Ã¥È¤Î¼õ¿®¥Ð¥Ã¥Õ¥¡¤Î¥Ç¥Õ¥©¥ë¥È¥µ¥¤¥º¡£ ¤³¤ÎÃͤϡ¢¤¹¤Ù¤Æ¤Î¥×¥í¥È¥³¥ë¤ËÂФ·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡¢ ¥¸¥§¥Í¥ê¥Ã¥¯¤Ê¥°¥í¡¼¥Ð¥ë¤Î¥Ç¥Õ¥©¥ë¥È¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º net.core.rmem_default ¤è¤êÍ¥À褵¤ì¤ë¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 87380 ¥Ð¥¤¥È¤Ç¡¢¥á¥â¥ê¤Î¾¯¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï 43689 ¤Ë¤Þ¤Ç¸º¤é¤µ¤ì¤ë¡£ Â礭¤Ê¼õ¿®¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤¬É¬Íפʾì¹ç¤Ï¡¢ ¤³¤ÎÃͤòÁý¤ä¤¹¤Ù¤­¤Ç¤¢¤ë (¤¹¤Ù¤Æ¤Î¥½¥±¥Ã¥È¤Ë±Æ¶Á¤¹¤ë)¡£ Â礭¤Ê TCP ¥¦¥£¥ó¥É¥¦¤òÍѤ¤¤ë¤Ë¤Ï¡¢ net.ipv4.tcp_window_scaling ¤òÍ­¸ú¤Ë¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ (¥Ç¥Õ¥©¥ë¥È¤ÏÍ­¸ú)¡£

max - ³Æ TCP ¥½¥±¥Ã¥È¤ÇÍѤ¤¤ë¼õ¿®¥Ð¥Ã¥Õ¥¡¤ÎºÇÂ祵¥¤¥º¡£ ¤³¤ÎÃͤè¤ê¤â¥°¥í¡¼¥Ð¥ë¤Î net.core.rmem_max ¤¬Í¥À褵¤ì¤ë¡£ ¤³¤ì¤Ï¡¢ SO_RCVBUF ¤òÍѤ¤¤Æ¥½¥±¥Ã¥È¤Î¼õ¿®¥Ð¥Ã¥Õ¥¡¥µ¥¤¥ºÀ©¸Â¤òÀë¸À¤¹¤ëºÝ¤Ë¤ÏÍѤ¤¤é¤ì¤Ê¤¤¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 87380*2 ¥Ð¥¤¥È¤Ç¡¢¥á¥â¥ê¤Î¾¯¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï 87380 ¤Ë¤Þ¤Ç¸º¤é¤µ¤ì¤ë¡£

tcp_sack (Boolean; default: enabled)
RFC 2018 ¤Î TCP Selective Acknowledgements ¤òÍ­¸ú¤Ë¤¹¤ë¡£
tcp_stdurg (Boolean; default: disabled)
¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍ­¸ú¤Ë¤¹¤ë¤È¡¢ TCP ¶ÛµÞ¥Ý¥¤¥ó¥¿ (urgent-pointer) ¥Õ¥£¡¼¥ë¥É¤ò RFC 1122 ¤Ë½¾¤Ã¤¿²ò¼á¤ò¹Ô¤¦¡£ ¤³¤Î²ò¼á¤Ë½¾¤¦¤È¡¢¶ÛµÞ¥Ý¥¤¥ó¥¿¤Ï¶ÛµÞ¥Ç¡¼¥¿¤ÎºÇ¸å¤Î¥Ð¥¤¥È¤ò»Ø¤¹¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤ò̵¸ú¤Ë¤¹¤ë¤È¡¢¶ÛµÞ¥Ý¥¤¥ó¥¿¤Î²ò¼á¤¬ BSD ¸ß´¹¤ÎÊýË¡¤Ç ¹Ô¤ï¤ì¤ë: ¶ÛµÞ¥Ý¥¤¥ó¥¿¤Ï¶ÛµÞ¥Ç¡¼¥¿¤Î¸å¤ÎºÇ½é¤Î¥Ð¥¤¥È¤ò»Ø¤¹¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍ­¸ú¤Ë¤¹¤ë¤È¡¢Áê¸ß±¿ÍÑÀ­¤ËÌäÂ꤬À¸¤¸¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
tcp_synack_retries (integer; default: 5)
passive ¤Ê TCP Àܳ¤Î SYN/ACK ¥»¥°¥á¥ó¥È¤ÇºÆÁ÷¤ò»î¤ß¤ëºÇÂç¿ô¡£ ¤³¤Î¿ôÃÍ¤Ï 255 ¤è¤ê¤âÂ礭¤¯¤¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
tcp_syncookies (Boolean)
CONFIG_SYNCOOKIES ¤ò¤Ä¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¥½¥±¥Ã¥È¤Î¥Ð¥Ã¥¯¥í¥°¥­¥å¡¼¤¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¹¤ë¤È¡¢ syncookies ¤¬Á÷¿®¤µ¤ì¤ë¡£ syncookies µ¡Ç½¤Ï¡¢SYN flood ¹¶·â¤«¤é¥½¥±¥Ã¥È¤ò¼é¤í¤¦¤È¤¹¤ë¡£ ¤³¤ì¤Ï¤¤¤º¤ì¤Ë¤·¤Æ¤â¡¢ºÇ½ª¼êÃʤȤ·¤ÆÍѤ¤¤ë¤Ù¤­¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï TCP ¥×¥í¥È¥³¥ë¤Ë°ãÈ¿¤·¤Æ¤ª¤ê¡¢ TCP ³ÈÄ¥¤Î¤è¤¦¤Ê¡¢TCP ¤Î¾¤ÎÉôʬ¤È¾×Æͤ·¤Æ¤·¤Þ¤¦¡£ ¥¯¥é¥¤¥¢¥ó¥È¤ä¥ê¥ì¡¼¤ÇÌäÂ꤬µ¯¤³¤ë¤³¤È¤â¤¢¤ë¡£ ²áÉé²Ù¤äÀßÄê´Ö°ã¤¤¤Ë¤è¤Ã¤ÆÉé²Ù¤ÎÂ礭¤Ê¾õÂ֤ˤ¢¤ë¥µ¡¼¥Ð¤òÄ´À°¤·¤Æµß¤¦¤¿¤á¤Î µ¡¹½¤È¤ß¤Ê¤¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ ¤½¤Î¤è¤¦¤ÊÍÑÅӤˤϡ¢Âå¤ï¤ê¤Ë tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow ¤Ê¤É¤Î»ÈÍѤò¹Í¤¨¤ë¤³¤È¡£
tcp_syn_retries (integer; default: 5)
¥¢¥¯¥Æ¥£¥Ö¤Ê TCP Àܳ¤Ë½é´ü SYN ¤ÎºÆÁ÷¤ò»î¤ß¤ëºÇÂç²ó¿ô¡£ ¤³¤Î¿ôÃÍ¤Ï 255 ¤è¤ê¤âÂ礭¤¯¤¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ ¥Ç¥Õ¥©¥ë¥È¤ÎÃÍ¤Ï 5 ¤Ç¡¢¤ª¤è¤½ 180 ÉäËÂбþ¤¹¤ë¡£
tcp_timestamps (Boolean; default: enabled)
RFC 1323 ¤Î TCP timestamps ¤òÍ­¸ú¤Ë¤¹¤ë¡£
tcp_tw_recycle (Boolean; default: disabled)
TIME-WAIT ¥½¥±¥Ã¥È¤ÎÁÇÁᤤºÆÍøÍѤòÍ­¸ú¤Ë¤¹¤ë¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍ­¸ú¤Ë¤¹¤ë¤È¡¢ NAT (¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹ÊÑ´¹) ¤òÍѤ¤¤Æ¤¤¤ë¤ÈÌäÂ꤬À¸¤¸¤ë¤Î¤Ç¡¢ ¤¢¤Þ¤ê¿ä¾©¤·¤Ê¤¤¡£
tcp_tw_reuse (Boolean; default: disabled)
¥×¥í¥È¥³¥ë¤ÎÌ̤«¤é¸«¤ÆÌäÂê¤Ê¤¤¾ì¹ç¤Ë¿·µ¬¥³¥Í¥¯¥·¥ç¥ó¤Ë TIME-WAIT ¾õÂ֤Υ½¥±¥Ã¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤òµö²Ä¤¹¤ë¡£µ»½ÑŪ¤Ë¾Ü¤·¤¤¿Í¤Î½õ¸À¤ä Í×ÀÁ¤Ê¤·¤Ë¤³¤Î¥ª¥×¥·¥ç¥ó¤òÊѹ¹¤¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
tcp_window_scaling (Boolean; default: enabled)
RFC 1323 ¤Î TCP ¥¦¥£¥ó¥É¥¦¥¹¥±¡¼¥ê¥ó¥°¤òÍ­¸ú¤Ë¤¹¤ë¡£ ¤³¤Îµ¡Ç½¤òÍѤ¤¤ë¤È¡¢ÀܳÀ褬Âбþ¤·¤Æ¤¤¤ì¤Ð¡¢ TCP Àܳ¤ÇÂ礭¤Ê (64K °Ê¾å¤Î) ¥¦¥£¥ó¥É¥¦¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£ Ä̾ï¤Ï TCP ¥Ø¥Ã¥À¤Î¥¦¥¤¥ó¥É¥¦Ä¹¥Õ¥£¡¼¥ë¥É¤Ï 16 ¥Ó¥Ã¥È¤Ê¤Î¤Ç¡¢ ¥¦¥£¥ó¥É¥¦¥µ¥¤¥º¤Ï 64K ¥Ð¥¤¥È°Ê²¼¤Ë¸Â¤é¤ì¤ë¡£ ¤â¤Ã¤ÈÂ礭¤Ê¥¦¥£¥ó¥É¥¦¤ò»È¤¤¤¿¤¤¾ì¹ç¤Ï¡¢ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¥½¥±¥Ã¥È¥Ð¥Ã¥Õ¥¡¤Î¥µ¥¤¥º¤òÁý¤ä¤·¤Æ¡¢ ¥¦¥£¥ó¥É¥¦¥¹¥±¡¼¥ê¥ó¥°¤Î¥ª¥×¥·¥ç¥ó¤òÍøÍѤ¹¤ì¤Ð¤è¤¤¡£ tcp_window_scaling ¤ò̵¸ú¤Ë¤·¤Æ¤¤¤ë¤È¡¢ TCP ¤Ï¾ü¤È¤ÎÀܳÀßÄê¤ÎºÝ¤Ë¡¢ ¥¦¥£¥ó¥É¥¦¥¹¥±¡¼¥ê¥ó¥°¤Î¥Í¥´¥·¥¨¡¼¥·¥ç¥ó¤ò¹Ô¤Ê¤ï¤Ê¤¤¡£
tcp_vegas_cong_avoid (Boolean; default: disabled)
TCP Vegas íÕíÔÀ©¸æ¥¢¥ë¥´¥ê¥º¥à¤òÍ­¸ú¤Ë¤¹¤ë¡£ TCP Vegas ¤ÏÂÓ°è¤ò¿ä¬¤¹¤ë¤³¤È¤ÇíÕíԤε¯¤³¤ê»Ï¤á¤òͽÁÛ¤¹¤ë¤è¤¦¤Ë TCP ¤ÎÁ÷¿®Â¦¤Î¤ß¤ËÊѹ¹¤ò²Ã¤¨¤¿¤â¤Î¤Ç¤¢¤ë¡£ TCP Vegas ¤ÏíÕíÔ¥¦¥£¥ó¥É¥¦¤ò½¤Àµ¤¹¤ë¤³¤È¤Ç¡¢Á÷¿®¥ì¡¼¥È¤òÄ´À°¤¹¤ë¡£ TCP Vegas ¤Ï TCP Reno ¤ÈÈæ¤Ù¤Æ¥Ñ¥±¥Ã¥È¥í¥¹¤Ï¾¯¤Ê¤¤¤¬¡¢ TCP Reno ¤Û¤ÉÀѶËŪ¤ÊµóÆ°¤Ï¤·¤Ê¤¤¡£
tcp_westwood (Boolean; default: disabled)
TCP Westwood+ íÕíÔÀ©¸æ¥¢¥ë¥´¥ê¥º¥à¤òÍ­¸ú¤Ë¤¹¤ë¡£ TCP Westwood+ ¤Ï TCP íÕíÔÀ©¸æ¤ÎÀ­Ç½¤òºÇŬ²½¤¹¤ë¤è¤¦¤Ë TCP Reno ¤Î ¥×¥í¥È¥³¥ë¥¹¥¿¥Ã¥¯¤ÎÁ÷¿®Â¦¤Î¤ß¤Ë½¤Àµ¤ò²Ã¤¨¤¿¤â¤Î¤Ç¤¢¤ë¡£ íÕíÔ¤¬µ¯¤³¤Ã¤¿¸å¤Ç¡¢íÕíÔ¥¦¥£¥ó¥É¥¦¤ä slow start ¤ÎïçÃͤò ÄÌ¿®Î¾Ã¼´Ö¤ÎÂÓ°è¤Î¿ä¬¤Ë´ð¤Å¤¤¤ÆÀßÄꤹ¤ë¡£ ¤³¤Î¿ä¬¤ò»È¤Ã¤Æ¡¢TCP Westwood+ ¤ÏíÕíÔ¤¬È¯À¸¤·¤¿»þ¤Ë»È¤Ã¤Æ¤¤¤¿ ÂÓ°è¤ò¹Íθ¤ËÆþ¤ì¤¿ slow start ¤ÎïçÃͤÈíÕíÔ¥¦¥£¥ó¥É¥¦¤òÀßÄꤹ¤ë¡£ TCP Westwood+ ¤Ï¡¢Í­Àþ¥Í¥Ã¥È¥ï¡¼¥¯¤Ë¤ª¤±¤ë TCP Reno ¤Î¸øÊ¿À­ (fairness) ¤È¡¢ÌµÀþ¥ê¥ó¥¯¤Ç¤Î¥¹¥ë¡¼¥×¥Ã¥È¤òÂ礭¤¯¸þ¾å¤¹¤ë¡£
tcp_wmem
¤³¤ì¤Ï 3 ¤Ä¤ÎÀ°¿ô [min, default, max] ¤«¤é¤Ê¤ë¥Ù¥¯¥È¥ëÃͤǤ¢¤ë¡£ ¤³¤ì¤é¤Ï TCP ¤¬Á÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤òÄ´À°¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ TCP ¤Ï¡¢¥·¥¹¥Æ¥à¤ÇÍøÍѤǤ­¤ë¥á¥â¥ê¤Ë±þ¤¸¤Æ¡¢ Á÷¿®¥Ð¥Ã¥Õ¥¡¤Î¥µ¥¤¥º¤ò¤³¤ì¤é¤Î sysctl ÊÑ¿ô¤ÎÈÏ°Ï¤Ç °Ê²¼¤Ë¼¨¤¹¥Ç¥Õ¥©¥ë¥È¤«¤éưŪ¤ËÄ´À°¤¹¤ë¡£

min - ³Æ TCP ¥½¥±¥Ã¥È¤¬ÍѤ¤¤ëÁ÷¿®¥Ð¥Ã¥Õ¥¡¤ÎºÇ¾®¥µ¥¤¥º¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 4K ¤Ç¤¢¤ë¡£ ¤³¤ÎÃͤϡ¢¥á¥â¥ê°µÇ÷¥â¡¼¥É¤Ë¤ª¤¤¤Æ¤â¡¢ ¤³¤Î¥µ¥¤¥º°Ê²¼¤Î³ä¤êÅö¤Æ¤¬À®¸ù¤¹¤ë¤³¤È¤òÊݾڤ¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ ¤³¤ì¤Ï¡¢ SO_SNDBUF ¤òÍѤ¤¤Æ¥½¥±¥Ã¥È¤ÎºÇÄãÁ÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤òÀë¸À¤¹¤ëºÝ¤Ë¤ÏÍѤ¤¤é¤ì¤Ê¤¤¡£

default - TCP ¥½¥±¥Ã¥È¤ÎÁ÷¿®¥Ð¥Ã¥Õ¥¡¤Î¥Ç¥Õ¥©¥ë¥È¥µ¥¤¥º¡£ ¤³¤ÎÃͤϡ¢¤¹¤Ù¤Æ¤Î¥×¥í¥È¥³¥ë¤ËÂФ·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡¢ ¥¸¥§¥Í¥ê¥Ã¥¯¤Ê¥°¥í¡¼¥Ð¥ë¤Î¥Ç¥Õ¥©¥ë¥È¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º net.core.rmem_default ¤è¤êÍ¥À褵¤ì¤ë¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 16K ¥Ð¥¤¥È¤Ç¤¢¤ë¡£ Â礭¤ÊÁ÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥¤¥º¤¬É¬Íפʾì¹ç¤Ï¡¢ ¤³¤ÎÃͤòÁý¤ä¤¹¤Ù¤­¤Ç¤¢¤ë (¤¹¤Ù¤Æ¤Î¥½¥±¥Ã¥È¤Ë±Æ¶Á¤¹¤ë)¡£ Â礭¤Ê TCP ¥¦¥£¥ó¥É¥¦¤òÍѤ¤¤ë¤Ë¤Ï¡¢ net.ipv4.tcp_window_scaling ¤òÍ­¸ú¤Ë¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ (¥Ç¥Õ¥©¥ë¥È¤ÏÍ­¸ú)¡£

max - ³Æ TCP ¥½¥±¥Ã¥È¤ÇÍѤ¤¤ëÁ÷¿®¥Ð¥Ã¥Õ¥¡¤ÎºÇÂ祵¥¤¥º¡£ ¤³¤ÎÃͤè¤ê¤â¥°¥í¡¼¥Ð¥ë¤Î net.core.wmem_max ¤¬Í¥À褵¤ì¤ë¡£ ¤³¤ì¤Ï SO_SNDBUF ¤òÍѤ¤¤Æ¥½¥±¥Ã¥È¤ÎÁ÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥¤¥ºÀ©¸Â¤òÀë¸À¤¹¤ëºÝ¤Ë¤ÏÍѤ¤¤é¤ì¤Ê¤¤¡£ ¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 128K ¥Ð¥¤¥È¤Ç¡¢¥·¥¹¥Æ¥à¤Î¥á¥â¥ê¥µ¥¤¥º¤Ë±þ¤¸¤Æ 64K ¤Ë¤Þ¤Ç¸º¤é¤µ¤ì¤ë¡£

¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó

TCP ¥½¥±¥Ã¥È¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ ¥ª¥×¥·¥ç¥ó¥ì¥Ù¥ë°ú¿ô¤Ë IPPROTO_TCP ¤ò»ØÄꤷ¤¿ setsockopt(2) ¤ÇÀßÄê¤Ç¤­¡¢ getsockopt(2) ¤Ç¼èÆÀ¤Ç¤­¤ë¡£ ¤µ¤é¤Ë¡¢¤Û¤È¤ó¤É¤Î IPPROTO_IP ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤â TCP ¥½¥±¥Ã¥È¤ËÂФ·¤ÆÍ­¸ú¤Ç¤¢¤ë¡£¾ÜºÙ¤Ï ip(7) ¤ò¸«¤è¡£
TCP_CORK
¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢ partial ¥Õ¥ì¡¼¥à¤òÁ÷¿®¤·¤Ê¤¤¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤¬²ò½ü¤µ¤ì¤ë¤È¡¢ ¥­¥å¡¼¥¤¥ó¥°¤µ¤ì¤¿ partial ¥Õ¥ì¡¼¥à¤¬Á÷¤é¤ì¤ë¡£¤³¤ì¤Ï sendfile(2) ¤ò¸Æ¤ÖÁ°¤Ë¥Ø¥Ã¥À¤òÁ°ÃÖ¤·¤¿¤ê¡¢ ¥¹¥ë¡¼¥×¥Ã¥È¤òºÇŬ²½¤·¤¿¤¤¾ì¹ç¤ËÊØÍø¤Ç¤¢¤ë¡£ ¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢ TCP_CORK ¤Ç½ÐÎϤòÍÞ¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë»þ´Ö¤Î¾å¸Â¤Ï 200 ¥ß¥êÉäǤ¢¤ë¡£ ¤³¤Î¾å¸Â¤Ë㤹¤ë¤È¡¢¥­¥å¡¼¥¤¥ó¥°¤µ¤ì¤¿¥Ç¡¼¥¿¤Ï¼«Æ°Åª¤ËÁ÷¿®¤µ¤ì¤ë¡£ Linux 2.5.71 °Ê¹ß¤Ë¤ª¤¤¤Æ¤Î¤ß¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò TCP_NODELAY ¤ÈƱ»þ¤ËÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_DEFER_ACCEPT
¤³¤ì¤òÍѤ¤¤ë¤È¡¢¥ê¥¹¥Ê¤Ï¥Ç¡¼¥¿¤¬¥½¥±¥Ã¥È¤ËÅþÃ夷¤¿»þ¤Î¤ßÌܳФá¤ë¤è¤¦¤Ë¤Ê¤ë¡£ À°¿ôÃÍ (ÉÃ) ¤ò¤È¤ê¡¢ TCP ¤¬Àܳ¤ò´°Î»¤·¤è¤¦¤È»î¤ß¤ë²ó¿ô¤òÀ©¸Â¤Ç¤­¤ë¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_INFO
¤³¤Î¥½¥±¥Ã¥È¤Î¾ðÊó¤ò¼ý½¸¤¹¤ë¤Î¤ËÍѤ¤¤ë¡£ ¥«¡¼¥Í¥ë¤Ï /usr/include/linux/tcp.h ¥Õ¥¡¥¤¥ë¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë struct tcp_info ¤òÊÖ¤¹¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_KEEPCNT
Àܳ¤òÍî¤È¤¹Á°¤Ë TCP ¤¬»î¤ß¤ë keepalive ¥×¥í¡¼¥Ö¤ÎºÇÂç²ó¿ô¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_KEEPIDLE
¤³¤Î»þ´Ö (ÉÃñ°Ì) ¤ò±Û¤¨¤ÆÀܳ¤¬¥¢¥¤¥É¥ë¾õÂÖ¤Ëα¤Þ¤Ã¤Æ¤¤¤ë¤È¡¢ ¤³¤Î¥½¥±¥Ã¥È¤Ë SO_KEEPALIVE ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ TCP ¤Ï keepalive ¥×¥í¡¼¥Ö¤òÁ÷¤ê¤Ï¤¸¤á¤ë¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_KEEPINTVL
³Æ keepalive ¥×¥í¡¼¥Ö¤Î´Ö³Ö (ÉÃñ°Ì)¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_LINGER2
orphan ¤µ¤ì¤¿ FIN_WAIT2 ¾õÂ֤Υ½¥±¥Ã¥È¤Î¼÷Ì¿¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤È¡¢¥·¥¹¥Æ¥à¥ï¥¤¥É¤Ê sysctl tcp_fin_timeout ¤ÎÃͤò¡¢¤³¤Î¥½¥±¥Ã¥È¤ËÂФ·¤Æ¤Î¤ßÊѹ¹¤Ç¤­¤ë¡£ socket(7) ¥ì¥Ù¥ë¤Î¥ª¥×¥·¥ç¥ó SO_LINGER ¤Èº®Æ±¤·¤Ê¤¤¤³¤È¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_MAXSEG
Á÷½Ð TCP ¥Ñ¥±¥Ã¥È¤ÎºÇÂ祻¥°¥á¥ó¥È¥µ¥¤¥º¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤òÀܳ³ÎΩ¤ÎÁ°¤ËÀßÄꤹ¤ë¤È¡¢ ½é´ü¥Ñ¥±¥Ã¥È¤Ç¾ü¤Ë¥¢¥Ê¥¦¥ó¥¹¤¹¤ë MSS ¤ÎÃͤâÊѲ½¤¹¤ë¡£ ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î MTU ¤è¤ê¤âÂ礭¤Ê (¤¢¤ë¤¤¤ÏÂ礭¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿) Ãͤϸú²Ì¤ò»ý¤¿¤Ê¤¤¡£ ¤Þ¤¿ TCP ¤Ï¡¢¤³¤ÎÃͤè¤ê¤âºÇ¾®¡¦ºÇÂç¤ÎÀ©¸Â¤ÎÊý¤òÍ¥À褹¤ë¡£
TCP_NODELAY
ÀßÄꤹ¤ë¤È Nagle ¥¢¥ë¥´¥ê¥º¥à¤ò̵¸ú¤Ë¤¹¤ë¡£ ¤¹¤Ê¤ï¤Á¡¢¥Ç¡¼¥¿Î̤¬¾¯¤Ê¤¤¾ì¹ç¤Ç¤â ³Æ¥»¥°¥á¥ó¥È¤Ï²Äǽ¤Ê¸Â¤êÁ᤯Á÷¿®¤µ¤ì¤ë¡£ ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢ Á÷¿®¤¹¤ëʬ¤À¤±Î¯¤Þ¤ë¤Þ¤Ç¥Ç¡¼¥¿¤Ï¥Ð¥Ã¥Õ¥¡¤µ¤ì¡¢ ¾®¤µ¤Ê¥Ñ¥±¥Ã¥È¤òÉÑÈˤËÁ÷¤é¤º¤Ë¤¹¤ß¡¢ ¥Í¥Ã¥È¥ï¡¼¥¯¤òÍ­¸ú¤ËÍøÍѤǤ­¤ë¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï TCP_CORK ¤Ë¤è¤ê¾å½ñ¤­¤µ¤ì¤ë¡£¤·¤«¤·¤Ê¤¬¤é¡¢ TCP_CORK ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ë¤È¡¢ Á÷¿®ÂÔ¤Á¤Î½ÐÎϤòÌÀ¼¨Åª¤ËÁݤ­½Ð¤¹ (flush) ¤³¤È¤Ë¤Ê¤ë¡£
TCP_QUICKACK
ÀßÄꤵ¤ì¤Æ¤¤¤ë¤È quickack ¥â¡¼¥É¤òÍ­¸ú¤Ë¤·¡¢¥¯¥ê¥¢¤µ¤ì¤ë¤È̵¸ú¤Ë¤¹¤ë¡£ Ä̾ï¤Î TCP Æ°ºî¤Ç¤Ï ack ¤ÏɬÍפ˱þ¤¸¤ÆÃٱ䤵¤ì¤ë¤Î¤ËÂФ·¡¢ quickack ¥â¡¼¥É¤Ç¤Ï ack ¤Ï¤¹¤°¤ËÁ÷¿®¤µ¤ì¤ë¡£ ¤³¤Î¥Õ¥é¥°¤Ï±Ê³Ū¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ quickack ¥â¡¼¥É¤«¤é/¥â¡¼¥É¤ØÀÚ¤êÂؤ¨¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ì°Ê¹ß¤Î TCP ¥×¥í¥È¥³¥ë¤ÎÆ°ºî¤Ë¤è¤Ã¤Æ¤Ï¡¢ ÆâÉô¤Î¥×¥í¥È¥³¥ë½èÍý¤ä¡¢ÃÙ±ä ack ¥¿¥¤¥à¥¢¥¦¥È¤ÎȯÀ¸¡¢ ¥Ç¡¼¥¿Å¾Á÷¤Ê¤É¤ÎÍ×°ø¤Ë¤è¤Ã¤Æ¡¢ ºÆ¤Ó quickack ¤«¤é½Ð¤¿¤êÆþ¤Ã¤¿¤ê¤¹¤ë¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_SYNCNT
Àܳ¤Î»î¹Ô¤òÃæ»ß¤µ¤»¤ëÁ°¤Ë TCP ¤¬Á÷¤ë SYN ºÆÁ÷¿ô¤òÀßÄꤹ¤ë¡£ ¤³¤ì¤Ï 255 ¤è¤êÂ礭¤¯¤Ï¤Ç¤­¤Ê¤¤¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
TCP_WINDOW_CLAMP
¹­Ê󤹤륦¥£¥ó¥É¥¦¤Î¥µ¥¤¥º¤ò¤³¤ÎÃͤ˸ÇÄꤹ¤ë¡£ ¥«¡¼¥Í¥ë¤Ë¤è¤Ã¤ÆºÇ¾®¥µ¥¤¥º¤Ï SOCK_MIN_RCVBUF/2 ¤ËÀ©¸Â¤µ¤ì¤Æ¤¤¤ë¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï°Ü¿¢À­¤ÎɬÍפʥ³¡¼¥É¤Ç¤ÏÍѤ¤¤ë¤Ù¤­¤Ç¤Ê¤¤¡£

ioctl

°Ê²¼¤Î ioctl(2) ¸Æ¤Ó½Ð¤·¤Ï value ¤Ë¾ðÊó¤òÆþ¤ì¤ÆÊÖ¤¹¡£ Àµ¤·¤¤½ñ¼°¤Ï°Ê²¼¤ÎÄ̤ꡣ

int value;

error = ioctl(tcp_socket, ioctl_type, &value);

ioctl_type ¤Ï°Ê²¼¤Î¤¤¤º¤ì¤«°ì¤Ä¤Ç¤¢¤ë:

SIOCINQ
¼õ¿®¥Ð¥Ã¥Õ¥¡¤Î¥­¥å¡¼¤Ë¤¢¤ë¡¢¤Þ¤ÀÆɤó¤Ç¤¤¤Ê¤¤¥Ç¡¼¥¿¤ÎÎ̤òÊÖ¤¹¡£ ¥½¥±¥Ã¥È¤Ï LISTEN ¾õÂ֤ˤ¢¤Ã¤Æ¤Ï¤Ê¤é¤º¡¢ ¤µ¤â¤Ê¤¤¤È¥¨¥é¡¼ (EINVAL) ¤¬Ê֤롣
SIOCATMARK
¼õ¿®¥Ç¡¼¥¿¥¹¥È¥ê¡¼¥à¤¬¶ÛµÞ¥Þ¡¼¥¯¤Î°ÌÃ֤Ǥ¢¤ì¤Ð¡¢¿¿¤òÊÖ¤¹ (¤Ä¤Þ¤ê value ¤¬ 0 °Ê³°)¡£

SO_OOBINLINE ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Æ¡¢ SIOCATMARK ¤¬¿¿¤òÊÖ¤·¤¿¾ì¹ç¡¢¼¡¤Î¥½¥±¥Ã¥È¤«¤é¤ÎÆɤ߹þ¤ß¤Ç¤Ï¶ÛµÞ¥Ç¡¼¥¿¤¬ ÊÖ¤µ¤ì¤ë¡£ SO_OOBINLINE ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤¬ÀßÄꤵ¤ì¤Æ¤ª¤é¤º¡¢ SIOCATMARK ¤¬¿¿¤òÊÖ¤·¤¿¾ì¹ç¡¢¼¡¤Î¥½¥±¥Ã¥È¤«¤é¤ÎÆɤ߹þ¤ß¤Ç¤Ï¶ÛµÞ¥Ç¡¼¥¿¤Ë ³¤¯¥Ç¡¼¥¿¤¬ÊÖ¤µ¤ì¤ë (¼ÂºÝ¤Ë¶ÛµÞ¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤Ë¤Ï recv(MSG_OOB) ¤È¥Õ¥é¥°¤ò¤Ä¤±¤ëɬÍפ¬¤¢¤ë)¡£

¥Ç¡¼¥¿¤Î°ì²ó¤ÎÆɤ߹þ¤ß¤Ç¤Ï¶ÛµÞ¥Þ¡¼¥¯¤ò¸Ù¤¬¤Ã¤Æ¤ÎÆɤ߹þ¤ß¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¶ÛµÞ¥Ç¡¼¥¿¤Î¸ºß¤ò (exceptfds °ú¤­¿ô¤ò»È¤Ã¤Æ) select(2) ·Ðͳ¤Þ¤¿¤Ï SIGURG ¥·¥°¥Ê¥ë¤ÎÇÛÁ÷¤òÄ̤¸¤ÆÃΤ餵¤ì¤¿¾ì¹ç¡¢ SIOCATMARK ¤Î¥Á¥§¥Ã¥¯¤ÈÆɤ߹þ¤ß (²¿¥Ð¥¤¥ÈÆɤ߹þ¤ßÍ×µá¤ò¤·¤Æ¤â¤è¤¤) ¤ò SIOCATMARK ¤¬µ¶¤òÊÖ¤µ¤Ê¤¯¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤·¹Ô¤¦¤³¤È¤Ç¡¢¶ÛµÞ¥Þ¡¼¥¯¤Î°ÌÃÖ¤Þ¤Ç Æɤ߿ʤá¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

SIOCOUTQ
¥½¥±¥Ã¥È¤ÎÁ÷¿®¥­¥å¡¼¤Ë»Ä¤Ã¤Æ¤¤¤ë̤Á÷¿®¥Ç¡¼¥¿¤ÎÎ̤òÊÖ¤¹¡£ ¥½¥±¥Ã¥È¤Ï LISTEN ¾õÂ֤ˤ¢¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ LISTEN ¾õÂ֤ξì¹ç¤Ë¤Ï¥¨¥é¡¼ (EINVA) ¤È¤Ê¤ë¡£

¥¨¥é¡¼½èÍý

¥Í¥Ã¥È¥ï¡¼¥¯¥¨¥é¡¼¤¬µ¯¤³¤ë¤È¡¢ TCP ¤Ï¥Ñ¥±¥Ã¥È¤ÎºÆÁ÷¤ò»î¤ß¤ë¡£ ²¿²ó¤«¤ä¤Ã¤Æ¤âÀ®¸ù¤·¤Ê¤±¤ì¤Ð¡¢¤³¤ÎÀܳ¤ËÂФ·¤Æ ETIMEOUT ¥¨¥é¡¼¤«ºÇ¸å¤Ë¼õ¿®¤·¤¿¥¨¥é¡¼¤¬ÊÖ¤µ¤ì¤ë¡£

¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¤Ï¡¢¤â¤Ã¤ÈÁ᤯¥¨¥é¡¼¤òÃΤ餻¤Æ¤Û¤·¤¤¾ì¹ç¤¬¤¢¤ë¡£ ¤³¤ì¤Ë¤Ï IPPROTO_IP ¥ì¥Ù¥ë¤Î IP_RECVERR ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ë¤ÈÎɤ¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¡¢ ÅþÃ夷¤¿¥¨¥é¡¼¤Ï¤¹¤Ù¤Æ¤¿¤À¤Á¤Ë¥æ¡¼¥¶¡¼¥×¥í¥°¥é¥à¤ËÅϤµ¤ì¤ë¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¿µ½Å¤ËÍѤ¤¤ë¤³¤È --- ¥ë¡¼¥Æ¥£¥ó¥°¤ÎÊѹ¹¤Ê¤É¡¢ Ä̾濫¤ê¤¦¤ë¥Í¥Ã¥È¥ï¡¼¥¯¾õÂÖ¤ËÂФ·¤Æ TCP ¤ò¤è¤êÀȼå¤Ë¤·¤Æ¤·¤Þ¤¦¡£

¥¨¥é¡¼

EPIPE
ÀܳÀ褬ͽ´ü¤·¤Ê¤«¤Ã¤¿¤«¤¿¤Á¤Ç¥½¥±¥Ã¥È¤ò¥¯¥í¡¼¥º¤·¤¿¡£ ¤Þ¤¿¤Ï¥·¥ã¥Ã¥È¥À¥¦¥ó¤µ¤ì¤¿¥½¥±¥Ã¥È¤ËÆɤ߹þ¤ß¤¬¼Â¹Ô¤µ¤ì¤¿¡£
ETIMEDOUT
ÀܳÀ褬¡¢²¿²ó¤«¥Ç¡¼¥¿¤òºÆÁ÷¤·¤Æ¤âÈ¿±þ¤·¤Ê¤¤¡£
EAFNOTSUPPORT
sin_family ¤ËÅϤµ¤ì¤¿¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤Î¥¿¥¤¥×¤¬ AF_INET ¤Ç¤Ï¤Ê¤«¤Ã¤¿¡£

ip(7) ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥¨¥é¡¼¤ä¡¢¥¸¥§¥Í¥ê¥Ã¥¯¤Ê¥½¥±¥Ã¥ÈÁؤˤª¤±¤ë¥¨¥é¡¼¤â TCP ¤ËÊÖ¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£

¥Ð¡¼¥¸¥ç¥ó

Explicit Congestion Notification¡¢zero-copy ¤Î sendfile(2)¡¢ ʤÓÂؤ¨¤Î¥µ¥Ý¡¼¥È¡¢SACK ³ÈÄ¥ (DSACK) ¤Ê¤É¤Î¥µ¥Ý¡¼¥È¤Ï 2.4 ¤ÇƳÆþ¤µ¤ì¤¿¡£ ¥Õ¥©¥ï¡¼¥É³Îǧ (FACK)¡¢TIME_WAIT ¥ê¥µ¥¤¥¯¥ë¡¢ Àܳ¤´¤È¤Î keepalive ¤Ê¤É¤ËÂФ¹¤ë¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤ä sysctl ¤Ï 2.3 ¤ÇƳÆþ¤µ¤ì¤¿¡£

ËÜʸÃæ¤ÇÍ¿¤¨¤¿ sysctl ÊÑ¿ô¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤȲòÀâ¤Ï¡¢ 2.4 ¥«¡¼¥Í¥ë¸þ¤±¤Î¤â¤Î¤Ç¤¢¤ë¡£

Ãí°Õ

TCP ¤Ë¤ÏËÜÅö¤Î°ÕÌ£¤Ç¤ÎÂÓ°è³°¥Ç¡¼¥¿ (out-of-band data) ¤Ï¤Ê¤¤¡£ TCP ¤¬»ý¤Ä¤Î¤Ï¶ÛµÞ¥Ç¡¼¥¿¤Ç¤¢¤ë¡£¤Ä¤Þ¤ê Linux ¤Ë¤ª¤¤¤Æ¤Ï¡¢ ÀܳÀ褬 (¿·¤·¤¤¤ä¤êÊý¤Î) ÂÓ°è³°¥Ç¡¼¥¿¤òÁ÷¤Ã¤Æ¤­¤¿¾ì¹ç¡¢ (¸Å¤¤¤ä¤êÊý¤Î) ¶ÛµÞ¥Ç¡¼¥¿¤ÏÄ̾ï¤Î¥Ç¡¼¥¿¤È¤·¤Æ¥¹¥È¥ê¡¼¥à¤ËÁÞÆþ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ë (¤³¤ì¤Ï SO_OOBINLINE ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ç¤âƱÍͤǤ¢¤ë)¡£ ¤³¤ì¤Ï BSD ¥Ù¡¼¥¹¤Î¥¹¥¿¥Ã¥¯¤È¤Ï°Û¤Ê¤ë¡£

Linux ¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï urgent ¥Ý¥¤¥ó¥¿¥Õ¥£¡¼¥ë¥É¤Î²ò¼á¤Ë BSD ¸ß´¹¤ÎÊýË¡¤òÍѤ¤¤ë¡£¤³¤ì¤Ï RFC 1122 ¤ËÈ¿¤·¤Æ¤¤¤ë¤¬¡¢ ¾¤Î¥¹¥¿¥Ã¥¯¤ÈƱ»þ¤ËÆ°ºî¤µ¤»¤ë¤Ë¤Ï¤ä¤à¤òÆÀ¤Ê¤¤¡£¤³¤ì¤Ï tcp_stdurg sysctl ¤Ë¤è¤Ã¤ÆÊѹ¹¤Ç¤­¤ë¡£

¥Ð¥°

¤Þ¤ÀÀâÌÀ¤µ¤ì¤Æ¤¤¤Ê¤¤¥¨¥é¡¼¤¬¤¢¤ë¡£
IPv6 ¤Ë´Ø¤¹¤ëµ­½Ò¤¬¤Ê¤¤¡£

´ØÏ¢¹àÌÜ

accept(2), bind(2), connect(2), getsockopt(2), listen(2), recvmsg(2), sendfile(2), sendmsg(2), socket(2), sysctl(2), ip(7), socket(7)

RFC 793: TCP ¤Î»ÅÍÍ¡£
RFC 1122: TCP ¤ÎÍ×µá»ö¹à¤È Nagle ¥¢¥ë¥´¥ê¥º¥à¤Îµ­½Ò¡£
RFC 1323: TCP ¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¡¦¥¦¥£¥ó¥É¥¦¥¹¥±¡¼¥ê¥ó¥°³Æ¥ª¥×¥·¥ç¥ó¡£
RFC 1644: TIME_WAIT assassination hazard ¤Ë´Ø¤¹¤ëµ­½Ò¡£
RFC 3168: Explicit Congestion Notification ¤Ë´Ø¤¹¤ëµ­½Ò¡£
RFC 2581: TCP íÕíÔÀ©¸æ¥¢¥ë¥´¥ê¥º¥à¡£
RFC 2018 ¤È RFC 2883: SACK ¤È¤½¤Î³ÈÄ¥¡£