Provided by: manpages-fr_4.13-4_all bug

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, RFC 1122 et RFC 2001 avec les
       extensions SACK et NewReno. Cela fournit une  connexion  full-duplex  fiable  orientée  flux  entre  deux
       sockets  au-dessus de ip(7), version 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.

       Une  socket  TCP neuve n'a pas d'adresse locale ou distante et n'est pas complètement définie. Pour créer
       une connexion TCP sortante, utilisez connect(2) pour établir la connexion sur une autre socket TCP.  Pour
       recevoir  les  connexions  entrantes,  attachez d'abord la socket avec bind(2) à une adresse locale et un
       port, puis appelez listen(2) pour mettre la socket dans un  état  d'attente.  Après  cela,  une  nouvelle
       socket  peut  être obtenue pour chaque connexion entrante en utilisant accept(2). Une socket sur laquelle
       accept(2) ou connect(2) ont été appelé correctement est complètement  définie  et  peut  transmettre  des
       données. Les données ne peuvent pas circuler sur les socket en attente ou non connectées.

       Linux  supports  RFC 1323  TCP  high  performance  extensions.  These  include Protection Against Wrapped
       Sequence Numbers (PAWS), Window Scaling and Timestamps. Window scaling allows the use of large (>  64 kB)
       TCP  windows  in order to support links with high latency or bandwidth. To make use of them, the send and
       receive buffer sizes must be increased. They can be set globally with the /proc/sys/net/ipv4/tcp_wmem and
       /proc/sys/net/ipv4/tcp_rmem files, or on individual sockets by using the SO_SNDBUF and  SO_RCVBUF  socket
       options with the setsockopt(2) call.

       Les  tailles maximales pour les tampons 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  le  setsockopt(2).
       TCP  les  utilise à des fins administratives et pour des structures internes du noyau, et les valeurs des
       fichiers de /proc renvoient des tailles supérieures  à  celle  des  véritables  fenêtres  TCP.  Pour  les
       connexions  individuelles, la taille du tampon 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 supports urgent data. Urgent data is used to signal the receiver that some important message is  part
       of  the  data stream and that it should be processed as soon as possible. To send urgent data specify the
       MSG_OOB option to send(2). When urgent data is received, the kernel sends a SIGURG signal to the  process
       or  process group that has been set as the socket "owner" using the SIOCSPGRP or FIOSETOWN ioctls (or the
       POSIX.1-specified fcntl(2)  F_SETOWN operation). When the SO_OOBINLINE socket option is  enabled,  urgent
       data  is  put into the normal data stream (a program can test for its location using the SIOCATMARK ioctl
       described below), otherwise it can be received only  when  the  MSG_OOB  flag  is  set  for  recv(2)   or
       recvmsg(2).

       When  out-of-band  data  is  present,  select(2)   indicates the file descriptor as having an exceptional
       condition and poll (2) indicates a POLLPRI event.

       Linux 2.4 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 d'émission
       sans copie avec sendfile(2), la notification de congestion  explicite  (ECN),  la  nouvelle  gestion  des
       sockets TIME_WAIT, les options « keep-alive » et la prise en charge des extensions SACK dupliqués.

   Formats d'adresse
       TCP  est  construit  au-dessus  de  IP  (consultez  ip(7)).  Les  formats  d'adresse  définis  pour ip(7)
       s'appliquent pour TCP. TCP ne gère que les communications point-à-point. Le broadcast et le multicast  ne
       sont pas gérés.

   Interfaces /proc
       Les  paramètres  TCP  du système sont accessibles avec 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 (Integer; default: 0; Linux 2.6.15 to Linux 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  augment cwnd une fois par acquittement (pas d'ABC)

              1  augmenter cwnd une fois par acquittement d'un paquet complet

              2  permettre l'augmentation de cwnd par deux si l'acquittement correspond à  deux  segments,  pour
                 compenser les acquittements avec délais.

       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 les accepter. Cela signifie  que  si  un  débordement  se  produit  à  cause  d'une
              surcharge  temporaire,  la connexion va se rattraper. N'activez cette option que si vous êtes SÛRS
              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 de la 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 le paramètre 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 grouper  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 est en attent dans les files  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 désactiver ce comportement.

       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 tcp_allowed_congestion_control. Plus
              d'algorithmes de contrôle de congestion peuvent être disponible 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  (fenetre/2^tcp_app_win,  mss) octets  de  la  fenêtre  est réservé 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 du chemin dans la couche  de
              transport  (mise  en  paquets).  Si  la  découverte du MTU est activée, il s'agit du MSS de départ
              utilisé par la connexion.

       tcp_bic (booléen ; désactivé par défaut ; Linux 2.4.27/2.6.6 à 2.6.13)
              Enable BIC TCP congestion control algorithm. BIC-TCP is a sender-side-only change that  ensures  a
              linear   RTT   fairness   under   large  windows  while  offering  both  scalability  and  bounded
              TCP-friendliness. The protocol combines two schemes called additive  increase  and  binary  search
              increase.  When  the  congestion window is large, additive increase with a large increment ensures
              linear RTT fairness as well as good scalability. Under small  congestion  windows,  binary  search
              increase provides TCP friendliness.

       tcp_bic_low_window (entier ; 14 par défaut ; Linux 2.4.27/2.6.6 à 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 à 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  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 sur une socket qui seront délestées sur
              le moteur de copie DMA, 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)
              Valider la prise en charge TCP SACK dupliqué de la RFC 2883.

       tcp_ecn (Integer; default: see below; since Linux 2.4)
              Enable RFC 3168 Explicit Congestion Notification.

              Ce fichier peut prendre une des valeurs suivantes :

              0      Disable ECN. Neither initiate nor accept ECN. This was the  default  up  to  and  including
                     Linux 2.6.30.

              1      Enable  ECN  when  requested  by  incoming  connections  and  also  request ECN on outgoing
                     connection attempts.

              2      Enable ECN when requested by incoming connections, but  do  not  request  ECN  on  outgoing
                     connections. This value is supported, and is the default, since Linux 2.6.31.

              When enabled, connectivity to some destinations could be affected due to older, misbehaving middle
              boxes  along  the  path,  causing  connections to be dropped. However, to facilitate and encourage
              deployment with option 1, and to work around such buggy equipment, the tcp_ecn_fallback option has
              been introduced.

       tcp_ecn_fallback (Boolean; default: enabled; since Linux 4.1)
              Enable RFC 3168, Section 6.1.1.1. fallback. When enabled, outgoing ECN-setup SYNs  that  time  out
              within the normal SYN retransmission timeout will be resent with CWR and ECE cleared.

       tcp_fack (booléen ; activé par défaut ; depuis Linux 2.4)
              Valider la prise en charge 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 la socket soit fermée de force.
              Strictement parlant, c’est une violation des spécifications TCP, mais est nécessaire pour empêcher
              les attaques par déni de service. La valeur par défaut dans les noyaux 2.2 est 180.

       tcp_frto (integer; default: see below; since Linux 2.4.21/2.6)
              Activer F-RTO, un algorithme amélioré de récupération pour les  temporisations  de  retransmission
              TCP   (RTO :   « retransmission   timeouts »).   Il  est  particulièrement  intéressant  dans  des
              environnements sans fil, où la perte des paquets est typiquement due  à  des  interférences  radio
              aléatoire  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  Disabled. This was the default up to and including Linux 2.6.23.

              1  La version de base de l'algorithme F-RTO est activée.

              2  Enable SACK-enhanced F-RTO if flow uses SACK. The basic version can be used also when  SACK  is
                 in  use  though  in  that  case  scenario(s) exists where F-RTO interacts badly with the packet
                 counting of the SACK-enabled TCP flow. This value is the default since Linux 2.6.24.

              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-dessous.

       tcp_frto_response (entier ; 0 par défaut ; depuis Linux 2.6.22)
              When  F-RTO  has  detected that a TCP retransmission timeout was spurious (i.e., the timeout would
              have been avoided had TCP set a longer retransmission timeout), TCP has several options concerning
              what to do next. Possible values are:

              0  Diminution de moitié du  débit ;  une  réponse  douce  et  conservatrice  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 délai d'aller-retour (RTT).

              1  Réponse très conservatrice ; pas recommandée parce que bien que correcte,  elle  interagit  mal
                 avec le reste de TCP sous Linux ; réduction de moitié de cwnd et de ssthresh immédiatement.

              2  Réponse agressive ; supprime les mesures de contrôle de congestion qui sont connues pour ne pas
                 être  nécessaire  (en ignorant la possibilité d'une perte de retransmission qui forcerait TCP à
                 être plus prudent) ; cwnd et ssthresh sont remis 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 tentatives TCP keep-alive à 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  aucune  donnée  n'est  transmise  sur  la  connexion  avant
              d'envoyer  un  message keep-alive. Ces messages ne sont envoyés que si l'option SO_KEEPALIVE de la
              socket est validée. La valeur par défaut est 7200 secondes (2 heures). Une connexion inactive  est
              coupée environ 11 minutes plus tard (9 tentatives à 75 secondes d'écart).

              Notez que les délais de la couche de transport sous-jacente, ou de l'application peuvent être bien
              plus courts.

       tcp_low_latency (Boolean; default: disabled; since Linux 2.4.21/2.6; obsolete since Linux 4.14)
              If  enabled,  the  TCP  stack  makes  decisions  that  prefer  lower  latency as opposed to higher
              throughput. It this option is disabled, then higher throughput is  preferred.  An  example  of  an
              application  where  this default should be changed would be a Beowulf compute cluster. Since Linux
              4.14, this file still exists, but its value is ignored.

       tcp_max_orphans (entier ; valeur par défaut : voir ci‐dessous ; depuis Linux 2.4)
              The maximum number of orphaned (not attached to any user file handle) TCP sockets allowed  in  the
              system.  When  this number is exceeded, the orphaned connection is reset and a warning is printed.
              This limit exists only to prevent simple denial-of-service attacks. Lowering  this  limit  is  not
              recommended.  Network  conditions might require you to increase the number of orphans allowed, but
              note that each orphan can eat up to ~64 kB of unswappable memory. The default initial value is set
              equal to the kernel parameter NR_FILE. This initial default is adjusted depending on the memory in
              the system.

       tcp_max_syn_backlog (entier ; valeur par défaut : voir ci‐dessous ; depuis Linux 2.2)
              The maximum number of queued connection requests which have still not received an  acknowledgement
              from  the  connecting client. If this number is exceeded, the kernel will begin dropping requests.
              The default value of 256 is increased to 1024 when the memory present in the system is adequate or
              greater (>= 128 MB), and reduced to 128 for those systems with very low memory (<= 32 MB).

              Prior to Linux 2.6.20, it was recommended that if this needed to be increased above 1024, the size
              of the SYNACK hash table (TCP_SYNQ_HSIZE) in include/net/tcp.h should be modified to keep

                  TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog

              and the kernel should be recompiled. In Linux 2.6.20, the fixed sized TCP_SYNQ_HSIZE  was  removed
              in favor of dynamic sizing.

       tcp_max_tw_buckets (entier ; valeur par défaut : voir ci‐dessous ; depuis Linux 2.4)
              Le  nombre  maximal  de  sockets  dans  l'état  TIME_WAIT  autorisées sur le système. Cette limite
              n'existe que pour éviter les attaques par déni de service. La valeur  par  défaut  est  NR_FILE*2,
              ajustée en fonction de la mémoire disponible. Si ce nombre est atteint, la socket est fermée et un
              avertissement est affiché.

       tcp_moderate_rcvbuf (booléen ; activé par défaut ; Linux 2.4.17/2.6.7)
              S'il  est  activé,  TCP  effectue  un  réglage  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 : [bas, charge, haut]. 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 que la mémoire basse pour  cela,  qui  est  limitée  aux
              environs  de  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é 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 se  termine  lorsque  le  nombre  de  pages
                     allouées descend en dessous de la marque bas.

              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  sauve  différentes métriques sur la connexion dans la cache des routes quand la
              connexion est fermée, de telle sorte que les connexions ouvertes  rapidement  après  puissent  les
              utiliser  comme conditions initiales. D'habitude, cela augmente globalement les performances, mais
              peut parfois dégrader les performances. Si tcp_no_metrics_save est activé, TCP ne sauvera  pas  de
              métrique dans la 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 accéder à l'autre extrémité d'une connexion dont notre côté a
              été fermé.

       tcp_reordering (entier ; 3 par défaut ; depuis Linux 2.4)
              Le  nombre  de  réorganisations  dans  un  flux  TCP  avant  de supposer qu'un paquet est perdu et
              reprendre au début. Il n'est pas conseillé de modifier cette valeur. C'est  une  métrique  sur  la
              détection  des  réordonnancements  de  paquets  conçue pour minimiser les retransmissions inutiles
              provoquées par la réorganisation des paquets dans une connexion.

       tcp_retrans_collapse (booléen ; activé par défaut ; depuis Linux 2.2)
              Essayer d'envoyer des paquets de tailles complètes durant les réémissions.

       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 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
              typiquement 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. Lorsqu'il n'est pas activé, si un RST est
              reçu en état TIME_WAIT, la socket est fermée immédiatement 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, défaut, max]. Ces paramètres sont utilisés par TCP
              pour  régler  la  taille 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    minimum size of the receive buffer used by each TCP socket. The default value is the system
                     page  size.  (On  Linux  2.4,  the  default  value  is  4 kB, lowered to PAGE_SIZE bytes in
                     low-memory systems.) This value is used to ensure that in memory pressure mode, allocations
                     below this size will still succeed. This is not used to  bound  the  size  of  the  receive
                     buffer declared using SO_RCVBUF on a socket.

              default
                     la  taille  par  défaut  du tampon de réception pour une socket TCP. Cette valeur écrase la
                     taille par défaut dans la  valeur  globale  net.core.rmem_default  définie  pour  tous  les
                     protocoles. La valeur par défaut est 87380 octets (sous Linux 2.4, elle descend à 43689 sur
                     les systèmes avec peu de mémoire). Si une taille plus grande est désirée, il faut augmenter
                     cette  valeur  (pour  affecter  toutes  les sockets). Pour utiliser une grande fenêtre TCP,
                     l'option net.ipv4.tcp_window_scaling doit être activée (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 la socket. La valeur par défaut
                     est calculé 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 descendre à 87380  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)
              S'il  est  activé,  le  comportement de la RFC 2861 est fournit et la fenêtre de congestion expire
              après  une  période  d'inactivité.  Une  période   d'inactivité   est   définie   comme   le   RTO
              (« retransmission  timeout » :  le  délai  de  retransmission).  S'il est 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)
              Activation de l'interprétation RFC 1122 du champ TCP Urgent-Pointer. Selon  cette  interprétation,
              le pointeur urgent pointe vers le dernier octet de données urgentes. Par défaut une interprétation
              compatible  BSD  de  ce  champ  est  utilisée,  qui pointe vers le premier octet après les données
              urgentes. Valider cette option peut poser des problèmes d'interaction entre systèmes.

       tcp_syn_retries (integer; default: 6; since Linux 2.2)
              The maximum  number  of  times  initial  SYNs  for  an  active  TCP  connection  attempt  will  be
              retransmitted. This value should not be higher than 255. The default value is 6, which corresponds
              to  retrying for up to approximately 127 seconds. Before Linux 3.7, the default value was 5, which
              (in conjunction with calculation based on other kernel parameters) corresponded  to  approximately
              180 seconds.

       tcp_synack_retries (entier ; 5 par défaut ; depuis Linux 2.2)
              Le  nombre maximal de fois où un segment SYN/ACK sera retransmis sur une connexion TCP passive. Ce
              nombre ne doit pas dépasser 255.

       tcp_syncookies (integer; default: 1; since Linux 2.2)
              Enable TCP syncookies. The kernel must be compiled with CONFIG_SYN_COOKIES. The syncookies feature
              attempts to protect a socket from a SYN flood attack. This should be used as a last resort, if  at
              all.  This  is  a violation of the TCP protocol, and conflicts with other areas of TCP such as TCP
              extensions. It can cause problems for clients and relays.  It  is  not  recommended  as  a  tuning
              mechanism  for  heavily  loaded  servers  to help with overloaded or misconfigured conditions. For
              recommended alternatives see tcp_max_syn_backlog, tcp_synack_retries,  and  tcp_abort_on_overflow.
              Set to one of the following values:

              0  Disable TCP syncookies.

              1  Send out syncookies when the syn backlog queue of a socket overflows.

              2  (since  Linux  3.12)   Send  out  syncookies  unconditionally.  This  can be useful for network
                 testing.

       tcp_timestamps (integer; default: 1; since Linux 2.2)
              Set to one of the following values to enable or disable RFC 1323 TCP timestamps:

              0  Disable timestamps.

              1  Enable timestamps as defined in RFC1323 and use random offset for each connection  rather  than
                 only using the current time.

              2  As  for  the  value  1,  but  without  random  offsets. Setting tcp_timestamps to this value is
                 meaningful since Linux 4.10.

       tcp_tso_win_divisor (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  de segmentation (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
              importants.

       tcp_tw_recycle (Boolean; default: disabled; Linux 2.4 to 4.11)
              Enable  fast recycling of TIME_WAIT sockets. Enabling this option is not recommended as the remote
              IP  may  not  use  monotonically  increasing  timestamps  (devices  behind   NAT,   devices   with
              per-connection timestamp offsets). See RFC 1323 (PAWS) and RFC 6191.

       tcp_tw_reuse (booléen ; désactivé par défaut ; depuis Linux 2.4.19/2.6)
              Permet  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 à 2.6.13)
              Enable  TCP  Vegas  congestion  avoidance algorithm. TCP Vegas is a sender-side-only change to TCP
              that anticipates the onset of congestion by  estimating  the  bandwidth.  TCP  Vegas  adjusts  the
              sending rate by modifying the congestion window. TCP Vegas should provide less packet loss, but it
              is not as aggressive as TCP Reno.

       tcp_westwood (booléen ; désactivé par défaut ; Linux 2.4.26/2.6.3 à 2.6.13)
              Enable   TCP   Westwood+  congestion  control  algorithm.  TCP  Westwood+  is  a  sender-side-only
              modification of the TCP Reno protocol stack that  optimizes  the  performance  of  TCP  congestion
              control.  It  is  based on end-to-end bandwidth estimation to set congestion window and slow start
              threshold after a congestion episode. Using this estimation, TCP Westwood+ adaptively sets a  slow
              start  threshold  and  a congestion window which takes into account the bandwidth used at the time
              congestion is experienced. TCP Westwood+ significantly increases fairness with respect to TCP Reno
              in wired networks and throughput over wireless links.

       tcp_window_scaling (booléen ; activé par défaut ; depuis Linux 2.2)
              Enable RFC 1323 TCP window scaling. This feature allows the use of a large window (> 64 kB)  on  a
              TCP  connection,  should the other end support it. Normally, the 16 bit window length field in the
              TCP header limits the window size to less than 64 kB. If larger windows are desired,  applications
              can  increase  the size of their socket buffers and the window scaling option will be employed. If
              tcp_window_scaling is disabled, TCP will not negotiate the use of window scaling  with  the  other
              end during connection setup.

       tcp_wmem (depuis Linux 2.4)
              Il  s'agit  d'un  vecteur de trois entiers : [min, défaut, 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    Minimum  size  of  the send buffer used by each TCP socket. The default value is the system
                     page size. (On Linux 2.4, the default value is 4 kB.) This value is used to ensure that  in
                     memory  pressure  mode, allocations below this size will still succeed. This is not used to
                     bound the size of the send buffer declared using SO_SNDBUF on a socket.

              default
                     The default size of the send buffer for a TCP socket. This  value  overwrites  the  initial
                     default buffer size from the generic global /proc/sys/net/core/wmem_default defined for all
                     protocols.  The default value is 16 kB. If larger send buffer sizes are desired, this value
                     should  be  increased  (to  affect  all  sockets).  To  employ  large  TCP   windows,   the
                     /proc/sys/net/ipv4/tcp_window_scaling must be set to a nonzero value (default).

              max    max  -  la taille maximale du tampon d'émission utilisé 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 de réception déclarée avec l'option SO_SNDBUF sur
                     la socket. La valeur par défaut est calculée avec la formule :

                         max(65536, min(4 MB, tcp_mem[1]*PAGE_SIZE/128))

                     (On Linux 2.4, the default value is 128 kB, lowered 64 kB depending on low-memory systems.)

       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  disfonctionnelles
              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).

       Following  is  a  list  of TCP-specific socket options. For details of some other socket options that are
       also applicable for TCP sockets, see socket(7).

       TCP_CONGESTION (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 par utilisateur. Les processus non privilégiés sont
              restreints à 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 (consultez 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 la socket.
              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)
              Fournit  des  informations  sur  la  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 la 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 orphelines 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 la
              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 paquets 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 nulle. 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)
              Indique  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)
              This  option  takes an unsigned int as an argument. When the value is greater than 0, it specifies
              the maximum amount of time in milliseconds that transmitted data may remain unacknowledged  before
              TCP  will  forcibly close the corresponding connection and return ETIMEDOUT to the application. If
              the option value is specified as 0, TCP will use the system default.

              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.

              This  option  can  be  set  during any state of a TCP connection, but is effective only during the
              synchronized states of a connection (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, and
              LAST-ACK). Moreover, when used with the TCP  keepalive  (SO_KEEPALIVE)   option,  TCP_USER_TIMEOUT
              will override keepalive to determine when to close a connection due to keepalive failure.

              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 la socket renvoyée par accept(2) si elle avait
              été définie sur la 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)
              Limite  la  taille  de la fenêtre. 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.

   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 une interprétation  compatible  BSD  du  champ  Urgent-Pointer.  Cela  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  la  version 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  fournit  au  tampon  fournit  par  l'appelant.  Depuis  Linux 2.4.4,  MSG_TRUNC a également un 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;
              error = ioctl(tcp_socket, ioctl_type, &valeur);

       ioctl_type est l'une des valeurs suivantes :

       SIOCINQ
              Renvoie la quantité de données non lues en attente dans le tampon de réception. La 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
              Renvoie 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  SO_OOBINLINE  est  activée,  et SIOCATMARK renvoie vrai, la prochaine lecture sur la
              socket renverra les données urgentes. Si l'option SO_OOBINLINE n'est pas  activée,  et  SIOCATMARK
              renvoie  vrai, la prochaine lecture sur la socket renverra les octets suivant les données urgentes
              (pour lire les données urgentes, il faut utiliser l'option MSG_OOB de recv()).

              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, il 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
              Renvoie  la  quantité  de  données non envoyées en attente dans le tampon d'émission. La socket ne
              doit pas être dans l'état LISTEN, sinon l'erreur EINVAL est renvoyée.  SIOCOUTQ  est  défini  dans
              <linux/sockios.h>. Une alternative est d'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 validé 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 de la socket passée dans sin_family n'était pas AF_INET.

       EPIPE  L'autre  extrémité  a  fermé  inopinément  la  socket,  ou  une  lecture est tentée sur une socket
              terminée.

       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 se produire  avec
       TCP.

VERSIONS

       La  prise  en  charge  de  notification  explicite  de congestion, l'émission de fichiers sans copie avec
       sendfile(2), le réordonnancement et certaines extensions SACK (DSACK) ont été introduits 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 la fenêtre TCP.
       RFC 1337 pour une description des dangers de TIME_WAIT.
       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.

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions pour signaler des anomalies et la dernière version de cette page  peuvent  être  trouvées  à
       l'adresse https://www.kernel.org/doc/man-pages/.

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>   et   David   Prévot
       <david@tilapin.org>

       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.

Linux                                           21 décembre 2020                                          TCP(7)