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
NOMSYNOPSIS
DESCRIPTION
Formats dâadresse
/proc interfaces
Options de socket
API des sockets
Ioctls
Traitement des erreurs
ERREURS
VERSIONS
BOGUES
VOIR AUSSI
TRADUCTION
NOM
tcp â Protocole TCP
SYNOPSIS
#include
<sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
DESCRIPTION
Il sâagit dâune implĂ©mentation du protocole TCP dĂ©fini dans les RFC 793, 1122 et 2001 avec les extensions SACK (Selective acknowledgment) et NewReno. Ce protocole fournit une connexion bidirectionnelle fiable, orientĂ©e flux, entre deux sockets au-dessus de ip (7), pour les versions 4 et 6. TCP garantit que les donnĂ©es arrivent dans lâordre et assure la retransmission des paquets perdus. Il calcule et vĂ©rifie une somme de contrĂŽle par paquet pour dĂ©tecter les erreurs de transmission. TCP ne prĂ©serve pas les limites des enregistrements.
Un socket TCP nouvellement créé nâa pas dâadresse locale ou distante et nâest pas complĂštement dĂ©fini. Pour crĂ©er une connexion TCP sortante, utilisez connect (2) pour Ă©tablir la connexion vers un autre socket TCP. Pour recevoir les connexions entrantes, attachez dâabord le socket avec bind (2) Ă une adresse locale et un port, puis appelez listen (2) pour mettre le socket dans un Ă©tat dâattente. AprĂšs cela, un nouveau socket peut ĂȘtre acceptĂ© pour chaque connexion entrante en utilisant accept (2). Un socket sur lequel accept (2) ou connect (2) ont Ă©tĂ© appelĂ©s correctement est complĂštement dĂ©fini et peut transmettre des donnĂ©es. Les donnĂ©es ne peuvent pas circuler sur les sockets en attente ou non connectĂ©s.
Linux prend en charge les extensions TCP Ă hautes performances RFC 1323. Ces extensions incluent la protection contre les numĂ©ros de sĂ©quence bouclant (PAWS â Protection Against Wrapped Sequence), lâaugmentation de fenĂȘtre (« Window Scaling ») et les horodatages (« timestamps »). Le Window Scaling permet dâutiliser des fenĂȘtres TCP larges (> 64 ko) pour gĂ©rer les liaisons avec une latence ou une bande passante Ă©levĂ©es. Pour les utiliser, les tailles des tampons dâĂ©mission et de rĂ©ception doivent ĂȘtre augmentĂ©es. Elles peuvent ĂȘtre dĂ©finies globalement avec les fichiers /proc/sys/net/ipv4/tcp_wmem et /proc/sys/net/ipv4/tcp_rmem ou individuellement pour chaque socket avec les options SO_SNDBUF et SO_RCVBUF de lâappel systĂšme setsockopt (2).
Les tailles maximales pour les tampons de socket dĂ©clarĂ©s Ă lâaide de SO_SNDBUF et SO_RCVBUF sont limitĂ©es par les valeurs des fichiers /proc/sys/net/core/rmem_max et /proc/sys/net/core/wmem_max . Notez que TCP alloue en fait deux fois plus de place que la taille demandĂ©e avec lâappel setsockopt (2), et quâun appel getsockopt (2) rĂ©ussi ne renverra pas la mĂȘme taille de tampon que celle rĂ©clamĂ©e dans lâappel setsockopt (2). TCP utilise lâespace supplĂ©mentaire Ă des fins administratives et pour des structures internes du noyau, et les valeurs des fichiers de /proc renvoient des tailles supĂ©rieures Ă celles des vĂ©ritables fenĂȘtres TCP. Pour les connexions individuelles, la taille du tampon de socket doit ĂȘtre dĂ©finie avant les appels listen (2) ou connect (2) pour quâelle soit prise en compte. Consultez socket (7) pour plus de dĂ©tails.
TCP permet dâindiquer des donnĂ©es urgentes. Elles signalent au rĂ©cepteur quâun message important est dans le flux de donnĂ©es et quâil doit ĂȘtre traitĂ© le plus tĂŽt possible. Pour envoyer des donnĂ©es urgentes, indiquez lâoption MSG_OOB Ă send (2). Quand des donnĂ©es urgentes sont reçues, le noyau envoie un signal SIGURG au processus ou au groupe de processus qui a Ă©tĂ© indiquĂ© comme propriĂ©taire du socket avec les ioctls SIOCSPGRP ou FIOSETOWN (ou lâopĂ©ration F_SETOWN de fcntl (2), spĂ©cifiĂ©e par POSIX.1-2001). Quand lâoption de socket SO_OOBINLINE est activĂ©e, les donnĂ©es urgentes sont mises dans le flux de donnĂ©es normal (et un programme peut dĂ©tecter leur emplacement avec lâioctl SIOCATMARK dĂ©crit ci-dessous), sinon, elles ne peuvent ĂȘtre reçues que lorsque lâattribut MSG_OOB est positionnĂ© pour recv (2) ou recvmsg (2).
Quand des données hors bande sont présentes, select (2) indique le descripteur de fichier comme ayant une condition exceptionnelle et poll (2) indique un événement POLLPRI .
Linux 2.4 a introduit un certain nombre de changements pour amĂ©liorer le dĂ©bit et lâextensibilitĂ©, ainsi que des fonctionnalitĂ©s amĂ©liorĂ©es. Certaines de ces fonctions incluent la prise en charge de sendfile (2) sans copie, la notification de congestion explicite (ECN), la nouvelle gestion des sockets TIME_WAIT, les options de socket « keep-alive » et la prise en charge des extensions Duplicate SACK (acquittement en double) .
Formats dâadresse
TCP est construit au-dessus de IP (consultez ip (7)). Les formats dâadresse dĂ©finis par ip (7) sâappliquent pour TCP. TCP ne gĂšre que les communications point-Ă -point. Les diffusion et multidiffusion (broadcast et multicast) ne sont pas gĂ©rĂ©es.
/proc interfaces
Les
paramĂštres TCP du systĂšme sont accessibles
dans les fichiers du répertoire
/proc/sys/net/ipv4/
. De plus, la plupart des
interfaces
/proc
dâIP sâappliquent
Ă TCP. Consultez
ip
(7). Les variables
indiquées comme
booléennes
prennent une
valeur entiĂšre, une valeur non nulle indiquant que
lâoption est active, une valeur nulle indiquant que
lâoption est inactive.
tcp_abc
(entier ; 0 par défaut ; Linux 2.6.15
Ă 3.8)
ContrĂŽler lâABC (« Appropriate Byte Count » : dĂ©compte dâoctets appropriĂ©), dĂ©fini dans la RFC 3465. ABC est une façon dâaugmenter la fenĂȘtre de congestion ( cwnd : congestion window) plus lentement en rĂ©ponse Ă des acquittements partiels. Les valeurs possibles sont :
|
0 |
augmenter cwnd une fois par acquittement (pas dâABC) |
||
|
1 |
augmenter cwnd une fois par acquittement dâun segment complet |
||
|
2 |
permettre lâaugmentation de cwnd par deux si lâacquittement correspond Ă deux segments, pour compenser les acquittements retardĂ©s. |
tcp_abort_on_overflow
(booléen ; désactivé par
défaut ; depuis
Linux 2.4)
Valider la rĂ©initialisation des connexions si le service en Ă©coute est trop lent et incapable de les traiter et de les accepter. Cela signifie que si un dĂ©bordement se produit Ă cause dâune surcharge temporaire, la connexion sera rĂ©tablie. Nâactivez cette option que si vous ĂȘtes sĂ»r que le dĂ©mon en Ă©coute ne peut pas ĂȘtre configurĂ© pour accepter les connexions plus vite. Cette option peut dĂ©sorienter les clients de votre serveur.
tcp_adv_win_scale (entier ; 2 par défaut ; depuis Linux 2.4)
Calculer le surplus du tampon comme bytes/2^tcp_adv_win_scale , si tcp_adv_win_scale est supérieur à  0 ; ou bytes-bytes/2^(-tcp_adv_win_scale) , si tcp_adv_win_scale est inférieur ou égal à zéro.
Lâespace du tampon de rĂ©ception du socket est partagĂ© entre lâapplication et le noyau. TCP conserve une portion du tampon en tant que fenĂȘtre TCP, câest la taille de la fenĂȘtre de rĂ©ception indiquĂ©e au correspondant. Le reste de cet espace est utilisĂ© comme tampon « dâapplication », pour isoler le rĂ©seau des latences de lâordonnanceur et de lâapplication. La valeur par dĂ©faut (2) de tcp_adv_win_scale indique que lâespace utilisĂ© pour le tampon dâapplication est un quart de lâespace total.
tcp_allowed_congestion_control
(chaßne ; voir le texte pour la valeur
par défaut ; depuis Linux 2.4.20)
Afficher ou dĂ©finir les choix dâalgorithmes de contrĂŽle de congestion disponibles pour les processus non privilĂ©giĂ©s (consultez la description de lâoption TCP_CONGESTION pour les sockets). Les Ă©lĂ©ments de la liste sont sĂ©parĂ©s par des espaces et terminĂ©s par un caractĂšre de changement de ligne. La liste est un sous-ensemble des algorithmes de la liste tcp_available_congestion_control . La valeur par dĂ©faut est « reno » plus la dĂ©finition par dĂ©faut de tcp_congestion_control .
tcp_autocorking (booléen ; activé par défaut ; depuis Linux 3.14)
Si cette option est active, le noyau essaie de fusionner les petites Ă©critures (issues dâappels consĂ©cutifs Ă write (2) et sendmsg (2)) autant que possible, afin de diminuer le nombre total de paquets envoyĂ©s. La fusion est effectuĂ©e si au moins un paquet avant le flux est en attente dans les files dâattente Qdisc ou dâĂ©mission du pĂ©riphĂ©rique. Les applications peuvent utiliser lâoption de socket TCP_CORK afin de contrĂŽler comment et quand libĂ©rer leurs sockets.
tcp_available_congestion_control
(chaßne ; lecture seule ; depuis
Linux 2.4.20)
Afficher une liste des algorithmes de contrĂŽle de congestion qui sont enregistrĂ©s. Les Ă©lĂ©ments de la liste sont sĂ©parĂ©s par des espaces et terminĂ©s par un caractĂšre de changement de ligne. Cette liste limite lâensemble des algorithmes permis pour la liste dans tcp_allowed_congestion_control . Plus dâalgorithmes de contrĂŽle de congestion peuvent ĂȘtre disponibles sous forme de modules, mais non chargĂ©s.
tcp_app_win (entier ; 31 par défaut ; depuis Linux 2.4)
Cette variable dĂ©finit combien dâoctets de la fenĂȘtre TCP sont rĂ©servĂ©s pour le surplus de tampon.
Un maximum de ( window/2^tcp_app_win , mss â maximum segment size) octets de la fenĂȘtre sont rĂ©servĂ©s pour le tampon dâapplication. Une valeur nulle indique quâaucune portion nâest rĂ©servĂ©e.
tcp_base_mss (entier ; 512 par défaut ; depuis Linux 2.6.17)
La valeur initiale de search_low Ă utiliser pour la dĂ©couverte du MTU (maximum transmission unit) du chemin dans la couche de transport (interrogation du MTU). Si la dĂ©couverte du MTU est activĂ©e, il sâagit du MSS (maximum segment size) de dĂ©part utilisĂ© par la connexion.
tcp_bic
(booléen ;
désactivé par défaut ; Linux
2.4.27/2.6.6 Ă Linux
2.6.13)
Activer lâalgorithme de contrĂŽle de congestion TCP BIC (Binary Increase Congestion control). BIC TCP est une modification uniquement cĂŽtĂ© Ă©metteur qui assure une linĂ©aritĂ© du RTT (DĂ©lai dâaller-retour, « Round-Trip Time ») avec de grandes fenĂȘtres, tout en permettant un passage Ă lâĂ©chelle et en se bornant Ă la compatibilitĂ© TCP. Le protocole combine deux schĂ©mas appelĂ©s augmentation additive et augmentation de recherche dichotomique. Lorsque la fenĂȘtre de congestion est grande, lâaugmentation additive avec un grand incrĂ©ment assure une bonne linĂ©aritĂ© du RTT et un bon passage Ă lâĂ©chelle. Avec des petites fenĂȘtres de congestion, lâaugmentation de recherche dichotomique augmente la compatibilitĂ© TCP.
tcp_bic_low_window
(entier ; 14 par dĂ©faut ; Linux 2.4.27/2.6.6 Ă
Linux
2.6.13)
Corriger la fenĂȘtre limite (en paquets) pour laquelle BIC TCP commence Ă ajuster la fenĂȘtre de congestion. Sous cette limite, BIC TCP se comporte comme lâalgorithme TCP Reno par dĂ©faut.
tcp_bic_fast_convergence
(booléen ; activé par défaut ; Linux
2.4.27/2.6.6 Ă Linux 2.6.13)
Forcer BIC TCP Ă rĂ©pondre plus vite aux changements de fenĂȘtre de congestion. Permet Ă deux flux partageant la mĂȘme connexion de converger plus vite.
tcp_congestion_control
(chaßne ; voir le texte pour la valeur par
défaut ; depuis Linux 2.4.13)
DĂ©finir lâalgorithme de contrĂŽle de congestion Ă utiliser par dĂ©faut pour les nouvelles connexions. Lâalgorithme « reno » est toujours disponible, mais des choix supplĂ©mentaires sont disponibles en fonction de la configuration du noyau. La valeur par dĂ©faut pour ce fichier est dĂ©finie dans la configuration du noyau.
tcp_dma_copybreak (entier ; 4096 par défaut ; depuis Linux 2.6.24)
La limite infĂ©rieure, en octets, de la taille des lectures de socket qui seront transfĂ©rĂ©es sur le moteur de copie DMA (accĂšs direct Ă la mĂ©moire), sâil y en a un sur le systĂšme et si le noyau a Ă©tĂ© configurĂ© avec lâoption CONFIG_NET_DMA .
tcp_dsack (booléen ; activé par défaut ; depuis Linux 2.4)
Activer la prise en charge de TCP Duplicate SACK de la RFCÂ 2883.
tcp_fastopen (masque de bits ; défaut : 0x1 ; depuis Linux 3.7)
Activer la prise en charge de lâaccĂ©lĂ©ration de connexion (Fast Open) de la RFC 7413. Ce drapeau est utilisĂ© comme un tableau de bits avec les valeurs suivantes :
|
0x1 |
Activer Fast Open du cÎté client |
||
|
0x2 |
Activer Fast Open du cÎté serveur |
||
|
0x4 |
Autoriser le cÎté client à transmettre des données dans SYN sans option Fast Open |
||
|
0x200 |
Autoriser le cÎté serveur à accepter des données de SYN sans option Fast Open |
||
|
0x400 |
Autoriser Fast Open pour tous les écouteurs sans option de socket TCP_FASTOPEN |
tcp_fastopen_key (depuis Linux 3.7)
Définir la clé Fast Open RFC 7413 cÎté serveur pour générer le cookie de Fast Open quand la prise en charge de Fast Open cÎté serveur est activée.
tcp_ecn
(entier ; valeur
par défaut : voir ci-dessous ; depuis Linux
2.4)
Activer la notification explicite de congestion (ECN) de la RFCÂ 3168.
Ce fichier peut prendre une des valeurs suivantes :
|
0 |
DĂ©sactiver lâECN. Ne jamais initier ni accepter lâECN. Valeur par dĂ©faut jusquâĂ Linux 2.6.30 inclus. |
||
|
1 |
Activer lâECN si demandĂ©e par les connexions entrantes et aussi requĂ©rir lâECN sur les essais de connexion sortante. |
||
|
2 |
Activer lâECN si demandĂ©e par les connexions entrantes, mais ne pas requĂ©rir lâECN sur les connexions sortantes. Cette valeur est prise en charge et est la valeur par dĂ©faut depuis Linux 2.6.31. |
LorsquâactivĂ©, la connectivitĂ© vers certaines destinations peut ĂȘtre affectĂ©e Ă cause dâĂ©quipements intermĂ©diaires anciens au comportement dĂ©fectueux le long du chemin, faisant que des connexions sont rejetĂ©es. Cependant, pour faciliter et encourager le dĂ©ploiement de lâoption 1 et contourner de tels Ă©quipements boguĂ©s, lâoption tcp_ecn_fallback a Ă©tĂ© introduite.
tcp_ecn_fallfack (booléen ; activé par défaut ; depuis Linux 4.1)
Activer la solution de secours de la RFC 3168, Section 6.1.1.1. LorsquâactivĂ©e, les SYN de la configuration ECN arrivant Ă Ă©chĂ©ance dans le dĂ©lai normal de retransmission de SYN seront renvoyĂ©s avec CWR (Congestion Window Reduced) et ECE (ECN-Echo) effacĂ©s.
tcp_fack (booléen ; activé par défaut ; depuis Linux 2.4)
Activer la prise en charge de TCP Forward Acknowledgement.
tcp_fin_timeout (entier ; 60 par défaut ; depuis Linux 2.2)
Nombre de secondes Ă attendre un paquet final FIN avant que le socket soit fermĂ© de force. Strictement parlant, câest une violation des spĂ©cifications TCP, mais nĂ©cessaire pour empĂȘcher les attaques par dĂ©ni de service. La valeur par dĂ©faut dans les noyaux 2.2 Ă©tait 180.
tcp_frto (entier ; 0 par défaut ; depuis Linux 2.4.21/2.6)
Activer F-RTO (forward RTO-recovery), un algorithme amĂ©liorĂ© de rĂ©cupĂ©ration pour les temporisations de retransmission TCP (RTO : « retransmission timeouts »). Cette option est particuliĂšrement intĂ©ressante dans les environnements sans fil, oĂč la perte des paquets est en gĂ©nĂ©ral due Ă des interfĂ©rences radio alĂ©atoires plutĂŽt quâĂ la congestion des routeurs intermĂ©diaires. Consultez la RFC 4138 pour plus de dĂ©tails.
Ce fichier peut prendre une des valeurs suivantes :
|
0 |
DĂ©sactivĂ©. CâĂ©tait la valeur par dĂ©faut jusquâĂ Linux 2.6.23 inclus. |
||
|
1 |
La version de base de lâalgorithme F-RTO est activĂ©e. |
||
|
2 |
Activer la version F-RTO amĂ©liorĂ©e de SACK si le flux utilise des SACK. La version de base peut aussi ĂȘtre utilisĂ©e quand des SACK sont utilisĂ©s, mĂȘme si dans ce cas des scĂ©narios existent dans lesquels F-RTO interagit mal avec le comptage de paquets du flux TCP utilisant des SACK. Câest la valeur par dĂ©faut depuis Linux 2.6.24. |
Avant Linux 2.6.22, ce paramÚtre était une valeur booléenne, qui ne prenait en charge que les valeurs 0 et 1 ci-dessus.
tcp_frto_response (entier ; 0 par défaut ; depuis Linux 2.6.22)
Quand F-RTO a dĂ©tectĂ© une fausse expiration dâune temporisation TCP (câest-Ă -dire quâelle aurait pu ĂȘtre Ă©vitĂ©e si TCP avait eu un dĂ©lai de retransmission plus long), TCP a plusieurs options sur ce quâil faut faire par la suite. Les valeurs possibles sont :
|
0 |
Diminution de moitiĂ© du dĂ©bit ; une rĂ©ponse prudente et sans problĂšmes qui rĂ©sulte en une diminution de moitiĂ© de la fenĂȘtre de congestion ( cwnd ) et du seuil de dĂ©marrage lent ( ssthresh , « slow-start threshold ») aprĂšs un seul RTT (Round-trip time â temps dâaller-retour). |
||
|
1 |
Réponse trÚs prudente ; déconseillée parce que bien que correcte, elle interagit mal avec le reste de TCP sous Linux ; elle réduit immédiatement de moitié de cwnd et de ssthresh . |
||
|
2 |
RĂ©ponse risquĂ©e ; supprime les mesures de contrĂŽle de congestion qui ne sont pas jugĂ©es nĂ©cessaires (en ignorant la possibilitĂ© dâune perte de retransmission qui devrait inciter TCP Ă ĂȘtre plus prudent) ; cwnd et ssthresh sont redĂ©finis aux valeurs antĂ©rieures Ă lâexpiration du dĂ©lai. |
tcp_keepalive_intvl (entier ; 75 par défaut ; depuis Linux 2.4)
Lâintervalle en secondes entre deux messages TCP keep-alive.
tcp_keepalive_probes (entier ; 9 par défaut ; depuis Linux 2.2)
Nombre maximal de sondages KA (keep-alive) de TCP Ă envoyer avant dâabandonner et de tuer la connexion si aucune rĂ©ponse nâest obtenue de lâautre partie.
tcp_keepalive_time (entier ; 7200 par défaut ; depuis Linux 2.2)
Nombre de secondes durant lesquelles une connexion est sans activitĂ© avant que TCP envoie des sondages keep-alive. Ceux-ci ne sont envoyĂ©s que si lâoption SO_KEEPALIVE de socket est activĂ©e. La valeur par dĂ©faut est 7200 secondes (2 heures). Une connexion inactive est coupĂ©e environ 11 minutes plus tard (9 sondages avec 75 secondes dâĂ©cart).
Notez que les dĂ©lais des mĂ©canismes de connexion sous-jacents ou de lâapplication peuvent ĂȘtre bien plus courts.
tcp_low_latency
(booléen ; désactivé par défaut
; depuis Linux
2.4.21/2.6 ; obsolĂšte depuis Linux 4.14)
Sâil est activĂ©, la pile TCP prend des dĂ©cisions qui favorisent une latence plus faible par opposition Ă un dĂ©bit plus grand. Si cette option est dĂ©sactivĂ©e, un dĂ©bit plus grand est prĂ©fĂ©rĂ©. Un cas oĂč cette valeur par dĂ©faut devrait ĂȘtre changĂ©e est par exemple une grille de calcul Beowulf. Depuis Linux 4.14, la valeur de ce fichier est ignorĂ©e, mĂȘme sâil existe toujours.
tcp_max_orphans
(entier ; valeur par défaut : voir
ci-dessous ; depuis
Linux 2.4)
Le nombre maximal de sockets TCP orphelins (attachĂ©s Ă aucun gestionnaire de fichier utilisateur) sur le systĂšme. Quand ce nombre est dĂ©passĂ©, la connexion orpheline est rĂ©initialisĂ©e et un message dâavertissement est affichĂ©. Cette limite nâexiste que pour Ă©viter les attaques simples par dĂ©ni de service. Sa diminution nâest pas recommandĂ©e. Certaines conditions de rĂ©seau peuvent nĂ©cessiter lâaugmentation de cette limite, mais notez que chaque socket orphelin peut consommer jusquâĂ ~64 ko de mĂ©moire ne pouvant pas ĂȘtre placĂ©s en espace dâĂ©change. La valeur par dĂ©faut est Ă©gale au paramĂštre NR_FILE du noyau. Elle est ajustĂ©e en fonction de la mĂ©moire disponible sur le systĂšme.
tcp_max_syn_backlog
(entier ; valeur par défaut : voir
ci-dessous ;
depuis Linux 2.2)
Le nombre maximal de requĂȘtes de connexions en attente qui nâont pas encore reçu dâacquittement de la part du client se connectant. Si ce nombre est dĂ©passĂ©, le noyau commencera Ă rejeter des requĂȘtes. La valeur par dĂ©faut, 256, est augmentĂ©e jusquâĂ 1024 si la mĂ©moire prĂ©sente est suffisante (>= 128 Mo) et peut ĂȘtre diminuĂ©e Ă 128 sur les systĂšmes avec trĂšs peu de mĂ©moire (<= 32 Mo).
Avant Linux 2.6.20, et sâil fallait augmenter cette valeur au dessus de 1024, il Ă©tait recommandĂ© de modifier la taille de la table de hachage SYNACK ( TCP_SYNQ_HSIZE ) dans include/net/tcp.h pour conserver
TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog
et le noyau devait ĂȘtre recompilĂ©. Dans Linux 2.6.20, la taille fixe TCP_SYNQ_HSIZE a Ă©tĂ© supprimĂ©e en faveur dâune taille dynamique.
tcp_max_tw_buckets
(entier ; valeur par défaut : voir
ci-dessous ;
depuis Linux 2.4)
Le nombre maximal de sockets dans lâĂ©tat TIME_WAIT autorisĂ©s sur le systĂšme. Cette limite nâexiste que pour Ă©viter les attaques simples par dĂ©ni de service. La valeur par dĂ©faut de NR_FILE*2 est ajustĂ©e en fonction de la mĂ©moire disponible. Si ce nombre est atteint, le socket est fermĂ© et un avertissement est affichĂ©.
tcp_moderate_rcvbuf (booléen ; activé par défaut ; Linux 2.4.17/2.6.7)
Si activé, TCP effectue un ajustage automatique du tampon de réception, en essayant de trouver la bonne taille automatiquement (pas plus grand que tcp_rmem[2] ) pour correspondre à la taille nécessaire pour un débit maximal sur le chemin.
tcp_mem (depuis Linux 2.4)
Il sâagit dâun vecteur de trois entiers : [low, pressure, high]. Ces limites, mesurĂ©es dans une unitĂ© qui correspond Ă la taille des pages systĂšme, sont utilisĂ©es par TCP pour surveiller sa consommation mĂ©moire. Les valeurs par dĂ©faut sont calculĂ©es au moment du dĂ©marrage Ă partir de la mĂ©moire disponible (TCP ne peut utiliser pour cela que la mĂ©moire basse qui est limitĂ©e Ă environ 900 Mo sur les systĂšmes 32 bits. Les systĂšmes 64 bits ne souffrent pas de cette limitation).
|
low |
TCP ne cherche pas Ă rĂ©guler ses allocations mĂ©moire quand le nombre de pages quâil a allouĂ©es est en dessous de ce nombre |
pressure
Lorsque la taille mĂ©moire allouĂ©e par TCP dĂ©passe ce nombre de pages, TCP modĂšre sa consommation mĂ©moire. LâĂ©tat de mĂ©moire chargĂ©e (pressure) se termine lorsque le nombre de pages allouĂ©es descend en dessous de la marque low .
|
high |
Le nombre global maximal de pages que TCP allouera. Cette valeur surcharge tout autre limite imposée par le noyau. |
tcp_mtu_probing (entier ; 0 par défaut ; Linux 2.6.17)
Ce paramÚtre contrÎle la découverte du MTU du chemin de la couche transport (« TCP Packetization-Layer Path MTU Discovery »). Le fichier peut prendre les valeurs suivantes :
|
0 |
Désactivé |
||
|
1 |
Désactivé par défaut, activé quand un trou noir ICMP est détecté |
||
|
2 |
Toujours activé, utilise le MSS de départ de tcp_base_mss . |
tcp_no_metrics_save
(booléen ; désactivé par
défaut ; depuis
Linux 2.6.6)
Par défaut, TCP sauvegarde différentes métriques de connexion dans le cache des routes quand la connexion ferme, de telle sorte que les connexions ouvertes dans un futur proche puissent les utiliser pour définir les conditions initiales. En général, cela augmente globalement les performances, mais peut aussi parfois les dégrader. Si tcp_no_metrics_save est activé, TCP ne sauvera pas de métriques dans le cache lors de la fermeture des connexions.
tcp_orphan_retries (entier ; 8 par défaut ; depuis Linux 2.4)
Le nombre maximal de tentatives pour sonder lâautre extrĂ©mitĂ© dâune connexion qui a Ă©tĂ© fermĂ©e par notre cĂŽtĂ©.
tcp_reordering (entier ; 3 par défaut ; depuis Linux 2.4)
Le nombre maximal de rĂ©arrangements dâun paquet dans un flux de paquets TCP sans que TCP assume la perte du paquet et passe dans un dĂ©marrage lent. Il nâest pas conseillĂ© de modifier cette valeur. Câest une mĂ©trique sur la dĂ©tection de rĂ©arrangement de paquet conçue pour minimiser la diminution de dĂ©bit et les retransmissions inutiles provoquĂ©es par le rĂ©arrangement de paquet dans une connexion.
tcp_retrans_collapse (booléen ; activé par défaut ; depuis Linux 2.2)
Essayer dâenvoyer des paquets de taille standard durant la retransmission.
tcp_retries1 (entier ; 3 par défaut ; depuis Linux 2.2)
Le nombre de fois que TCP essayera de retransmettre un paquet sur une connexion établie normalement, sans demander de contribution supplémentaire de la couche réseau concernée. Une fois ce nombre atteint, la couche réseau doit remettre à jour son routage, si possible avant chaque nouvelle transmission. La valeur par défaut, 3, est le minimum indiqué dans la RFC.
tcp_retries2 (entier ; 15 par défaut ; depuis Linux 2.2)
Le nombre maximal de fois quâun paquet TCP est retransmis sur une connexion Ă©tablie avant dâabandonner. La valeur par dĂ©faut est 15, ce qui correspond Ă une durĂ©e entre 13 et 30 minutes suivant le dĂ©lai maximal de retransmission. La limite minimale de 100 secondes spĂ©cifiĂ©e par la RFC 1122 est en gĂ©nĂ©ral considĂ©rĂ©e comme trop courte.
tcp_rfc1337 (booléen ; désactivé par défaut ; depuis Linux 2.2)
Activer le comportement TCP conformément à la RFC 1337. Si désactivé, et si un RST est reçu en état TIME_WAIT, le socket est immédiatement fermé sans attendre la fin de la période TIME_WAIT.
tcp_rmem (depuis Linux 2.4)
Il sâagit dâun vecteur de trois entiers : [min, default, max]. Ces paramĂštres sont utilisĂ©s par TCP pour rĂ©guler les tailles du tampon de rĂ©ception. TCP ajuste dynamiquement la taille Ă partir de la valeur par dĂ©faut, dans lâintervalle de ces valeurs, en fonction de la mĂ©moire disponible sur le systĂšme.
|
min |
taille minimale du tampon de rĂ©ception utilisĂ©e par chaque socket TCP. La valeur par dĂ©faut est la taille des pages du systĂšme (sous Linux 2.4, la valeur par dĂ©faut est de 4 Ko et descend Ă PAGE_SIZE octets sur les systĂšmes avec peu de mĂ©moire). Cette valeur assure quâen mode de mĂ©moire pressure , les allocations en dessous de cette taille rĂ©ussiront. Elle nâest pas utilisĂ©e pour limiter la taille du tampon de rĂ©ception dĂ©clarĂ©e en utilisant lâoption SO_RCVBUF sur le socket. |
default
la taille par dĂ©faut du tampon de rĂ©ception pour un socket TCP. Cette valeur Ă©crase la taille par dĂ©faut initiale de la valeur globale net.core.rmem_default dĂ©finie pour tous les protocoles. La valeur par dĂ©faut est 87 380 octets (sous Linux 2.4, elle descend Ă 43 689 sur les systĂšmes avec peu de mĂ©moire). Si une taille plus grande est souhaitĂ©e, il faut augmenter cette valeur (pour affecter tous les sockets). Pour utiliser une grande fenĂȘtre TCP, lâoption net.ipv4.tcp_window_scaling doit ĂȘtre activĂ©e (elle lâest par dĂ©faut).
|
max |
la taille maximale du tampon de rĂ©ception utilisĂ© par chaque socket TCP. Cette valeur ne surcharge pas la valeur globale net.core.rmem_max . Elle ne permet pas de limiter la taille du tampon de rĂ©ception dĂ©clarĂ©e avec lâoption SO_RCVBUF sur le socket. La valeur par dĂ©faut est calculĂ©e par la formule : |
max(87380, min(4Â MB, tcp_mem [1]*PAGE_SIZE/128))
Sous Linux 2.4, la valeur par défaut est de 87380*2 octets et réduite à 87 380 sur les systÚmes avec peu de mémoire.
tcp_sack (booléen ; activé par défaut ; depuis Linux 2.2)
Activer lâacquittement TCP sĂ©lectif (RFC 2018).
tcp_slow_start_after_idle
(booléen ; activé par
défaut ; depuis
Linux 2.6.18)
Si activĂ©, adopte le comportement de la RFC 2861 et lâexpiration de la fenĂȘtre de congestion aprĂšs une pĂ©riode dâinactivitĂ©. Une pĂ©riode dâinactivitĂ© est dĂ©finie comme le RTO (« retransmission timeout » : dĂ©lai de retransmission). Si dĂ©sactivĂ©, la fenĂȘtre de congestion nâexpirera pas aprĂšs une pĂ©riode dâinactivitĂ©.
tcp_stdurg (booléen ; désactivé par défaut ; depuis Linux 2.2)
Si cette option est activĂ©e, alors utilisation de lâinterprĂ©tation RFC 1122 du champ TCP de pointeur de donnĂ©es urgentes. Selon cette interprĂ©tation, le pointeur dâurgence pointe vers le dernier octet des donnĂ©es urgentes. Si cette option est dĂ©sactivĂ©e, alors utilisation de lâinterprĂ©tation compatible avec BSD de ce pointeur : pointage vers le premier octet aprĂšs les donnĂ©es urgentes. Activer cette option peut poser des problĂšmes dâinteropĂ©rabilitĂ©.
tcp_syn_retries (entier ; 6 par défaut ; depuis Linux 2.2)
Le nombre maximal de fois oĂč une demande SYN initiale sera retransmise pour une tentative de connexion TCP active. Cette valeur ne doit pas dĂ©passer 255. La valeur par dĂ©faut est 6, ce qui correspond approximativement Ă des essais pendant 127 secondes. Avant Linux 3.7, la valeur par dĂ©faut Ă©tait 5, ce qui (en conjonction avec des calculs basĂ©s sur dâautres paramĂštres du noyau) correspondait approximativement Ă 180 secondes.
tcp_synack_retries (entier ; 5 par défaut ; depuis Linux 2.2)
Le nombre maximal de retransmissions dâun segment SYN/ACK pour une connexion TCP passive. Ce nombre ne doit pas dĂ©passer 255.
tcp_syncookies (entier ; 1 par défaut ; depuis Linux 2.2)
Activer les syncookies TCP (SYN cookies). Le noyau doit ĂȘtre compilĂ© avec lâoption CONFIG_SYN_COOKIES . La fonctionnalitĂ© des syncookies essaie de protĂ©ger un socket dâune attaque par inondation de SYN. Elle nâest Ă utiliser quâen dernier ressort. Elle constitue une violation du protocole TCP et entre en conflit avec dâautres zones de TCP comme les extensions TCP, ce qui peut poser des problĂšmes aux clients ou aux relais. Ce mĂ©canisme nâest pas recommandĂ© comme moyen de rĂ©glage sur un serveur trĂšs chargĂ© pour faire face Ă des conditions de surcharge ou de mauvaise configuration. Pour des alternatives recommandĂ©es, consultez tcp_max_syn_backlog , tcp_synack_retries , tcp_abort_on_overflow . Ă rĂ©gler Ă une des valeurs suivantes :
|
0 |
Désactivation des syncookies TCP. |
||
|
1 |
Envoi de syncookies quand la file dâaccumulation de SYN dâun socket dĂ©borde. |
||
|
2 |
(depuis Linux 3.12) Envoi de syncookies sans conditions. Cela peut ĂȘtre utile pour tester un rĂ©seau. |
tcp_timestamps (entier ; par défaut 1 ; depuis Linux 2.2)
à régler à une des valeurs suivantes pour activer ou désactiver les horodatages TCP de la RFC 1323 :
|
0 |
Désactiver les horodatages. |
||
|
1 |
Activer les horodatages comme dĂ©finis dans la RFC 1323 et utiliser une heure de dĂ©but alĂ©atoire pour chaque connexion plutĂŽt que dâutiliser lâheure actuelle. |
||
|
2 |
Comme pour la valeur 1, mais sans décalages aléatoires. Régler tcp_timestamps à cette valeur est significatif depuis Linux 4.10. |
tcp_tso_win_divisor (entier ; 3 par défaut ; depuis Linux 2.6.9)
Ce paramĂštre contrĂŽle le pourcentage de la fenĂȘtre de congestion qui peut ĂȘtre utilisĂ© par une unique trame TSO (TCP Segmentation Offload). La valeur de ce paramĂštre est un compromis entre une transmission par rafales et construire des trames avec un TSO plus importantes.
tcp_tw_recycle
(booléen ; désactivé par défaut
; de Linux 2.4 Ă Linux
4.11)
Activer le recyclage rapide des sockets TIME_WAIT. Activer cette option nâest pas recommandĂ© car lâIP distante peut ne pas incrĂ©menter de maniĂšre monotone les horodatages (pĂ©riphĂ©riques derriĂšre un NAT, pĂ©riphĂ©riques avec dĂ©calages dâhorodatage par connexion). Consulter les RFC 1323 (PAWS) et RFC 6191.
tcp_tw_reuse (booléen ; désactivé par défaut ; depuis Linux 2.4.19/2.6)
Permettre de rĂ©utiliser les sockets TIME_WAIT pour les nouvelles connexions quand câest sĂ»r du point de vue du protocole. Cela ne devrait pas ĂȘtre modifiĂ© sans lâavis ou la demande dâexperts techniques.
tcp_vegas_cong_avoid
(booléen ; désactivé par défaut
; Linux 2.2 Ă
Linux 2.6.13)
Activer lâalgorithme TCP Vegas dâĂ©vitement de congestion. TCP Vegas est une modification cĂŽtĂ© Ă©metteur de TCP qui anticipe la survenue de congestion en estimant la bande passante. TCP Vegas ajuste la vitesse dâĂ©mission en modifiant la fenĂȘtre de congestion. TCP Vegas devrait diminuer la perte de paquets, mais nâest pas aussi agressif que TCP Reno.
tcp_westwood
(booléen ; désactivé par défaut
; Linux 2.4.26/2.6.3 Ă
Linux 2.6.13)
Activer lâalgorithme TCP Westwood+ de contrĂŽle de congestion. TCP Westwood+ est une modification cĂŽtĂ© Ă©metteur de la pile de protocole TCP Reno qui optimise la performance du contrĂŽle de congestion TCP. Il est basĂ© sur une estimation de bande passante de bout en bout pour dĂ©finir la fenĂȘtre de congestion et le seuil de redĂ©marrage lent aprĂšs un Ă©pisode de congestion. GrĂące Ă cette estimation, TCP Westwood+ dĂ©finit de façon adaptative un seuil de dĂ©marrage lent et une fenĂȘtre de congestion qui prennent en compte la bande passante utilisĂ©e au moment oĂč la congestion se produit. TCP Westwood+ augmente de façon significative lâĂ©quitĂ© par rapport Ă TCP Reno dans les rĂ©seaux filaires, et le dĂ©bit sur des liens sans fil.
tcp_window_scaling (booléen ; activé par défaut ; depuis Linux 2.2)
Activer le dimensionnement de la fenĂȘtre TCP (RFC 1323). Cette fonctionnalitĂ© permet dâutiliser une grande fenĂȘtre (> 64 Ko) sur une connexion TCP si le correspondant la prend en charge. Normalement, les 16 bits du champ de largeur de fenĂȘtre dans lâen-tĂȘte TCP limitent la taille Ă moins de 64 Ko. Si des fenĂȘtres plus grandes sont souhaitĂ©es, lâapplication peut augmenter la taille de leurs tampons de socket et lâoption tcp_window_scaling sera utilisĂ©e. Si tcp_window_scaling est dĂ©sactivĂ©e, TCP ne nĂ©gociera pas lâutilisation du dimensionnement des fenĂȘtres avec le correspondant lors de lâinitialisation de la connexion.
tcp_wmem (depuis Linux 2.4)
Il sâagit dâun vecteur de trois entiers : [min, default, max]. Ces paramĂštres servent Ă TCP pour rĂ©guler la taille du tampon dâĂ©mission. La taille est ajustĂ©e dynamiquement Ă partir de la valeur par dĂ©faut, dans lâintervalle de ces valeurs, en fonction de la mĂ©moire disponible.
|
min |
La taille minimale du tampon dâĂ©mission utilisĂ© par chaque socket TCP. La valeur par dĂ©faut est la taille des pages du systĂšme (sous Linux 2.4, la valeur par dĂ©faut est de 4 Ko). Cette valeur assure quâen mode de mĂ©moire « pressure », les allocations en dessous de cette taille rĂ©ussiront. Elle nâest pas utilisĂ©e pour limiter la taille du tampon dâĂ©mission dĂ©clarĂ©e en utilisant lâoption SO_SNDBUF sur un socket. |
default
La taille par dĂ©faut du tampon dâĂ©mission pour un socket TCP. Cette valeur surcharge la taille par dĂ©faut de valeur globale /proc/sys/net/core/wmem_default dĂ©finie pour tous les protocoles. La valeur par dĂ©faut est 16 Ko. Si une taille plus grande est dĂ©sirĂ©e, il faut augmenter cette valeur (pour affecter tous les sockets). Pour utiliser une grande fenĂȘtre TCP, /proc/sys/net/ipv4/tcp_window_scaling doit ĂȘtre positionnĂ© Ă une valeur non nulle (par dĂ©faut).
|
max |
La taille maximale du tampon dâĂ©mission utilisĂ©e par chaque socket TCP. Cette valeur ne surcharge pas la valeur globale qui se trouve dans /proc/sys/net/core/wmem_max . Elle ne permet pas de limiter la taille du tampon dâĂ©mission dĂ©clarĂ©e avec lâoption SO_SNDBUF sur un socket. La valeur par dĂ©faut est calculĂ©e avec la formule : |
max(65536, min(4Â MB, tcp_mem [1]*PAGE_SIZE/128))
Sous Linux 2.4, la valeur par défaut est de 128 Ko, réduite à 64 Ko sur les systÚmes avec peu de mémoire.
tcp_workaround_signed_windows
(booléen ; désactivé par
défaut ; depuis
Linux 2.6.26)
Sâil est activĂ©, supposer que lâabsence de rĂ©ception dâune option de dimensionnement de la fenĂȘtre signifie que la pile TCP distante nâest pas correcte et traite la fenĂȘtre comme une quantitĂ© signĂ©e. Sâil est dĂ©sactivĂ©, supposer que les piles TCP distantes ne sont jamais dysfonctionnelles mĂȘme si aucune option de dimensionnement de la fenĂȘtre nâest reçue de leur part.
Options de socket
Pour lire ou Ă©crire une option de socket TCP, appeler getsockopt (2) pour la lecture ou setsockopt (2) pour lâĂ©criture, avec lâargument niveau de socket valant IPPROTO_TCP . Sauf mention contraire, optval est un pointeur vers un int . De plus, la plupart des options de socket IPPROTO_IP sont valables sur les sockets TCP. Pour plus de dĂ©tails, voir ip (7).
Voici une liste
dâoptions de socket spĂ©cifiques Ă TCP.
Pour des détails sur les autres options applicables
aux sockets TCP, consulter
socket
(7).
TCP_CONGESTION
(depuis Linux 2.6.13)
Lâargument pour cette option est une chaĂźne. Cette option permet Ă lâappelant de dĂ©finir lâalgorithme de contrĂŽle de congestion TCP Ă utiliser pour chaque socket. Les processus non privilĂ©giĂ©s sont contraints dâutiliser un des algorithmes de tcp_allowed_congestion_control (dĂ©crit ci-dessus). Les processus privilĂ©giĂ©s ( CAP_NET_ADMIN ) peuvent choisir nâimporte quel algorithme de contrĂŽle de congestion disponible (consulter la description de tcp_available_congestion_control ci-dessus).
TCP_CORK (depuis Linux 2.2)
Ne pas envoyer de trames partielles. Toutes les trames partielles en attente sont envoyĂ©es lorsque cette option est effacĂ©e Ă nouveau. Cela permet de prĂ©parer les en-tĂȘtes avant dâappeler sendfile (2), ou pour optimiser le dĂ©bit. Avec lâimplĂ©mentation actuelle, il y a une limite de 200 millisecondes au temps pendant lequel des donnĂ©es sont agrĂ©gĂ©es avec TCP_CORK . Si cette limite est atteinte, les donnĂ©es mises en attente sont automatiquement transmises. Cette option ne peut ĂȘtre combinĂ©e avec TCP_NODELAY que depuis Linux 2.5.71. Cette option ne doit pas ĂȘtre utilisĂ©e dans du code conçu pour ĂȘtre portable.
TCP_DEFER_ACCEPT (depuis Linux 2.4)
Permettre Ă un processus en Ă©coute de nâĂȘtre rĂ©veillĂ© que si des donnĂ©es arrivent sur le socket. Cette option prend une valeur entiĂšre (en secondes), correspondant au nombre maximal de tentatives que TCP fera pour terminer la connexion. Cette option ne doit pas ĂȘtre utilisĂ©e dans du code conçu pour ĂȘtre portable.
TCP_INFO (depuis Linux 2.4)
Cette option est utilisĂ©e pour collecter des informations sur un socket. Le noyau renvoie une structure struct tcp_info comme dĂ©finie dans le fichier /usr/include/linux/tcp.h . Cette option ne doit pas ĂȘtre utilisĂ©e dans du code conçu pour ĂȘtre portable.
TCP_KEEPCNT (depuis Linux 2.4)
Le nombre maximal de messages keepalive envoyĂ©s par TCP avant dâabandonner une connexion. Cette option ne doit pas ĂȘtre utilisĂ©e dans du code conçu pour ĂȘtre portable.
TCP_KEEPIDLE (depuis Linux 2.4)
La durĂ©e (en secondes) dâinactivitĂ© sur une connexion avant que TCP commence Ă envoyer les messages keepalive, si lâoption SO_KEEPALIVE a Ă©tĂ© activĂ©e sur le socket. Cette option ne doit pas ĂȘtre employĂ©e dans du code conçu pour ĂȘtre portable.
TCP_KEEPINTVL (depuis Linux 2.4)
DĂ©lai (en seconde) entre deux messages keepalive. Cette option ne doit pas ĂȘtre utilisĂ©e dans du code conçu pour ĂȘtre portable.
TCP_LINGER2 (depuis Linux 2.4)
La durĂ©e des sockets orphelins dans lâĂ©tat FIN_WAIT2. Cette option peut servir Ă surcharger la valeur du paramĂštre systĂšme du fichier /proc/sys/net/ipv4/tcp_fin_timeout spĂ©cialement pour le socket. Ă ne pas confondre avec lâoption SO_LINGER du niveau socket (7). Cette option ne doit pas ĂȘtre utilisĂ©e dans du code conçu pour ĂȘtre portable.
TCP_MAXSEG
La taille maximale de segment pour les paquets TCP sortants. Dans Linux 2.2 et les versions prĂ©cĂ©dentes, ainsi que dans Linux 2.6.28 et les versions suivantes, si cette option est dĂ©finie avant dâĂ©tablir la connexion, elle modifie Ă©galement la valeur MSS annoncĂ©e Ă lâautre extrĂ©mitĂ©, dans le paquet initial. Les valeurs supĂ©rieures au MTU de lâinterface sont ignorĂ©es et nâont pas dâeffet. TCP imposera ses limites minimales et maximales plutĂŽt que les valeurs fournies.
TCP_NODELAY
DĂ©sactiver lâalgorithme Nagle. Cela signifie que les segments seront envoyĂ©s dĂšs que possible, mĂȘme sâil nây a que trĂšs peu de donnĂ©es. Sinon, les donnĂ©es sont conservĂ©es jusquâĂ ce quâil y en ait un nombre suffisant, pour Ă©viter dâenvoyer de frĂ©quents petits paquets, au dĂ©triment du rĂ©seau. Cette option est moins prioritaire que TCP_CORK . Cependant, activer cette option force un vidage des donnĂ©es actuellement en attente, mĂȘme si TCP_CORK est actif.
TCP_QUICKACK (depuis Linux 2.4.4)
Valider le mode quickack, ou lâinhiber si lâoption est retirĂ©e. En mode quickack, les acquittements sont envoyĂ©s immĂ©diatement plutĂŽt que retardĂ©s si besoin par rapport au fonctionnement normal de TCP. Cet attribut nâest pas permanent, il sâagit seulement dâun basculement vers ou depuis le mode quickack. Les opĂ©rations ultĂ©rieures du protocole TCP feront Ă nouveau entrer/quitter le mode quickack en fonction des traitements internes du protocole et de facteurs tels que les dĂ©lais dâacquittements retardĂ©s, ou les transferts de donnĂ©es. Cette option ne doit pas ĂȘtre utilisĂ©e dans du code conçu pour ĂȘtre portable.
TCP_SYNCNT (depuis Linux 2.4)
Indiquer le nombre de retransmissions de SYN que TCP doit envoyer avant dâannuler la tentative de connexion. Ne doit pas dĂ©passer 255. Cette option ne doit pas ĂȘtre utilisĂ©e dans du code conçu pour ĂȘtre portable.
TCP_USER_TIMEOUT (depuis Linux 2.6.37)
Cette option prend un unsigned int en argument. Quand la valeur est strictement positive, elle indique la durĂ©e maximale en milliseconde pendant laquelle les donnĂ©es transmises peuvent rester sans acquittement ou que les donnĂ©es en tampon demeurent non transmises (Ă cause dâune taille de fenĂȘtre Ă©gale Ă zĂ©ro) avant que TCP ne force la fermeture de connexion correspondante et renvoie ETIMEDOUT Ă lâapplication. Si la valeur dâoption indiquĂ©e est 0, TCP utilisera la valeur par dĂ©faut du systĂšme.
Augmenter les dĂ©lais par utilisateur permet Ă une connexion TCP de survivre pendant une pĂ©riode plus importante sans connectivitĂ© directe. Diminuer les dĂ©lais par utilisateur permet aux applications dâ« échouer rapidement » si nĂ©cessaire. Sinon, les Ă©checs peuvent prendre jusquâĂ 20 minutes avec les valeurs par dĂ©faut actuelles du systĂšme dans un environnement WAN normal.
Cette option peut ĂȘtre dĂ©finie pendant nâimporte quel Ă©tat dâune connexion TCP, mais nâest effective que pendant les Ă©tats synchronisĂ©s dâune connexion (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING et LAST-ACK). De plus, lorsquâelle est utilisĂ©e avec lâoption TCP keepalive ( SO_KEEPALIVE ), TCP_USER_TIMEOUT Ă©crasera keepalive pour dĂ©terminer quand fermer une connexion Ă cause dâune erreur keepalive.
Lâoption est sans effet lorsque TCP retransmet un paquet ou quand un message keepalive est envoyĂ©.
Cette option, comme bien dâautres, sera hĂ©ritĂ©e par le socket renvoyĂ© par accept (2) sâil Ă©tait dĂ©fini sur le socket dâĂ©coute.
De plus amples précisions sur la fonctionnalité de délai par utilisateur sont disponibles dans les RFC 793 et RFC 5482 (« TCP User Timeout Option »).
TCP_WINDOW_CLAMP (depuis Linux 2.4)
Limiter la taille de la fenĂȘtre annoncĂ©e Ă cette valeur. Le noyau impose une taille minimale de SOCK_MIN_RCVBUF/2. Cette option ne doit pas ĂȘtre employĂ©e dans du code conçu pour ĂȘtre portable.
TCP_FASTOPEN (depuis Linux 3.6)
Cette option active Fast Open (RFC 7413) sur le socket dâĂ©coute. La valeur spĂ©cifie la taille maximale des SYN en attente (similaire Ă lâargument de file dâaccumulation dans listen (2)). Une fois activĂ©e, le socket dâĂ©coute avertit le cookie TCP Fast Open des SYN entrants ayant lâoption TCP Fast Open.
Plus important, il accepte les donnĂ©es dans SYN avec un cookie Fast Open valable et rĂ©pond par un acquittement SYN-ACK pour les donnĂ©es et la sĂ©quence SYN. accept (2) renvoie un socket pouvant ĂȘtre lu et Ă©crit quand lâĂ©tablissement de la connexion (handshake) nâest pas encore terminĂ©. LâĂ©change de donnĂ©es peut ainsi dĂ©buter avant la fin de cet Ă©tablissement. Cette option requiert lâactivation de la prise en charge cĂŽtĂ© serveur de sysctl net.ip4.tcp_fastopen (voir au-dessus). Pour la prise en charge de Fast Open cĂŽtĂ© client, consulter MSG_FASTOPEN ou TCP_FASTOPEN_CONNECT de send (2) ci-dessous.
TCP_FASTOPEN_CONNECT (depuis Linux 4.11)
Cette option active un moyen de remplacement pour utiliser Fast Open sur le cotĂ© actif (client). Quand cette option est activĂ©e, connect (2) se comportera diffĂ©remment selon quâun cookie Fast Open est disponible ou non pour la destination.
Si un cookie nâest pas disponible (câest-Ă -dire pour le premier contact avec la destination), connect (2) se comporte comme dâhabitude en envoyant un SYN immĂ©diatement, sauf que le SYN inclura un cookie Fast Open vide pour solliciter un cookie.
Si un cookie est disponible, connect (2) renvoie 0 immĂ©diatement, mais la transmission du SYN est reportĂ©e. Un write (2) ou sendmsg (2) subsĂ©quent dĂ©clenchera un SYN avec donnĂ©es et cookie dans lâoption Fast Open. En dâautres mots, la connexion rĂ©elle est reportĂ©e jusquâĂ ce que des donnĂ©es soient fournies.
Remarque : bien que cette option soit conçue pour plus de commoditĂ©, son activation ne changera pas les comportements et certains appels systĂšme peuvent dĂ©finir des valeurs errno diffĂ©rentes. Si le cookie est prĂ©sent, write (2) ou sendmsg (2) doivent ĂȘtre appelĂ©es juste aprĂšs connect (2) dans le but dâenvoyer SYN + donnĂ©es pour achever les trois Ă©tapes de connexion (three-way-handshake â 3WHS) et Ă©tablir la connexion. Si on appelle read (2) juste aprĂšs connect (2) sans write (2), le socket bloquant sera bloquĂ© Ă jamais.
Lâapplication devrait soit dĂ©finir lâoption de socket TCP_FASTOPEN_CONNECT avant write (2) ou sendmsg (2), ou appeler write (2) ou sendmsg (2) avec lâattribut MSG_FASTOPEN directement, au lieu des deux sur la mĂȘme connexion.
Voici le flux typique dâappel avec cette nouvelle option.
s = socket();
setsockopt(s, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, 1, ...);
connect(s);
write(s); /* write() doit toujours suivre connect()
* dans le but de dĂ©clencher lâĂ©mission
de SYN */
read(s)/write(s);
/* ... */
close(s);
API des sockets
TCP fourni une prise en charge limitĂ©e des donnĂ©es hors-bande, sous la forme de donnĂ©es urgentes (un seul octet). Sous Linux cela signifie que si lâautre cĂŽtĂ© envoie de nouvelles donnĂ©es hors-bande, les donnĂ©es urgentes plus anciennes sont insĂ©rĂ©es comme des donnĂ©es normales dans le flux (mĂȘme quand SO_OOBINLINE nâest pas actif). Cela diffĂšre des piles basĂ©es sur BSD.
Linux utilise par dĂ©faut lâinterprĂ©tation compatible BSD du champ de pointeur de donnĂ©es urgentes, ce qui viole la RFC 1122, mais est indispensable pour lâinteropĂ©rabilitĂ© avec les autres piles. On peut modifier ce comportement avec /proc/sys/net/ipv4/tcp_stdurg .
Il est possible de jeter un coup dâĆil aux donnĂ©es hors-bande en utilisant lâattribut MSG_PEEK de recv (2).
Depuis Linux 2.4, Linux prend en charge lâutilisation de MSG_TRUNC dans le paramĂštre flags de recv (2) (et recvmsg (2)). Cet attribut a pour effet que les octets de donnĂ©es reçus sont ignorĂ©s, plutĂŽt que transmis au tampon fourni par lâappelant. Depuis Linux 2.4.4, MSG_TRUNC a Ă©galement cet effet lorsquâil est combinĂ© Ă MSG_OOB pour recevoir les donnĂ©es hors-bande.
Ioctls
Les appels ioctl (2) suivants renvoient des informations dans value . La syntaxe correcte est :
int
valeur
;
erreur
= ioctl(
tcp_socket
,
ioctl_type
, &
valeur
);
ioctl_type
est lâune des valeurs suivantes :
SIOCINQ
Renvoi de la quantitĂ© de donnĂ©es non lues en attente dans le tampon de rĂ©ception. Le socket ne doit pas ĂȘtre dans lâĂ©tat LISTEN, sinon lâerreur EINVAL est renvoyĂ©e. SIOCINQ est dĂ©fini dans <linux/sockios.h> . Une alternative est dâutiliser le synonyme FIONREAD , dĂ©fini dans <sys/ioctl.h> .
SIOCATMARK
Renvoi de vrai (câest-Ă -dire une valeur non nulle) si le flux de donnĂ©es entrantes est Ă la marque de donnĂ©es urgentes.
Si lâoption de socket SO_OOBINLINE est activĂ©e et SIOCATMARK renvoie vrai, la prochaine lecture sur le socket renverra les donnĂ©es urgentes. Si lâoption SO_OOBINLINE nâest pas activĂ©e et SIOCATMARK renvoie vrai, la prochaine lecture sur le socket renverra les octets suivant les donnĂ©es urgentes (pour rĂ©ellement lire les donnĂ©es urgentes, il faut utiliser lâoption lâattribut recv(MSG_OOB)) .
Notez quâune lecture ne lit jamais de part et dâautre de la marque de donnĂ©es urgentes. Si une application est informĂ©e de la prĂ©sence de donnĂ©es urgentes avec select (2) (en utilisant lâargument exceptfds ) ou par la rĂ©ception du signal SIGURG , elle peut avancer jusquâĂ la marque avec une boucle qui teste de façon rĂ©pĂ©tĂ©e SIOCATMARK et fait une lecture (demandant un nombre quelconque dâoctets) tant que SIOCATMARK renvoie faux.
SIOCOUTQ
Renvoi de la quantitĂ© de donnĂ©es non envoyĂ©es en attente dans la file dâattente dâĂ©mission de socket. Le socket ne doit pas ĂȘtre dans lâĂ©tat LISTEN, sinon lâerreur EINVAL est renvoyĂ©e. SIOCOUTQ est dĂ©fini dans <linux/sockios.h> . Alternativement, on peut utiliser le synonyme TIOCOUTQ , dĂ©fini dans <sys/ioctl.h> .
Traitement des erreurs
Quand une erreur rĂ©seau se produit, TCP tente de renvoyer le paquet. Sâil ne rĂ©ussit pas aprĂšs un certain temps, soit ETIMEDOUT soit la derniĂšre erreur reçue sur la connexion est renvoyĂ©e.
Certaines applications demandent une notification dâerreur plus rapide. Cela peut ĂȘtre activĂ© avec lâoption de socket IP_RECVERR de niveau IPPROTO_IP . Quand cette option est active, toutes les erreurs arrivant sont immĂ©diatement passĂ©es au programme utilisateur. Employez cette option avec prĂ©caution, elle rend TCP moins tolĂ©rant aux modifications de routage et autres conditions rĂ©seau normales.
ERREURS
EAFNOTSUPPORT
Le type dâadresse du socket passĂ© dans sin_family nâĂ©tait pas AF_INET .
|
EPIPE |
Lâautre extrĂ©mitĂ© a fermĂ© inopinĂ©ment le socket ou une lecture est tentĂ©e sur un socket fermĂ©. |
ETIMEDOUT
Lâautre cĂŽtĂ© nâa pas acquittĂ© les donnĂ©es retransmises aprĂšs un certain dĂ©lai.
Toutes les erreurs dĂ©finies dans ip (7) ou au niveau gĂ©nĂ©rique des sockets peuvent aussi ĂȘtre renvoyĂ©es pour TCP.
VERSIONS
Les prises en charge de notification explicite de congestion, de sendfile (2) sans copie, du réordonnancement et de certaines extensions SACK (DSACK) ont été introduites dans Linux 2.4. La prise en charge du Forward Acknowledgement (FACK), le recyclage de TIME_WAIT et les options keepalive des sockets par connexion ont été introduits dans Linux 2.3.
BOGUES
Toutes les erreurs ne sont pas documentées.
IPv6 nâest pas dĂ©crit.
VOIR AUSSI
accept (2), bind (2), connect (2), getsockopt (2), listen (2), recvmsg (2), sendfile (2), sendmsg (2), socket (2), ip (7), socket (7)
Le fichier source du noyau Documentation/networking/ip-sysctl.txt .
RFCÂ 793
pour les spécifications TCP.
RFC 1122 pour les nécessités TCP et une
description de lâalgorithme Nagle.
RFCÂ 1323 pour les options dâhorodatage et de
dimensionnement de fenĂȘtre TCP.
RFCÂ 1337 pour une description des risques
surnommés « TIME_WAIT assassination
hazards ».
RFCÂ 3168 pour une description de la notification
explicite de congestion.
RFCÂ 2581 pour des algorithmes de contrĂŽle de
congestion TCP.
RFCÂ 2018 et RFCÂ 2883 pour SACK et ses
extensions.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .