.\" -*- coding: UTF-8 -*- .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\" This man page is Copyright (C) 1999 Andi Kleen . .\" and Copyright (C) 2008 Michael Kerrisk .\" Note also that many pieces are drawn from the kernel source file .\" Documentation/networking/ip-sysctl.txt. .\" .\" 2.4 Updates by Nivedita Singhvi 4/20/02 . .\" Modified, 2004-11-11, Michael Kerrisk and Andries Brouwer .\" Updated details of interaction of TCP_CORK and TCP_NODELAY. .\" .\" 2008-11-21, mtk, many, many updates. .\" The descriptions of /proc files and socket options should now .\" be more or less up to date and complete as at Linux 2.6.27 .\" (other than the remaining FIXMEs in the page source below). .\" .\" FIXME The following need to be documented .\" TCP_MD5SIG (2.6.20) .\" commit cfb6eeb4c860592edd123fdea908d23c6ad1c7dc .\" Author was yoshfuji@linux-ipv6.org .\" Needs CONFIG_TCP_MD5SIG .\" From net/inet/Kconfig: .\" bool "TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL)" .\" RFC2385 specifies a method of giving MD5 protection to TCP sessions. .\" Its main (only?) use is to protect BGP sessions between core routers .\" on the Internet. .\" .\" There is a TCP_MD5SIG option documented in FreeBSD's tcp(4), .\" but probably many details are different on Linux .\" http://thread.gmane.org/gmane.linux.network/47490 .\" http://www.daemon-systems.org/man/tcp.4.html .\" http://article.gmane.org/gmane.os.netbsd.devel.network/3767/match=tcp_md5sig+freebsd .\" .\" TCP_COOKIE_TRANSACTIONS (2.6.33) .\" commit 519855c508b9a17878c0977a3cdefc09b59b30df .\" Author: William Allen Simpson .\" commit e56fb50f2b7958b931c8a2fc0966061b3f3c8f3a .\" Author: William Allen Simpson .\" .\" REMOVED in Linux 3.10 .\" commit 1a2c6181c4a1922021b4d7df373bba612c3e5f04 .\" Author: Christoph Paasch .\" .\" TCP_THIN_LINEAR_TIMEOUTS (2.6.34) .\" commit 36e31b0af58728071e8023cf8e20c5166b700717 .\" Author: Andreas Petlund .\" .\" TCP_THIN_DUPACK (2.6.34) .\" commit 7e38017557bc0b87434d184f8804cadb102bb903 .\" Author: Andreas Petlund .\" .\" TCP_REPAIR (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov .\" See also .\" http://criu.org/TCP_connection .\" https://lwn.net/Articles/495304/ .\" .\" TCP_REPAIR_QUEUE (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov .\" .\" TCP_QUEUE_SEQ (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov .\" .\" TCP_REPAIR_OPTIONS (3.5) .\" commit b139ba4e90dccbf4cd4efb112af96a5c9e0b098c .\" Author: Pavel Emelyanov .\" .\" TCP_FASTOPEN (3.6) .\" (Fast Open server side implementation completed in Linux 3.7) .\" http://lwn.net/Articles/508865/ .\" .\" TCP_TIMESTAMP (3.9) .\" commit 93be6ce0e91b6a94783e012b1857a347a5e6e9f2 .\" Author: Andrey Vagin .\" .\" TCP_NOTSENT_LOWAT (3.12) .\" commit c9bee3b7fdecb0c1d070c7b54113b3bdfb9a3d36 .\" Author: Eric Dumazet .\" .\" TCP_CC_INFO (4.1) .\" commit 6e9250f59ef9efb932c84850cd221f22c2a03c4a .\" Author: Eric Dumazet .\" .\" TCP_SAVE_SYN, TCP_SAVED_SYN (4.2) .\" commit cd8ae85299d54155702a56811b2e035e63064d3d .\" Author: Eric Dumazet .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH tcp 7 "2 mai 2024" "Pages du manuel de Linux 6.8" .SH NOM tcp – Protocole TCP .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP \fB#include \fP .P \fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP .fi .SH 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 \fBip\fP(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. .P 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 \fBconnect\fP(2) pour établir la connexion vers un autre socket TCP. Pour recevoir les connexions entrantes, attachez d'abord le socket avec \fBbind\fP(2) à une adresse locale et un port, puis appelez \fBlisten\fP(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 \fBaccept\fP(2). Un socket sur lequel \fBaccept\fP(2) ou \fBconnect\fP(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. .P 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 \fI/proc/sys/net/ipv4/tcp_wmem\fP et \fI/proc/sys/net/ipv4/tcp_rmem\fP ou individuellement pour chaque socket avec les options \fBSO_SNDBUF\fP et \fBSO_RCVBUF\fP de l'appel système \fBsetsockopt\fP(2). .P Les tailles maximales pour les tampons de socket déclarés à l’aide de \fBSO_SNDBUF\fP et \fBSO_RCVBUF\fP sont limitées par les valeurs des fichiers \fI/proc/sys/net/core/rmem_max\fP et \fI/proc/sys/net/core/wmem_max\fP. Notez que TCP alloue en fait deux fois plus de place que la taille demandée avec l'appel \fBsetsockopt\fP(2), et qu'un appel \fBgetsockopt\fP(2) réussi ne renverra pas la même taille de tampon que celle réclamée dans l’appel \fBsetsockopt\fP(2). TCP utilise l’espace supplémentaire à des fins administratives et pour des structures internes du noyau, et les valeurs des fichiers de \fI/proc\fP 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 \fBlisten\fP(2) ou \fBconnect\fP(2) pour qu'elle soit prise en compte. Consultez \fBsocket\fP(7) pour plus de détails. .P 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 \fBMSG_OOB\fP à \fBsend\fP(2). Quand des données urgentes sont reçues, le noyau envoie un signal \fBSIGURG\fP au processus ou au groupe de processus qui a été indiqué comme propriétaire du socket avec les ioctls \fBSIOCSPGRP\fP ou \fBFIOSETOWN\fP (ou l'opération \fBF_SETOWN\fP de \fBfcntl\fP(2), spécifiée par POSIX.1\-2001). Quand l'option de socket \fBSO_OOBINLINE\fP 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 \fBSIOCATMARK\fP décrit ci\-dessous), sinon, elles ne peuvent être reçues que lorsque l'attribut \fBMSG_OOB\fP est positionné pour \fBrecv\fP(2) ou \fBrecvmsg\fP(2). .P Quand des données hors bande sont présentes, \fBselect\fP(2) indique le descripteur de fichier comme ayant une condition exceptionnelle et \fBpoll\fP(2) indique un événement \fBPOLLPRI\fP. .P 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 \fBsendfile\fP(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) \&. .SS "Formats d'adresse" TCP est construit au\-dessus de IP (consultez \fBip\fP(7)). Les formats d'adresse définis par \fBip\fP(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. .SS "/proc interfaces" Les paramètres TCP du système sont accessibles dans les fichiers du répertoire \fI/proc/sys/net/ipv4/\fP. De plus, la plupart des interfaces \fI/proc\fP d'IP s'appliquent à TCP. Consultez \fBip\fP(7). Les variables indiquées comme \fIbooléennes\fP prennent une valeur entière, une valeur non nulle indiquant que l'option est active, une valeur nulle indiquant que l'option est inactive. .TP \fItcp_abc\fP (entier ; 0 par défaut ; Linux 2.6.15 à 3.8) .\" Since Linux 2.6.15; removed in Linux 3.9 .\" commit ca2eb5679f8ddffff60156af42595df44a315ef0 .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt 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 (\fIcwnd\fP : congestion window) plus lentement en réponse à des acquittements partiels. Les valeurs possibles sont : .RS .TP \fB0\fP augmenter \fIcwnd\fP une fois par acquittement (pas d'ABC) .TP \fB1\fP augmenter \fIcwnd\fP une fois par acquittement d'un segment complet .TP \fB2\fP permettre l'augmentation de \fIcwnd\fP par deux si l'acquittement correspond à deux segments, pour compenser les acquittements retardés. .RE .TP \fItcp_abort_on_overflow\fP (booléen ; désactivé par défaut ; depuis Linux 2.4) .\" Since Linux 2.3.41 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 \fIque\fP 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. .TP \fItcp_adv_win_scale\fP (entier ; 2 par défaut ; depuis Linux 2.4) .\" Since Linux 2.4.0-test7 Calculer le surplus du tampon comme \fIbytes/2\[ha]tcp_adv_win_scale\fP, si \fItcp_adv_win_scale\fP est supérieur à 0 ; ou \fIbytes\-bytes/2\[ha](\-tcp_adv_win_scale)\fP, si \fItcp_adv_win_scale\fP est inférieur ou égal à zéro. .IP 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 \fItcp_adv_win_scale\fP indique que l'espace utilisé pour le tampon d'application est un quart de l'espace total. .TP \fItcp_allowed_congestion_control\fP (chaîne ; voir le texte pour la valeur par défaut ; depuis Linux 2.4.20) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt 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 \fBTCP_CONGESTION\fP 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 \fItcp_available_congestion_control\fP. La valeur par défaut est « reno » plus la définition par défaut de \fItcp_congestion_control\fP. .TP \fItcp_autocorking\fP (booléen ; activé par défaut ; depuis Linux 3.14) .\" commit f54b311142a92ea2e42598e347b84e1655caf8e3 .\" Text heavily based on Documentation/networking/ip-sysctl.txt Si cette option est active, le noyau essaie de fusionner les petites écritures (issues d'appels consécutifs à \fBwrite\fP(2) et \fBsendmsg\fP(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 \fBTCP_CORK\fP afin de contrôler comment et quand libérer leurs sockets. .TP \fItcp_available_congestion_control\fP (chaîne ; lecture seule ; depuis Linux 2.4.20) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt 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 \fItcp_allowed_congestion_control\fP. Plus d'algorithmes de contrôle de congestion peuvent être disponibles sous forme de modules, mais non chargés. .TP \fItcp_app_win\fP (entier ; 31 par défaut ; depuis Linux 2.4) .\" Since Linux 2.4.0-test7 Cette variable définit combien d'octets de la fenêtre TCP sont réservés pour le surplus de tampon. .IP .\" .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Un maximum de (\fIwindow/2\[ha]tcp_app_win\fP, 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. .TP \fItcp_base_mss\fP (entier ; 512 par défaut ; depuis Linux 2.6.17) .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt La valeur initiale de \fIsearch_low\fP à 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. .TP \fItcp_bic\fP (booléen ; désactivé par défaut ; Linux 2.4.27/2.6.6 à Linux 2.6.13) .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt 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. .TP \fItcp_bic_low_window\fP (entier ; 14 par défaut ; Linux 2.4.27/2.6.6 à Linux 2.6.13) .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt 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. .TP \fItcp_bic_fast_convergence\fP (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. .TP \fItcp_congestion_control\fP (chaîne ; voir le texte pour la valeur par défaut ; depuis Linux 2.4.13) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt 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. .TP \fItcp_dma_copybreak\fP (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 \fBCONFIG_NET_DMA\fP. .TP \fItcp_dsack\fP (booléen ; activé par défaut ; depuis Linux 2.4) .\" Since Linux 2.4.0-test7 Activer la prise en charge de TCP Duplicate SACK de la RFC\ 2883. .TP \fItcp_fastopen\fP (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 : .RS .TP \fB0x1\fP Activer Fast Open du côté client .TP \fB0x2\fP Activer Fast Open du côté serveur .TP \fB0x4\fP Autoriser le côté client à transmettre des données dans SYN sans option Fast Open .TP \fB0x200\fP Autoriser le côté serveur à accepter des données de SYN sans option Fast Open .TP \fB0x400\fP Autoriser Fast Open pour tous les écouteurs sans option de socket \fBTCP_FASTOPEN\fP .RE .TP \fItcp_fastopen_key\fP (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. .TP \fItcp_ecn\fP (entier ; valeur par défaut : voir ci\(hydessous ; depuis Linux 2.4) .\" Since Linux 2.4.0-test7 Activer la notification explicite de congestion (ECN) de la RFC\ 3168. .IP Ce fichier peut prendre une des valeurs suivantes\ : .RS .TP \fB0\fP Désactiver l’ECN. Ne jamais initier ni accepter l’ECN. Valeur par défaut jusqu’à Linux 2.6.30 inclus. .TP \fB1\fP Activer l’ECN si demandée par les connexions entrantes et aussi requérir l’ECN sur les essais de connexion sortante. .TP \fB2\fP .\" commit 255cac91c3c9ce7dca7713b93ab03c75b7902e0e 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. .RE .IP 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 \fBtcp_ecn_fallback\fP a été introduite. .TP \fItcp_ecn_fallfack\fP (booléen ; activé par défaut ; depuis Linux 4.1) .\" commit 492135557dc090a1abb2cfbe1a412757e3ed68ab 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. .TP \fItcp_fack\fP (booléen ; activé par défaut ; depuis Linux 2.4) .\" Since Linux 2.1.92 Activer la prise en charge de TCP Forward Acknowledgement. .TP \fItcp_fin_timeout\fP (entier ; 60 par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.53 .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt 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. .TP \fItcp_frto\fP (entier ; 0 par défaut ; depuis Linux 2.4.21/2.6) .\" Since Linux 2.4.21/2.5.43 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. .IP Ce fichier peut prendre une des valeurs suivantes\ : .RS .TP \fB0\fP Désactivé. C’était la valeur par défaut jusqu’à Linux 2.6.23 inclus. .TP \fB1\fP La version de base de l'algorithme F\-RTO est activée. .TP \fB2\fP .\" commit c96fd3d461fa495400df24be3b3b66f0e0b152f9 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. .RE .IP 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. .TP \fItcp_frto_response\fP (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 : .RS .TP \fB0\fP 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 (\fIcwnd\fP) et du seuil de démarrage lent (\fIssthresh\fP, « slow\-start threshold ») après un seul RTT (Round\-trip time – temps d’aller\-retour). .TP \fB1\fP 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 \fIcwnd\fP et de \fIssthresh\fP. .TP \fB2\fP 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) ; \fIcwnd\fP et \fIssthresh\fP sont redéfinis aux valeurs antérieures à l'expiration du délai. .RE .TP \fItcp_keepalive_intvl\fP (entier ; 75 par défaut ; depuis Linux 2.4) .\" Since Linux 2.3.18 L'intervalle en secondes entre deux messages TCP keep\-alive. .TP \fItcp_keepalive_probes\fP (entier ; 9 par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.43 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. .TP \fItcp_keepalive_time\fP (entier ; 7200 par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.43 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 \fBSO_KEEPALIVE\fP 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). .IP .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Notez que les délais des mécanismes de connexion sous\-jacents ou de l'application peuvent être bien plus courts. .TP \fItcp_low_latency\fP (booléen ; désactivé par défaut ; depuis Linux 2.4.21/2.6 ; obsolète depuis Linux 4.14) .\" Since Linux 2.4.21/2.5.60 .\" commit b6690b14386698ce2c19309abad3f17656bdfaea 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. .TP \fItcp_max_orphans\fP (entier\ ; valeur par défaut\ : voir ci\(hydessous ; depuis Linux 2.4) .\" Since Linux 2.3.41 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'à \[ti]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. .TP \fItcp_max_syn_backlog\fP (entier\ ; valeur par défaut\ : voir ci\(hydessous ; depuis Linux 2.2) .\" Since Linux 2.1.53 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). .IP .\" commit 72a3effaf633bcae9034b7e176bdbd78d64a71db 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 (\fBTCP_SYNQ_HSIZE\fP) dans \fIinclude/net/tcp.h\fP pour conserver .IP .in +4n .EX TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog .EE .in .IP et le noyau devait être recompilé. Dans Linux 2.6.20, la taille fixe \fBTCP_SYNQ_HSIZE\fP a été supprimée en faveur d'une taille dynamique. .TP \fItcp_max_tw_buckets\fP (entier\ ; valeur par défaut\ : voir ci\(hydessous ; depuis Linux 2.4) .\" Since Linux 2.3.41 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é. .TP \fItcp_moderate_rcvbuf\fP (booléen ; activé par défaut ; Linux 2.4.17/2.6.7) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Si activé, TCP effectue un ajustage automatique du tampon de réception, en essayant de trouver la bonne taille automatiquement (pas plus grand que \fItcp_rmem[2]\fP) pour correspondre à la taille nécessaire pour un débit maximal sur le chemin. .TP \fItcp_mem\fP (depuis Linux 2.4) .\" Since Linux 2.4.0-test7 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 \fImémoire basse\fP qui est limitée à environ 900\ Mo sur les systèmes 32\ bits. Les systèmes 64\ bits ne souffrent pas de cette limitation). .RS .TP \fIlow\fP 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 .TP \fIpressure\fP 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 \fIlow\fP. .TP \fIhigh\fP Le nombre global maximal de pages que TCP allouera. Cette valeur surcharge tout autre limite imposée par le noyau. .RE .TP \fItcp_mtu_probing\fP (entier ; 0 par défaut ; Linux 2.6.17) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt 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 : .RS .TP \fB0\fP Désactivé .TP \fB1\fP Désactivé par défaut, activé quand un trou noir ICMP est détecté .TP \fB2\fP Toujours activé, utilise le MSS de départ de \fItcp_base_mss\fP. .RE .TP \fItcp_no_metrics_save\fP (booléen ; désactivé par défaut ; depuis Linux 2.6.6) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt 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 \fItcp_no_metrics_save\fP est activé, TCP ne sauvera pas de métriques dans le cache lors de la fermeture des connexions. .TP \fItcp_orphan_retries\fP (entier ; 8 par défaut ; depuis Linux 2.4) .\" Since Linux 2.3.41 Le nombre maximal de tentatives pour sonder l'autre extrémité d'une connexion qui a été fermée par notre côté. .TP \fItcp_reordering\fP (entier ; 3 par défaut ; depuis Linux 2.4) .\" Since Linux 2.4.0-test7 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. .TP \fItcp_retrans_collapse\fP (booléen ; activé par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.96 Essayer d'envoyer des paquets de taille standard durant la retransmission. .TP \fItcp_retries1\fP (entier ; 3 par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.43 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. .TP \fItcp_retries2\fP (entier ; 15 par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.43 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. .TP \fItcp_rfc1337\fP (booléen ; désactivé par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.90 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. .TP \fItcp_rmem\fP (depuis Linux 2.4) .\" Since Linux 2.4.0-test7 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. .RS .TP \fImin\fP 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 à \fBPAGE_SIZE\fP octets sur les systèmes avec peu de mémoire). Cette valeur assure qu'en mode de mémoire \fIpressure\fP, 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 \fBSO_RCVBUF\fP sur le socket. .TP \fIdefault\fP 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 \fInet.core.rmem_default\fP 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 \fInet.ipv4.tcp_window_scaling\fP doit être activée (elle l'est par défaut). .TP \fImax\fP la taille maximale du tampon de réception utilisé par chaque socket TCP. Cette valeur ne surcharge pas la valeur globale \fInet.core.rmem_max\fP. Elle ne permet pas de limiter la taille du tampon de réception déclarée avec l'option \fBSO_RCVBUF\fP sur le socket. La valeur par défaut est calculée par la formule : .IP .in +4n .EX max(87380, min(4\ MB, \fItcp_mem\fP[1]*PAGE_SIZE/128)) .EE .in .IP 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. .RE .TP \fItcp_sack\fP (booléen ; activé par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.36 Activer l'acquittement TCP sélectif (RFC\ 2018). .TP \fItcp_slow_start_after_idle\fP (booléen ; activé par défaut ; depuis Linux 2.6.18) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt 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é. .TP \fItcp_stdurg\fP (booléen ; désactivé par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.44 .\" RFC 793 was ambiguous in its specification of the meaning of the .\" urgent pointer. RFC 1122 (and RFC 961) fixed on a particular .\" resolution of this ambiguity (unfortunately the "wrong" one). 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é. .TP \fItcp_syn_retries\fP (entier ; 6 par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.38 .\" commit 6c9ff979d1921e9fd05d89e1383121c2503759b9 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. .TP \fItcp_synack_retries\fP (entier ; 5 par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.38 Le nombre maximal de retransmissions d'un segment SYN/ACK pour une connexion TCP passive. Ce nombre ne doit pas dépasser 255. .TP \fItcp_syncookies\fP (entier ; 1 par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.43 Activer les syncookies TCP (SYN cookies). Le noyau doit être compilé avec l'option \fBCONFIG_SYN_COOKIES\fP. 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 \fItcp_max_syn_backlog\fP, \fItcp_synack_retries\fP, \fItcp_abort_on_overflow\fP. À régler à une des valeurs suivantes : .RS .TP \fB0\fP Désactivation des syncookies TCP. .TP \fB1\fP Envoi de syncookies quand la file d’accumulation de SYN d’un socket déborde. .TP \fB2\fP .\" commit 5ad37d5deee1ff7150a2d0602370101de158ad86 (depuis Linux 3.12) Envoi de syncookies sans conditions. Cela peut être utile pour tester un réseau. .RE .TP \fItcp_timestamps\fP (entier ; par défaut 1 ; depuis Linux 2.2) .\" Since Linux 2.1.36 À régler à une des valeurs suivantes pour activer ou désactiver les horodatages TCP de la RFC\ 1323 : .RS .TP \fB0\fP Désactiver les horodatages. .TP \fB1\fP 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. .TP \fB2\fP .\" commit 25429d7b7dca01dc4f17205de023a30ca09390d0 Comme pour la valeur 1, mais sans décalages aléatoires. Régler \fItcp_timestamps\fP à cette valeur est significatif depuis Linux 4.10. .RE .TP \fItcp_tso_win_divisor\fP (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. .TP \fItcp_tw_recycle\fP (booléen ; désactivé par défaut ; de Linux 2.4 à Linux 4.11) .\" Since Linux 2.3.15 .\" removed in Linux 4.12; commit 4396e46187ca5070219b81773c4e65088dac50cc .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt 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. .TP \fItcp_tw_reuse\fP (booléen ; désactivé par défaut ; depuis Linux 2.4.19/2.6) .\" Since Linux 2.4.19/2.5.43 .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt 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. .TP \fItcp_vegas_cong_avoid\fP (booléen ; désactivé par défaut ; Linux 2.2 à Linux 2.6.13) .\" Since Linux 2.1.8; removed in Linux 2.6.13 .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt 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. .TP \fItcp_westwood\fP (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. .TP \fItcp_window_scaling\fP (booléen ; activé par défaut ; depuis Linux 2.2) .\" Since Linux 2.1.36 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 \fItcp_window_scaling\fP 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. .TP \fItcp_wmem\fP (depuis Linux 2.4) .\" Since Linux 2.4.0-test7 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. .RS .TP \fImin\fP 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 \fBSO_SNDBUF\fP sur un socket. .TP \fIdefault\fP .\" True in Linux 2.4 and 2.6 La taille par défaut du tampon d'émission pour un socket TCP. Cette valeur surcharge la taille par défaut de valeur globale \fI/proc/sys/net/core/wmem_default\fP 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, \fI/proc/sys/net/ipv4/tcp_window_scaling\fP doit être positionné à une valeur non nulle (par défaut). .TP \fImax\fP 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 \fI/proc/sys/net/core/wmem_max\fP. Elle ne permet pas de limiter la taille du tampon d’émission déclarée avec l'option \fBSO_SNDBUF\fP sur un socket. La valeur par défaut est calculée avec la formule : .IP .in +4n .EX max(65536, min(4\ MB, \fItcp_mem\fP[1]*PAGE_SIZE/128)) .EE .in .IP 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. .RE .TP \fItcp_workaround_signed_windows\fP (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. .SS "Options de socket" .\" or SOL_TCP on Linux Pour lire ou écrire une option de socket TCP, appeler \fBgetsockopt\fP(2) pour la lecture ou \fBsetsockopt\fP(2) pour l'écriture, avec l'argument niveau de socket valant \fBIPPROTO_TCP\fP. Sauf mention contraire, \fIoptval\fP est un pointeur vers un \fIint\fP. De plus, la plupart des options de socket \fBIPPROTO_IP\fP sont valables sur les sockets TCP. Pour plus de détails, voir \fBip\fP(7). .P Voici une liste d’options de socket spécifiques à TCP. Pour des détails sur les autres options applicables aux sockets TCP, consulter \fBsocket\fP(7). .TP \fBTCP_CONGESTION\fP (depuis Linux 2.6.13) .\" commit 5f8ef48d240963093451bcf83df89f1a1364f51d .\" Author: Stephen Hemminger 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 \fItcp_allowed_congestion_control\fP (décrit ci\-dessus). Les processus privilégiés (\fBCAP_NET_ADMIN\fP) peuvent choisir n’importe quel algorithme de contrôle de congestion disponible (consulter la description de \fItcp_available_congestion_control\fP ci\-dessus). .TP \fBTCP_CORK\fP (depuis Linux 2.2) .\" precisely: since Linux 2.1.127 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 \fBsendfile\fP(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 \fBTCP_CORK\fP. Si cette limite est atteinte, les données mises en attente sont automatiquement transmises. Cette option ne peut être combinée avec \fBTCP_NODELAY\fP que depuis Linux 2.5.71. Cette option ne doit pas être utilisée dans du code conçu pour être portable. .TP \fBTCP_DEFER_ACCEPT\fP (depuis Linux 2.4) .\" Precisely: since Linux 2.3.38 .\" Useful references: .\" http://www.techrepublic.com/article/take-advantage-of-tcp-ip-options-to-optimize-data-transmission/ .\" http://unix.stackexchange.com/questions/94104/real-world-use-of-tcp-defer-accept 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. .TP \fBTCP_INFO\fP (depuis Linux 2.4) Cette option est utilisée pour collecter des informations sur un socket. Le noyau renvoie une structure \fIstruct tcp_info\fP comme définie dans le fichier \fI/usr/include/linux/tcp.h\fP. Cette option ne doit pas être utilisée dans du code conçu pour être portable. .TP \fBTCP_KEEPCNT\fP (depuis Linux 2.4) .\" Precisely: since Linux 2.3.18 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. .TP \fBTCP_KEEPIDLE\fP (depuis Linux 2.4) .\" Precisely: since Linux 2.3.18 La durée (en secondes) d'inactivité sur une connexion avant que TCP commence à envoyer les messages keepalive, si l'option \fBSO_KEEPALIVE\fP a été activée sur le socket. Cette option ne doit pas être employée dans du code conçu pour être portable. .TP \fBTCP_KEEPINTVL\fP (depuis Linux 2.4) .\" Precisely: since Linux 2.3.18 Délai (en seconde) entre deux messages keepalive. Cette option ne doit pas être utilisée dans du code conçu pour être portable. .TP \fBTCP_LINGER2\fP (depuis Linux 2.4) .\" Precisely: since Linux 2.3.41 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 \fI/proc/sys/net/ipv4/tcp_fin_timeout\fP spécialement pour le socket. À ne pas confondre avec l'option \fBSO_LINGER\fP du niveau \fBsocket\fP(7). Cette option ne doit pas être utilisée dans du code conçu pour être portable. .TP \fBTCP_MAXSEG\fP .\" Present in Linux 1.0 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. .TP \fBTCP_NODELAY\fP .\" Present in Linux 1.0 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 \fBTCP_CORK\fP. Cependant, activer cette option force un vidage des données actuellement en attente, même si \fBTCP_CORK\fP est actif. .TP \fBTCP_QUICKACK\fP (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. .TP \fBTCP_SYNCNT\fP (depuis Linux 2.4) .\" Precisely: since Linux 2.3.18 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. .TP \fBTCP_USER_TIMEOUT\fP (depuis Linux 2.6.37) .\" commit dca43c75e7e545694a9dd6288553f55c53e2a3a3 .\" Author: Jerry Chu .\" The following text taken nearly verbatim from Jerry Chu's (excellent) .\" commit message. .\" Cette option prend un \fIunsigned int\fP 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 \fBETIMEDOUT\fP à l’application. Si la valeur d’option indiquée est 0, TCP utilisera la valeur par défaut du système. .IP 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. .IP 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 (\fBSO_KEEPALIVE\fP), \fBTCP_USER_TIMEOUT\fP écrasera keepalive pour déterminer quand fermer une connexion à cause d’une erreur keepalive. .IP L’option est sans effet lorsque TCP retransmet un paquet ou quand un message keepalive est envoyé. .IP Cette option, comme bien d’autres, sera héritée par le socket renvoyé par \fBaccept\fP(2) s'il était défini sur le socket d’écoute. .IP 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 »). .TP \fBTCP_WINDOW_CLAMP\fP (depuis Linux 2.4) .\" Precisely: since Linux 2.3.41 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. .TP \fBTCP_FASTOPEN\fP (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 \fBlisten\fP(2)). Une fois activée, le socket d’écoute avertit le cookie TCP Fast Open des SYN entrants ayant l’option TCP Fast Open. .IP 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. \fBaccept\fP(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 \fInet.ip4.tcp_fastopen\fP (voir au\-dessus). Pour la prise en charge de Fast Open côté client, consulter \fBMSG_FASTOPEN\fP ou \fBTCP_FASTOPEN_CONNECT\fP de \fBsend\fP(2) ci\-dessous. .TP \fBTCP_FASTOPEN_CONNECT\fP (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, \fBconnect\fP(2) se comportera différemment selon qu’un cookie Fast Open est disponible ou non pour la destination. .IP Si un cookie n’est pas disponible (c’est\-à\-dire pour le premier contact avec la destination), \fBconnect\fP(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. .IP Si un cookie est disponible, \fBconnect\fP(2) renvoie \fB0\fP immédiatement, mais la transmission du SYN est reportée. Un \fBwrite\fP(2) ou \fBsendmsg\fP(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. .IP \fBRemarque\fP : 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 \fIerrno\fP différentes. Si le cookie est présent, \fBwrite\fP(2) ou \fBsendmsg\fP(2) doivent être appelées juste après \fBconnect\fP(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 \fBread\fP(2) juste après \fBconnect\fP(2) sans \fBwrite\fP(2), le socket bloquant sera bloqué à jamais. .IP L’application devrait soit définir l’option de socket \fBTCP_FASTOPEN_CONNECT\fP avant \fBwrite\fP(2) ou \fBsendmsg\fP(2), ou appeler \fBwrite\fP(2) ou \fBsendmsg\fP(2) avec l’attribut \fBMSG_FASTOPEN\fP directement, au lieu des deux sur la même connexion. .IP Voici le flux typique d’appel avec cette nouvelle option. .IP .in +4n .EX 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); .EE .in .SS "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 \fBSO_OOBINLINE\fP n'est pas actif). Cela diffère des piles basées sur BSD. .P 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 \fI/proc/sys/net/ipv4/tcp_stdurg\fP. .P Il est possible de jeter un coup d'œil aux données hors\-bande en utilisant l'attribut \fBMSG_PEEK\fP de \fBrecv\fP(2). .P Depuis Linux 2.4, Linux prend en charge l'utilisation de \fBMSG_TRUNC\fP dans le paramètre \fIflags\fP de \fBrecv\fP(2) (et \fBrecvmsg\fP(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, \fBMSG_TRUNC\fP a également cet effet lorsqu'il est combiné à \fBMSG_OOB\fP pour recevoir les données hors\-bande. .SS Ioctls Les appels \fBioctl\fP(2) suivants renvoient des informations dans \fIvalue\fP. La syntaxe correcte est\ : .P .RS .nf \fBint\fP \fIvaleur\fP\fB;\fP \fIerreur\fP \fB= ioctl(\fP\fItcp_socket\fP\fB, \fP\fIioctl_type\fP\fB, &\fP\fIvaleur\fP\fB);\fP .fi .RE .P \fIioctl_type\fP est l'une des valeurs suivantes\ : .TP \fBSIOCINQ\fP .\" FIXME https://www.sourceware.org/bugzilla/show_bug.cgi?id=12002, .\" filed 2010-09-10, may cause SIOCINQ to be defined in glibc headers 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 \fBEINVAL\fP est renvoyée. \fBSIOCINQ\fP est défini dans \fI\fP. Une alternative est d'utiliser le synonyme \fBFIONREAD\fP, défini dans \fI\fP. .TP \fBSIOCATMARK\fP Renvoi de vrai (c'est\-à\-dire une \fIvaleur\fP non nulle) si le flux de données entrantes est à la marque de données urgentes. .IP Si l'option de socket \fBSO_OOBINLINE\fP est activée et \fBSIOCATMARK\fP renvoie vrai, la prochaine lecture sur le socket renverra les données urgentes. Si l'option \fBSO_OOBINLINE\fP n'est pas activée et \fBSIOCATMARK\fP 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 \fBrecv(MSG_OOB))\fP. .IP 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 \fBselect\fP(2) (en utilisant l'argument \fIexceptfds\fP) ou par la réception du signal \fBSIGURG\fP, elle peut avancer jusqu'à la marque avec une boucle qui teste de façon répétée \fBSIOCATMARK\fP et fait une lecture (demandant un nombre quelconque d'octets) tant que \fBSIOCATMARK\fP renvoie faux. .TP \fBSIOCOUTQ\fP .\" FIXME . https://www.sourceware.org/bugzilla/show_bug.cgi?id=12002, .\" filed 2010-09-10, may cause SIOCOUTQ to be defined in glibc headers 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 \fBEINVAL\fP est renvoyée. \fBSIOCOUTQ\fP est défini dans \fI\fP. Alternativement, on peut utiliser le synonyme \fBTIOCOUTQ\fP, défini dans \fI\fP. .SS "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 \fBETIMEDOUT\fP soit la dernière erreur reçue sur la connexion est renvoyée. .P Certaines applications demandent une notification d'erreur plus rapide. Cela peut être activé avec l'option de socket \fBIP_RECVERR\fP de niveau \fBIPPROTO_IP\fP. 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. .SH ERREURS .TP \fBEAFNOTSUPPORT\fP Le type d'adresse du socket passé dans \fIsin_family\fP n'était pas \fBAF_INET\fP. .TP \fBEPIPE\fP L'autre extrémité a fermé inopinément le socket ou une lecture est tentée sur un socket fermé. .TP \fBETIMEDOUT\fP L'autre côté n'a pas acquitté les données retransmises après un certain délai. .P Toutes les erreurs définies dans \fBip\fP(7) ou au niveau générique des sockets peuvent aussi être renvoyées pour TCP. .SH VERSIONS Les prises en charge de notification explicite de congestion, de \fBsendfile\fP(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. .SH BOGUES Toutes les erreurs ne sont pas documentées. .P .\" Only a single Linux kernel version is described .\" Info for 2.2 was lost. Should be added again, .\" or put into a separate page. .\" .SH AUTHORS .\" This man page was originally written by Andi Kleen. .\" It was updated for 2.4 by Nivedita Singhvi with input from .\" Alexey Kuznetsov's Documentation/networking/ip-sysctl.txt .\" document. IPv6 n'est pas décrit. .SH "VOIR AUSSI" \fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBgetsockopt\fP(2), \fBlisten\fP(2), \fBrecvmsg\fP(2), \fBsendfile\fP(2), \fBsendmsg\fP(2), \fBsocket\fP(2), \fBip\fP(7), \fBsocket\fP(7) .P Le fichier source du noyau \fIDocumentation/networking/ip\-sysctl.txt\fP. .P RFC\ 793 pour les spécifications TCP. .br RFC\ 1122 pour les nécessités TCP et une description de l'algorithme Nagle. .br RFC\ 1323 pour les options d'horodatage et de dimensionnement de fenêtre TCP. .br RFC\ 1337 pour une description des risques surnommés « TIME_WAIT assassination hazards ». .br RFC\ 3168 pour une description de la notification explicite de congestion. .br RFC\ 2581 pour des algorithmes de contrôle de congestion TCP. .br RFC\ 2018 et RFC\ 2883 pour SACK et ses extensions. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Paul Guillonneau . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .