Provided by: manpages-fr_3.32d0.2p4-1_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  implementation  du  protocole  TCP  defini  dans les
       RFC 793, RFC 1122 et RFC 2001 avec les extensions SACK et NewReno. Cela
       fournit  une  connexion  full-duplex  fiable  orientee  flux entre deux
       sockets au-dessus de ip(7),  version 4  et  6.  TCP  garantit  que  les
       donnees  arrivent  dans l'ordre et assure la retransmission des paquets
       perdus. Il calcule et verifie une somme de  controle  par  paquet  pour
       detecter  les  erreurs de transmission. TCP ne preserve pas les limites
       des enregistrements.

       Une socket TCP neuve n'a pas d'adresse locale ou distante et n'est  pas
       completement  definie.  Pour creer une connexion TCP sortante, utilisez
       connect(2) pour etablir la connexion sur une  autre  socket  TCP.  Pour
       recevoir  les  connexions  entrantes,  attachez  d'abord la socket avec
       bind(2) a une adresse locale et un port, puis  appelez  listen(2)  pour
       mettre  la  socket  dans  un  etat  d'attente. Apres cela, une nouvelle
       socket peut etre obtenue pour chaque connexion  entrante  en  utilisant
       accept(2).  Une socket sur laquelle on a appele accept(2) ou connect(2)
       avec succes est completement definie et peut transmettre  des  donnees.
       Les  donnees  ne  peuvent pas circuler sur les socket en attente ou non
       connectees.

       Linux  prend  en  charge  les  extensions  TCP  a  hautes  performances
       RFC 1323.  Cela  inclut  la  protection  contre les numeros de sequence
       bouclant (PAWS), la modification de fenetre (<< Window  Scaling >>)  et
       les horodatages (<< timestamps >>). Le Window Scaling permet d'utiliser
       des fenetres TCP larges (>  64K)  pour  gerer  les  liaisons  avec  une
       latence  ou  une bande passante elevees. Pour les utiliser, les tailles
       des tampons d'emission et de reception doivent etre augmentees. On peut
       les  fixer globalement avec les fichiers /proc/sys/net/ipv4/tcp_wmem et
       /proc/sys/net/ipv4/tcp_rmem ou individuellement sur  les  sockets  avec
       les options SO_SNDBUF et SO_RCVBUF de l'appel systeme setsockopt(2).

       Les  tailles  maximales  pour  les  tampons  declares  via SO_SNDBUF et
       SO_RCVBUF   sont   limitees    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 demandee  avec
       l'appel  setsockopt(2), et qu'un appel getsockopt(2) reussi ne renverra
       pas la meme taille de tampon que celle reclamee dans le  setsockopt(2).
       TCP  les  utilise  a  des  fins  administratives et pour des structures
       internes du noyau, et les valeurs des fichiers de /proc  renvoient  des
       tailles  superieures  a  celle  des  veritables  fenetres TCP. Pour les
       connexions individuelles, la taille du tampon doit etre fixee avant les
       appels  listen(2)  ou  connect(2)  pour  qu'elle  soit prise en compte.
       Consultez socket(7) pour plus de details.

       TCP permet de d'indiquer  des  donnees  urgentes.  Elles  signalent  au
       recepteur  qu'un message important est dans le flux de donnees et qu'il
       doit etre traite  le  plus  tot  possible.  Pour  envoyer  des  donnees
       urgentes,  indiquez  l'option  MSG_OOB  de  send(2).  Quand des donnees
       urgentes sont recues, le noyau envoie un signal SIGURG au processus  ou
       au  groupe  de  processus  qui  a  ete indique comme proprietaire de la
       socket avec les ioctls SIOCSPGRP ou FIOSETOWN (ou l'operation  F_SETOWN
       de  fcntl(2),  specifiee  par  POSIX.1-2001).  Quand l'option de socket
       SO_OOBINLINE est validee, les donnees urgentes sont mises dans le  flux
       de  donnees normal (et peuvent etre detectees avec l'ioctl SIOCATMARK),
       sinon, on ne peut  les  recevoir  que  lorsque  l'attribut  MSG_OOB  es
       positionne pour recv(2) ou recvmsg(2).

       Linux 2.4  a  introduit un certain nombre de changements pour ameliorer
       le debit et l'extensibilite, ainsi que des fonctionnalites  ameliorees.
       Certaines  de ces fonctions incluent la prise en charge d'emission 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 dupliques.

   Formats d'adresse
       TCP est construit  au-dessus  de  IP  (consultez  ip(7)).  Les  formats
       d'adresse definis pour ip(7) s'appliquent pour TCP. TCP ne gere que les
       communications point-a-point. Le broadcast et le multicast ne sont  pas
       geres.

   Interfaces /proc
       Les  parametres  TCP  du  systeme sont accessibles avec les fichiers du
       repertoire /proc/sys/net/ipv4/. De  plus,  la  plupart  des  interfaces
       /proc d'IP s'appliquent a TCP. Consultez ip(7). Les variables indiquees
       comme bool'eennes prennent une  valeur  entiere,  une  valeur  non-nulle
       indiquant  que  l'option  est  active,  une  valeur nulle indiquant que
       l'option est inactive.

       tcp_abc (entier ; 0 par defaut ; depuis Linux 2.6.15)
              Controler  l'ABC  (<< Appropriate   Byte   Count >> :   decompte
              d'octets  approprie), defini dans la RFC 3465. ABC est une facon
              d'augmenter  la  fenetre  de  congestion  (cwnd :  << congestion
              window)  plus lentement en reponse a 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  a deux segments, pour compenser les acquittements
                 avec delais.

       tcp_abort_on_overflow  (booleen ;   desactive   par   defaut ;   depuis
       Linux 2.4)
              Valider  la  reinitialisation  des  connexions  si le service en
              ecoute est  trop  lent  et  incapable  de  les  traiter  et  les
              accepter. Cela signifie que si un debordement se produit a cause
              d'une  surcharge  temporaire,  la  connexion  va  se  rattraper.
              N'activez  cette  option  que  si vous etes SURS que le demon en
              ecoute ne peut pas etre configure pour accepter  les  connexions
              plus  vite.  Cette  option peut desorienter les clients de votre
              serveur.

       tcp_adv_win_scale (entier ; 2 par defaut ; depuis Linux 2.4)
              Calculer le surplus du tampon  comme  bytes/2^tcp_adv_win_scale,
              si     tcp_adv_win_scale     est     superieur    a    0 ;    ou
              bytes-bytes/2^(-tcp_adv_win_scale),  si  tcp_adv_win_scale   est
              inferieur ou egal a zero.

              L'espace  du  tampon de reception de la socket est partage entre
              l'application et le noyau. TCP conserve une portion du tampon en
              tant que fenetre TCP, c'est la taille de la fenetre de reception
              indiquee au correspondant. Le reste de cet  espace  est  utilise
              comme  tampon  d'<< application >>,  pour  isoler  le reseau des
              latences de l'ordonnanceur et de l'application.  La  valeur  par
              defaut  (2)  de  tcp_adv_win_scale  indique que l'espace utilise
              pour le tampon d'application est un quart de l'espace total.

       tcp_allowed_congestion_control (chaine ; voir le texte pour  la  valeur
       par defaut ; depuis Linux 2.4.20)
              Afficher  ou  definir  les  choix  d'algorithmes  de controle de
              congestion disponibles pour les processus non privilegies  (voir
              la  description de l'option TCP_CONGESTION pour les sockets). La
              liste  est  un  sous-ensemble  des  algorithmes  de   la   liste
              tcp_available_congestion_control.   La  valeur  par  defaut  est
              << reno >>    plus    le     parametre     par     defaut     de
              tcp_congestion_control.

       tcp_available_congestion_control   (chaine ;   lecture  seule ;  depuis
       Linux 2.4.20)
              Afficher une liste des algorithmes de controle de congestion qui
              sont  enregistres. Cette liste limite l'ensemble des algorithmes
              permis  pour  la  liste   tcp_allowed_congestion_control.   Plus
              d'algorithmes  de controle de congestion peuvent etre disponible
              sous forme de modules, mais non charges.

       tcp_app_win (entier ; 31 par defaut ; depuis Linux 2.4)
              Cette variable definit combien d'octets de la fenetre  TCP  sont
              reserves pour le surplus de tampon.

              Un  maximum de (fenetre/2^tcp_app_win, mss) octets de la fenetre
              est reserve pour  le  tampon  d'application.  Une  valeur  nulle
              indique qu'aucune portion n'est reservee.

       tcp_base_mss (entier ; 512 par defaut ; depuis Linux 2.6.17)
              La  valeur  initiale de search_low a utiliser pour la decouverte
              du MTU du chemin dans la couche de transport (mise en  paquets).
              SI  la decouverte du MTU est activee, il s'agit du MSS de depart
              utilise par la connexion.

       tcp_bic (booleen ; desactive par defaut ; Linux 2.4.27/2.6.6 a 2.6.13)
              Activer l'algorithme de controle de congestion TCP BIC.  BIC-TCP
              est  une  modification cote emetteur qui assure une linearite du
              RTT  (Delai  d'aller-retour,  << Round-Trip  Time >>)  avec   de
              grandes  fenetres,  tout en permettant un passage a l'echelle et
              en se bornant a la compatibilite TCP. Le protocole combine  deux
              effets  appeles  augmentation  additive  et  recherche  binaire.
              Lorsque la fenetre  de  congestion  est  grande,  l'augmentation
              additive  avec un increment grand assure une linearite du RTT et
              un bon  passage  a  l'echelle.  Avec  des  petites  fenetres  de
              congestion, la recherche binaire fournit une compatibilite TCP.

       tcp_bic_low_window  (entier ;  14  par  defaut ;  Linux 2.4.27/2.6.6  a
       2.6.13)
              Fixer la fenetre limite  (en  paquets)  pour  laquelle  BIC  TCP
              commence  a ajuster la fenetre de congestion. Sous cette limite,
              BIC TCP se comporte comme l'algorithme TCP Reno par defaut.

       tcp_bic_fast_convergence     (booleen ;     active     par     defaut ;
       Linux 2.4.27/2.6.6 a 2.6.13)
              Forcer  BIC  TCP a repondre plus vite aux changements de fenetre
              de congestion. Permet a deux flux partageant la  meme  connexion
              de converger plus vite.

       tcp_congestion_control  (chaine ;  voir  le  texte  pour  la valeur par
       defaut ; depuis Linux 2.4.13)
              Definir l'algorithme de controle de congestion a  utiliser  pour
              les  nouvelles  connexions. L'algorithme << reno >> est toujours
              disponible, mais des choix supplementaires sont  disponibles  en
              fonction de la configuration du noyau. La valeur par defaut pour
              ce fichier est definie dans la configuration du noyau.

       tcp_dma_copybreak (entier ; 4096 par defaut ; depuis Linux 2.6.24)
              La limite inferieure, en octets, de la taille des  lectures  sur
              une socket qui seront delestees sur le moteur de copie DMA, s'il
              y en a un sur le systeme et si le noyau  a  ete  configure  avec
              l'option CONFIG_NET_DMA.

       tcp_dsack (booleen ; active par defaut ; depuis Linux 2.4)
              Valide la prise en charge TCP SACK duplique de la RFC 2883.

       tcp_ecn (booleen ; desactive par defaut ; depuis Linux 2.4)
              Valide  la  notification explicite de congestion de la RFC 2884.
              Lorsqu'elle est  en  service,  la  connectivite  avec  certaines
              destinations  peut  etre  affectee a cause de vieux routeurs mal
              configures le long du trajet, et  les  connexions  peuvent  etre
              rompues.

       tcp_fack (booleen ; active par defaut ; depuis Linux 2.4)
              Valide la prise en charge TCP Forward Acknowledgement.

       tcp_fin_timeout (entier ; 60 par defaut ; depuis Linux 2.2)
              Nombre  de  secondes a attendre un paquet final FIN avant que la
              socket soit fermee de force. Strictement parlant, ceci  est  une
              violation  des  specifications  TCP,  mais  est  necessaire pour
              empecher les attaques par deni de service. La valeur par  defaut
              dans les noyaux 2.2 est 180.

       tcp_frto (entier ; 0 par defaut ; depuis Linux 2.4.21/2.6)
              Activer  F-RTO,  un algorithme ameliore de recuperation pour les
              temporisations de retransmission  TCP  (RTO :  << retransmission
              timeouts >>).  Il  est  particulierement  interessant  dans  des
              environnements sans fil, ou la perte des paquets est typiquement
              due   a   des  interferences  radio  aleatoire  plutot  qu'a  la
              congestion des routeurs intermediaires.  Consultez  la  RFC 4138
              pour plus de details.

              Ce fichier peut prendre une des valeurs suivantes :

              0  Desactive.

              1  La version de base de l'algorithme F-RTO est activee.

              2  Active  la  version  amelioree  de F-RTO avec des SACK, si le
                 flux utilise des SACK. La version de  base  peut  aussi  etre
                 utilisee  quand  des  SACK sont utilises, meme si dans ce cas
                 des scenarios existent dans lesquels F-RTO interagit mal avec
                 le comptage de paquets du flux TCP utilisant des SACK.

              Avant Linux 2.6.22, ce parametre etait une valeur booleenne, qui
              ne prenait en charge que les valeurs 0 et 1 ci-dessous.

       tcp_frto_response (entier ; 0 par defaut ; depuis Linux 2.6.22)
              Quand F-RTO a detecte une fausse expiration d'une  temporisation
              (c'est-a-dire  qu'elle  aurait pu etre evitee si TCP avait eu un
              delai de retransmission plus long), TCP a plusieurs options  sur
              ce qu'il faut faire par la suite. Les valeurs possibles sont :

              0  Diminution   de  moitie  du  debit ;  une  reponse  douce  et
                 conservatrice qui resulte en une diminution de moitie  de  la
                 fenetre  de  congestion  (cwnd) et du seuil de demarrage lent
                 (ssthresh,  << slow-start  threshold >>)   apres   un   delai
                 d'aller-retour (RTT).

              1  Reponse  tres  conservatrice ; pas recommandee parce que bien
                 que correcte, elle interagit mal avec le reste  de  TCP  sous
                 Linux ;   reduction   de   moitie  de  cwnd  et  de  ssthresh
                 immediatement.

              2  Reponse agressive ;  supprime  les  mesures  de  controle  de
                 congestion  qui  sont connues pour ne pas etre necessaire (en
                 ignorant la possibilite d'une  perte  de  retransmission  qui
                 forcerait  TCP  a  etre plus prudent) ; cwnd et ssthresh sont
                 remis aux valeurs anterieures a l'expiration du delai.

       tcp_keepalive_intvl (entier ; 75 par defaut ; depuis Linux 2.4)
              L'intervalle en secondes entre deux messages TCP keep-alive.

       tcp_keepalive_probes (entier ; 9 par defaut ; depuis Linux 2.2)
              Nombre maximal de tentatives  TCP  keep-alive  a  envoyer  avant
              d'abandonner  et  de  tuer  la connexion si aucune reponse n'est
              obtenue de l'autre partie.

       tcp_keepalive_time (entier ; 7200 par defaut ; depuis Linux 2.2)
              Nombre  de  secondes  durant  lesquelles  aucune  donnee   n'est
              transmise   sur   la   connexion   avant  d'envoyer  un  message
              keep-alive.  Ces  messages  ne  sont  envoyes  que  si  l'option
              SO_KEEPALIVE  de la socket est validee. La valeur par defaut est
              7200 secondes (2 heures).  Une  connexion  inactive  est  coupee
              environ   11 minutes   plus  tard  (9 tentatives  a  75 secondes
              d'ecart).

              Notez que les delais de la couche de transport sous-jacente,  ou
              de l'application peuvent etre bien plus courts.

       tcp_low_latency    (booleen ;    desactive    par    defaut ;    depuis
       Linux 2.4.21/2.6)
              S'il est active, la pile TCP prend des decisions qui  favorisent
              une latence plus faible par opposition a un debit plus grand. Si
              cette option est desactivee, un debit plus grand est prefere. Un
              cas  ou  cette  valeur  par  defaut devrait etre changee est par
              exemple un cluster de calcul Beowulf.

       tcp_max_orphans (entier ; valeur par defaut : voir ci-dessous ;  depuis
       Linux 2.4)
              Le  nombre  maximal de sockets TCP orphelines (attachees a aucun
              descripteur utilisateur) sur le systeme.  Quand  ce  nombre  est
              depasse,  la connexion orpheline est reinitialisee et un message
              d'avertissement est affiche.  Cette  limite  n'existe  que  pour
              eviter  les attaques par deni de service ; la diminuer n'est pas
              recommande. Certaines situations  peuvent  reclamer  d'augmenter
              cette  limite,  mais  notez  que chaque connexion orpheline peut
              consommer jusqu'a 64 ko de memoire non-swappable. La valeur  par
              defaut est egale au parametre NR_FILE du noyau. Elle est ajustee
              en fonction de la memoire disponible sur le systeme.

       tcp_max_syn_backlog (entier ; valeur  par  defaut :  voir  ci-dessous ;
       depuis Linux 2.2)
              Le  nombre  maximal  de  requetes  de connexions en attente, qui
              n'ont pas encore recu d'acquittement de la  part  du  client  se
              connectant.  Si  ce  nombre  est  atteint, le noyau commencera a
              abandonner  des  requetes.  La  valeur  par  defaut,  256,   est
              augmentee jusqu'a 1024 si la memoire presente est suffisante (>=
              128 Mo) et peut etre diminuee a 128 sur les systemes  avec  tres
              peu  de  memoire  (<=  32 Mo).  Il  est  recommande,  s'il  faut
              augmenter  cette  valeur  au  dessus  de   1024,   de   modifier
              TCP_SYNQ_HSIZE    dans    include/net/tcp.h    pour    conserver
              TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog et de  recompiler  le
              noyau.

       tcp_max_tw_buckets  (entier ;  valeur  par  defaut :  voir ci-dessous ;
       depuis Linux 2.4)
              Le nombre maximal de sockets dans  l'etat  TIME_WAIT  autorisees
              sur  le  systeme.  Cette  limite  n'existe  que  pour eviter les
              attaques  par  deni  de  service.  La  valeur  par  defaut   est
              NR_FILE*2,  ajustee  en fonction de la memoire disponible. Si ce
              nombre est atteint, la socket est fermee et un avertissement est
              affiche.

       tcp_moderate_rcvbuf (booleen ; active par defaut ; Linux 2.4.17/2.6.7)
              S'il  est  active, TCP effectue un reglage automatique du tampon
              de  reception,  en  essayant  de   trouver   la   bonne   taille
              automatiquement   (pas   plus   grand   que   tcp_rmem[2])  pour
              correspondre a la taille necessaire pour un debit maximal sur le
              chemin.

       tcp_mem (depuis Linux 2.4)
              Il  s'agit  d'un vecteur de trois entiers : [bas, charge, haut].
              Ces limites, mesurees dans une unite qui correspond a la  taille
              des  pages  systeme,  sont  utilisees par TCP pour surveiller sa
              consommation memoire. Les valeurs par defaut sont  calculees  au
              moment  du  demarrage a partir de la memoire disponible. (TCP ne
              peut utiliser que la m'emoire basse pour cela,  qui  est  limitee
              aux  environs  de  900 Mo sur les systemes 32 bits. Les systemes
              64 bits ne souffrent pas de cette limitation.)

              low       TCP ne cherche pas a reguler ses  allocations  memoire
                        quand le nombre de pages qu'il a alloue est en-dessous
                        de ce nombre

              pressure  Lorsque la taille memoire allouee par TCP  depasse  ce
                        nombre  de  pages, TCP modere sa consommation memoire.
                        L'etat de memoire chargee se termine lorsque le nombre
                        de pages allouees descend en dessous de la marque bas.

              high      Le  nombre  global  maximal de pages que TCP allouera.
                        Cette valeur surcharge tout autre limite  imposee  par
                        le noyau.

       tcp_mtu_probing (entier ; 0 par defaut ; Linux 2.6.17)
              Ce  parametre  controle  la  decouverte  du  MTU du chemin de la
              couche   transport   (<< TCP   Packetization-Layer   Path    MTU
              Discovery >>). Le fichier peut prendre les valeurs suivantes :

              0  Desactive

              1  Desactive  par  defaut,  active  quand  un trou noir ICMP est
                 detecte

              2  Toujours active, utilise le MSS de depart de tcp_base_mss.

       tcp_no_metrics_save   (booleen ;   desactive   par   defaut ;    depuis
       Linux 2.6.6)
              Par  defaut,  TCP  sauve  differentes metriques sur la connexion
              dans la cache des routes quand la connexion est fermee, de telle
              sorte  que les connexions ouvertes rapidement apres puissent les
              utiliser comme conditions initiales. D'habitude,  ceci  augmente
              globalement  les  performances,  mais  peut parfois degrader les
              performances. Si tcp_no_metrics_save est active, TCP ne  sauvera
              pas  de  metrique  dans  la  cache  lors  de  la  fermeture  des
              connexions.

       tcp_orphan_retries (entier ; 8 par defaut ; depuis Linux 2.4)
              Le nombre maximal de tentatives pour acceder a l'autre extremite
              d'une connexion dont notre cote a ete ferme.

       tcp_reordering (entier ; 3 par defaut ; depuis Linux 2.4)
              Le  nombre de reorganisations dans un flux TCP avant de supposer
              qu'un paquet est perdu et  reprendre  au  debut.  Il  n'est  pas
              conseille  de  modifier  cette valeur. C'est une metrique sur la
              detection des reordonnancements de paquets concue pour minimiser
              les  retransmissions  inutiles  provoquees par la reorganisation
              des paquets dans une connexion.

       tcp_retrans_collapse (booleen ; active par defaut ; depuis Linux 2.2)
              Essayer d'envoyer des paquets de tailles  completes  durant  les
              reemissions.

       tcp_retries1 (entier ; 3 par defaut ; depuis Linux 2.2)
              Le  nombre  de  fois que TCP essayera de retransmettre un paquet
              sur  une  connexion  etablie  normalement,  sans   demander   de
              contribution  supplementaire  de la couche reseau concernee. Une
              fois ce nombre atteint, on demande au niveau reseau de  remettre
              a   jour   son   routage,  si  possible  avant  chaque  nouvelle
              transmission. La valeur par defaut, 3, est  le  minimum  indique
              dans la RFC.

       tcp_retries2 (entier ; 15 par defaut ; depuis Linux 2.2)
              Le  nombre  de  fois  qu'un  paquet  TCP est restransmis sur une
              connexion etablie avant d'abandonner. La valeur par  defaut  est
              15, ce qui correspond a une duree entre 13 et 30 minutes suivant
              le delai  maximal  de  retransmission.  La  limite  minimale  de
              100 secondes   specifiee   par   la   RFC 1122  est  typiquement
              consideree comme trop courte.

       tcp_rfc1337 (booleen ; desactive par defaut ; depuis Linux 2.2)
              Activer  le  comportement  TCP  conformement  a   la   RFC 1337.
              Lorsqu'il  n'est  pas  active,  si  un  RST  est  recu  en  etat
              TIME_WAIT, on ferme la socket immediatement sans attendre la fin
              de la periode TIME_WAIT.

       tcp_rmem (depuis Linux 2.4)
              Il  s'agit  d'un  vecteur de trois entiers : [min, defaut, max].
              Ces parametres sont utilises par TCP pour regler  la  taille  du
              tampon de reception. TCP ajuste dynamiquement la taille a partir
              de la valeur par defaut, dans l'intervalle de  ces  valeurs,  en
              fonction de la memoire disponible sur le systeme.

              min       taille  minimale  du  tampon de reception utilisee par
                        chaque socket TCP. La valeur par defaut est la  taille
                        des  pages  du  systeme (sous Linux 2.4, la valeur par
                        defaut est de 4 Ko et descend a  PAGE_SIZE octets  sur
                        les systemes avec peu de memoire). Cette valeur assure
                        qu'en  mode  de  memoire  chargee,   les   allocations
                        en-dessous  de cette taille reussiront. Elle n'est pas
                        utilisee  pour  limiter  la  taille   du   tampon   de
                        reception,  declaree  en  utilisant l'option SO_RCVBUF
                        sur la socket.

              default   la taille par defaut du tampon de reception  pour  une
                        socket  TCP.  Cette valeur ecrase la taille par defaut
                        dans la valeur globale  net.core.rmem_default  definie
                        pour  tous  les  protocoles.  La valeur par defaut est
                        87380 octets (sous Linux 2.4, elle descend a 43689 sur
                        les  systemes avec peu de memoire). Si une taille plus
                        grande est desiree, il  faut  augmenter  cette  valeur
                        (pour  affecter toutes les sockets). Pour utiliser une
                        grande         fenetre          TCP,          l'option
                        net.ipv4.tcp_window_scaling  doit  etre  activee  (par
                        defaut).

              max       la taille maximale du tampon de reception utilise  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 reception declaree
                        avec l'option SO_RCVBUF sur la socket. La  valeur  par
                        defaut est calcule par la formule :

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

                        (Sous   Linux 2.4,   la   valeur  par  defaut  est  de
                        87380*2 octets, et descendre a 87380 sur les  systemes
                        avec peu de memoire)

       tcp_sack (booleen ; active par defaut ; depuis Linux 2.2)
              Activer l'acquittement TCP selectif (RFC 2018).

       tcp_slow_start_after_idle   (booleen ;   active   par  defaut ;  depuis
       Linux 2.6.18)
              S'il est active, le comportement de la RFC 2861 est  fournit  et
              la  fenetre de congestion expire apres une periode d'inactivite.
              Une   periode   d'inactivite   est   definie   comme   le    RTO
              (<< retransmission  timeout >> :  le  delai  de retransmission).
              S'il est desactive, la  fenetre  de  congestion  n'expirera  pas
              apres une periode d'inactivite.

       tcp_stdurg (booleen ; desactive par defaut ; depuis Linux 2.2)
              Activation   de   l'interpretation   RFC 1122   du   champ   TCP
              Urgent-Pointer. Selon cette interpretation, le  pointeur  urgent
              pointe  vers le dernier octet de donnees urgentes. Par defaut on
              utilise une interpretation  compatible  BSD  de  ce  champ,  qui
              pointe vers le premier octet apres les donnees urgentes. Valider
              cette  option  peut  poser  des  problemes  d'interaction  entre
              systemes.

       tcp_syn_retries (entier ; 5 par defaut ; depuis Linux 2.2)
              Le  nombre  maximal  de  fois  ou  un  paquet  SYN  initial sera
              retransmis pour une tentative de  connexion  TCP  active.  Cette
              valeur  ne doit pas depasser 255. La valeur par defaut est 5, ce
              qui correspond approximativement a 180 secondes.

       tcp_synack_retries (entier ; 5 par defaut ; depuis Linux 2.2)
              Le nombre maximal de fois ou un segment SYN/ACK sera  retransmis
              sur  une  connexion  TCP passive. Ce nombre ne doit pas depasser
              255.

       tcp_syncookies (booleen ; depuis Linux 2.2)
              Valider les syncookies TCP. Le  noyau  doit  etre  compile  avec
              l'option  CONFIG_SYN_COOKIES.  Envoie  des syncookies lorsque la
              file d'attente des connexions sur une socket deborde.  Ceci  est
              utilise  pour se proteger d'une attaque de type << SYN flood >>.
              On ne doit l'utiliser qu'en dernier ressort. C'est une violation
              du  protocole  TCP,  et entre en conflit avec d'autres fonctions
              comme les extensions TCP. Cela peut poser des problemes avec les
              clients ou les relais. Ce mecanisme n'est pas considere comme un
              moyen de reglage sur un serveur tres charge  ou  mal  configure.
              Pour      des      alternatives      acceptables,      consultez
              tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.

       tcp_timestamps (booleen ; active par defaut ; depuis Linux 2.2)
              Activer les horodatages TCP (RFC 1323).

       tcp_tso_win_divisor (entier ; 3 par defaut ; depuis Linux 2.6.9)
              Ce  parametre  controle  quel  pourcentage  de  la  fenetre   de
              congestion   peut   etre   utilise   par  une  unique  trame  de
              segmentation (TSO : << TCP Segmentation Offload >>).  La  valeur
              de  ce  parametre  est  un  compromis entre une transmission par
              rafales et construire des trames avec un TSO plus importants.

       tcp_tw_recycle (booleen ; desactive par defaut ; depuis Linux 2.4)
              Activer le recyclage rapide des sockets TIME_WAIT. Cette  option
              n'est pas recommandee car elle peut poser des problemes avec les
              redirections NAT (Network Address Translation).

       tcp_tw_reuse (booleen ; desactive par defaut ; depuis Linux 2.4.19/2.6)
              Permet de reutiliser les sockets TIME_WAIT  pour  les  nouvelles
              connexions quand c'est sur du point de vue du protocole. Cela ne
              devrait pas etre modifie sans l'avis  ou  la  demande  d'experts
              techniques.

       tcp_vegas_cong_avoid  (booleen ;  desactive  par  defaut ;  Linux 2.2 a
       2.6.13)
              Active l'algorithme TCP Vegas  d'evitement  de  congestion.  TCP
              Vegas  est une modification cote emetteur de TCP qui anticipe la
              congestion en estimant la bande passante. TCP  Vegas  ajuste  la
              vitesse  d'emission  en  modifiant la fenetre de congestion. TCP
              Vegas devrait fournir moins de perte de paquets, mais n'est  pas
              aussi agressif que TCP Reno.

       tcp_westwood  (booleen ;  desactive  par  defaut ; Linux 2.4.26/2.6.3 a
       2.6.13)
              Active l'algorithme TCP Westwood+ de controle de congestion. TCP
              Westwood+  est  une  modification  cote  emetteur  de la pile de
              protocole TCP Reno qui optimise la performance  du  controle  de
              congestion TCP. Il est base sur une estimation de bande passante
              de bout en bout pour  fixer  la  fenetre  de  congestion  et  un
              redemarrage  lent  apres un episode de congestion. Grace a cette
              estimation, TCP Westwood+ fixe de facon adaptative une limite de
              demarrage  lent  et  une  fenetre  de congestion qui prennent en
              compte la bande passante utilisee au moment ou la congestion  se
              produit.  TCP Westwood+ augmente de facon significative l'equite
              par rapport a TCP Reno dans les reseaux filaires,  et  le  debit
              sur des liens sans fil.

       tcp_window_scaling (booleen ; active par defaut ; depuis Linux 2.2)
              Activer  le  dimensionnement de la fenetre TCP (RFC 1323). Cette
              fonctionnalite permet d'utiliser une grande  fenetre  (>  64 Ko)
              sur  une  connexion  TCP si le correspondant le prend en charge.
              Normalement, les 16 bits du champ de longueur  de  fenetre  dans
              l'en-tete  TCP  limitent  la  taille  a  64 Ko. Si on desire une
              fenetre plus grande, l'application peut augmenter la  taille  du
              tampon  de  la socket et activer l'option tcp_window_scaling. Si
              tcp_window_scaling   est   inhibee,   TCP   ne   negociera   pas
              l'utilisation   du   dimensionnement   des   fenetres   avec  le
              correspondant lors de l'initialisation de la connexion.

       tcp_wmem (depuis Linux 2.4)
              Il s'agit d'un vecteur de trois entiers :  [min,  defaut,  max].
              Ces  parametres  servent  a TCP pour reguler la taille du tampon
              d'emission. La taille est ajustee dynamiquement a partir  de  la
              valeur par defaut, dans l'intervalle de ces valeurs, en fonction
              de la memoire disponible.

              min       La taille minimale du tampon  d'emission  utilise  par
                        chaque  socket TCP. La valeur par defaut est la taille
                        des pages du systeeme (sous Linux 2.4, la  valeur  par
                        defaut est de 4 Ko). Cette valeur assure qu'en mode de
                        memoire chargee, les allocations en-dessous  de  cette
                        taille   reussiront.  Elle  n'est  pas  utilisee  pour
                        limiter la taille du tampon de reception, declaree  en
                        utilisant l'option SO_SNDBUF sur la socket.

              default   La  taille  par  defaut  du tampon d'emission pour une
                        socket TCP.  Cette  valeur  surcharge  la  taille  par
                        defaut           de           valeur           globale
                        /proc/sys/net/core/wmem_default definie pour tous  les
                        protocoles.  La  valeur  par  defaut est 16 Ko. Si une
                        taille plus grande  est  desiree,  il  faut  augmenter
                        cette  valeur (pour affecter toutes les sockets). Pour
                        utiliser      une      grande       fenetre       TCP,
                        /proc/sys/net/ipv4/tcp_window_scaling     doit    etre
                        positionne a une valeur non nulle (par defaut).

              max       max - la taille maximale du tampon d'emission  utilise
                        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 reception declaree avec
                        l'option SO_SNDBUF sur la socket. La valeur par defaut
                        est calculee avec la formule :

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

                        Sous Linux 2.4, la valeur par defaut est de 128 Ko  et
                        descendre  a  64 Ko  sur  les  systemes  avec  peu  de
                        memoire)

       tcp_workaround_signed_windows (booleen ; desactive par defaut ;  depuis
       Linux 2.6.26)
              S'il  est  active,  supposer  que  l'absence  de reception d'une
              option de dimensionnement de la fenetre signifie que la pile TCP
              distante  n'est  pas  correcte  et  traite  la fenetre comme une
              quantite signee. S'il est desactive, supposer que les piles  TCP
              distantes ne sont jamais disfonctionnelles meme si aucune option
              de dimensionnement de la fenetre n'est recue de leur part.

   Options de sockets
       Pour lire ou ecrire une option de  socket  TCP,  appeler  getsockopt(2)
       pour  la  lecture  ou  setsockopt(2)  pour  l'ecriture, avec l'argument
       niveau de socket valant IPPROTO_TCP. De plus, la plupart des options de
       socket  IPPROTO_IP  sont  valides  sur  les  sockets  TCP. Pour plus de
       details, voir ip(7).

       TCP_CORK (depuis Linux 2.2)
              Ne  pas  envoyer  de  trames  partielles.  Toutes   les   trames
              partielles  en  attente  sont  envoyees lorsque cette option est
              effacee a nouveau. Ceci permet de preparer  les  en-tetes  avant
              d'appeler   sendfile(2),   ou  pour  optimiser  le  debit.  Avec
              l'implementation   actuelle,   il   y   a    une    limite    de
              200 millisecondes  au  temps  pendant  lequel  des  donnees sont
              agregees avec  TCP_CORK.  Si  cette  limite  est  atteinte,  les
              donnees  mises en attente sont automatiquement transmises. Cette
              option  ne  peut  etre  combinee  avec  TCP_NODELAY  que  depuis
              Linux 2.5.71.  Cette  option  ne  doit pas etre utilisee dans du
              code concu pour etre portable.

       TCP_DEFER_ACCEPT (depuis Linux 2.4)
              Permettre a un processus en ecoute de n'etre reveille que si des
              donnees  arrivent  sur  la  socket. Prend une valeur entiere (en
              secondes), correspondant au nombre maximal de tentatives que TCP
              fera  pour  terminer la connexion. Cette option ne doit pas etre
              utilisee dans du code concu pour etre portable.

       TCP_INFO (depuis Linux 2.4)
              Fournit des informations sur la socket.  Le  noyau  renvoie  une
              structure   struct   tcp_info  comme  definie  dans  le  fichier
              /usr/include/linux/tcp.h. Cette option ne doit pas etre utilisee
              dans du code concu pour etre portable.

       TCP_KEEPCNT (depuis Linux 2.4)
              Le  nombre  maximal  de messages keepalive envoyes par TCP avant
              d'abandonner une  connexion.  Cette  option  ne  doit  pas  etre
              utilisee dans du code concu pour etre portable.

       TCP_KEEPIDLE (depuis Linux 2.4)
              La  duree (en secondes) d'inactivite sur une connexion avant que
              TCP commence a  envoyer  les  messages  keepalive,  si  l'option
              SO_KEEPALIVE  a  ete activee sur la socket. Cette option ne doit
              pas etre employee dans du code concu pour etre portable.

       TCP_KEEPINTVL (depuis Linux 2.4)
              Delai (en seconde) entre deux messages keepalive.  Cette  option
              ne doit pas etre utilisee dans du code concu pour etre portable.

       TCP_LINGER2 (depuis Linux 2.4)
              La  duree  des  sockets  orphelines dans l'etat FIN_WAIT2. Cette
              option peut servir a surcharger la valeur du  parametre  systeme
              du  fichier /proc/sys/net/ipv4/tcp_fin_timeout specialement pour
              la socket. A ne pas confondre avec l'option SO_LINGER du  niveau
              socket(7).  Cette  option ne doit pas etre utilisee dans du code
              concu pour etre portable.

       TCP_MAXSEG
              La taille maximale de segment pour les paquets TCP sortants.  Si
              cette  options  est  fixee  avant  d'etablir  la connexion, elle
              change egalement la valeur MSS  annoncee  a  l'autre  extremite,
              dans  le  paquet  initial.  Les  valeurs  superieures  au MTU de
              l'interface sont ignorees et n'ont pas d'effet. TCP imposera ses
              limites minimales et maximales plutot que les valeurs fournies.

       TCP_NODELAY
              Desactiver  l'algorithme  Nagle.  Ceci  signifie que les paquets
              seront envoyes des que possible, meme s'il n'y a que tres peu de
              donnees.  Sinon,  les donnees sont conservees jusqu'a ce qu'il y
              en ait un nombre suffisant, pour eviter d'envoyer  de  frequents
              petits  paquets,  au detriment du reseau. Cette option est moins
              prioritaire que TCP_CORK. Cependant, activer cette option  force
              un  vidage des donnees actuellement en attente, meme 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  envoyes immediatement
              plutot que retardes 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
              operations   ulterieures  du  protocole  TCP  feront  a  nouveau
              entrer/quitter le mode  quickack  en  fonction  des  traitements
              internes  du  protocole  et  de  facteurs  tels  que  les delais
              d'acquittements retardes, ou les  tranferts  de  donnees.  Cette
              option  ne  doit  pas etre utilisee dans du code concu pour etre
              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 depasser
              255. Cette option ne doit pas etre utilisee dans du  code  concu
              pour etre portable.

       TCP_WINDOW_CLAMP (depuis Linux 2.4)
              Limite  la  taille  de  la  fenetre.  Le noyau impose une taille
              minimale de SOCK_MIN_RCVBUF/2. Cette option  ne  doit  pas  etre
              employee dans du code concu pour etre portable.

   API des sockets
       TCP  fourni une prise en charge limitee des donnees hors-bande, sous la
       forme de donnees urgentes (un seul octet). Sous Linux cela signifie que
       si  l'autre  cote  envoie  de nouvelles donnees hors-bande, les donnees
       urgentes plus anciennes sont inserees comme des donnees  normales  dans
       le  flux  (meme  quand  SO_OOBINLINE n'est pas actif). Cela differe des
       piles basees sur BSD.

       Linux utilise par defaut une interpretation  compatible  BSD  du  champ
       Urgent-Pointer.  Ceci  viole  la  RFC 1122, mais est indispensable pour
       l'interoperabilite  avec  les  autres  piles.  On  peut   modifier   ce
       comportement avec /proc/sys/net/ipv4/tcp_stdurg.

       Il  est  possible  de  jeter  un  coup d'oeil aux donnees 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 parametre flags de recv(2) (et recvmsg(2)). Cet attribut a pour
       effet que les octets de donnees recus sont ignores, plutot que  fournit
       au  tampon  fournit  par  l'appelant.  Depuis  Linux 2.4.4,  MSG_PEEK a
       egalement un effet lorsqu'il est combine a MSG_OOB  pour  recevoir  les
       donnees hors-bande.

   Ioctls
       Les  ioctl(2)s  suivants  renvoient  des  informations  dans valeur. La
       syntaxe correcte est :

              int valeur;
              error = ioctl(tcp_socket, ioctl_type, &valeur);

       ioctl_type est l'une des valeurs suivantes :

       SIOCINQ
              Renvoie la quantite de donnees  non  lues  en  attente  dans  le
              tampon  de  reception.  La  socket  ne doit pas etre dans l'etat
              LISTEN, sinon l'erreur EINVAL est renvoyee. SIOCINQ  est  defini
              dans   <linux/sockios.h>.  Une  alternative  est  d'utiliser  le
              synonyme FIONREAD, defini dans <sys/ioctl.h>.

       SIOCATMARK
              Renvoie vrai (c'est-a-dire une valeur non nulle) si le  flux  de
              donnees entrantes est a la marque de donnees urgentes.

              Si  l'option  SO_OOBINLINE  est  activee,  et SIOCATMARK renvoie
              vrai, la prochaine lecture sur la socket  renverra  les  donnees
              urgentes.   Si  l'option  SO_OOBINLINE  n'est  pas  activee,  et
              SIOCATMARK renvoie vrai, la  prochaine  lecture  sur  la  socket
              renverra  les octets suivant les donnees urgentes (pour lire les
              donnees 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  donnees urgentes. Si une application est informee de
              la presence de donnees urgentes  avec  select(2)  (en  utilisant
              l'argument  exceptfds)  ou par la reception du signal SIGURG, il
              peut avancer jusqu'a la marque avec  une  boucle  qui  teste  de
              facon  repetee  SIOCATMARK  et  fait  une  lecture (demandant un
              nombre quelconque d'octets) tant que SIOCATMARK renvoie faux.

       SIOCOUTQ
              Renvoie la quantite de donnees non envoyees en attente  dans  le
              tampon  d'emission.  La  socket  ne  doit  pas  etre dans l'etat
              LISTEN, sinon l'erreur EINVAL est renvoyee. SIOCOUTQ est  defini
              dans   <linux/sockios.h>.  Une  alternative  est  d'utiliser  le
              synonyme TIOCOUTQ, defini dans <sys/ioctl.h>.

   Traitement des erreurs
       Quand une erreur reseau se produit, TCP tente de  renvoyer  le  paquet.
       S'il  ne  reussit  pas  apres  un certain temps, soit ETIMEDOUT soit la
       derniere erreur recue sur la connexion est renvoyee.

       Certaines applications demandent une notification d'erreur plus rapide.
       Ceci  peut  etre  valide  avec  l'option de socket IP_RECVERR de niveau
       IPPROTO_IP. Quand cette option est active, toutes les erreurs  arrivant
       sont  immediatement  passees  au  programme utilisateur. Employez cette
       option avec precaution, elle rend TCP moins tolerant aux  modifications
       de routage et autres conditions reseau normales.

ERREURS

       EAFNOTSUPPORT
              Le  type  d'adresse  de la socket passee dans sin_family n'etait
              pas AF_INET.

       EPIPE  L'autre extremite a ferme inopinement la socket, ou une  lecture
              est tentee sur une socket terminee.

       ETIMEDOUT
              L'autre  cote n'a pas acquitte les donnees retransmises apres un
              certain delai.

       Toutes les erreurs definies dans  ip(7)  ou  au  niveau  generique  des
       sockets peuvent aussi se produire avec TCP.

VERSIONS

       La  prise en charge de notification explicite de congestion, l'emission
       de  fichiers  sans  copie  avec  sendfile(2),  le  reordonnancement  et
       certaines extensions SACK (DSACK) ont ete 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 ete
       introduits dans Linux 2.3.

BOGUES

       Toutes les erreurs ne sont pas documentees.
       IPv6 n'est pas decrit.

VOIR AUSSI

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

       RFC 793 pour les specifications TCP.
       RFC 1122  pour  les  necessites  TCP et une description de l'algorithme
       Nagle.
       RFC 1323 pour les options d'horodatage et la fenetre TCP.
       RFC 1644 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 controle de congestion TCP.
       RFC 2018 et RFC 2883 pour SACK et ses extensions.

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.32 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain  Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).    Julien
       Cristau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.