1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328
|
.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
.\" Permission is granted to distribute possibly modified copies
.\" of this page provided the header is included verbatim,
.\" and in case of nontrivial modification author and date
.\" of the modification is added to the header.
.\" $Id: tcp.7,v 1.10 2000/01/22 01:55:04 freitag Exp $
.\" Traduction Christophe Blaess <ccb@club-internet.fr>
.\" 11/06/2001 - LDP-man-pages-1.37
.TH TCP 7 "11 juin 2001" Linux "Manuel de l'administrateur Linux"
.SH NOM
tcp \- Protocole TCP.
.SH SYNOPSIS
.B #include <sys/socket.h>
.br
.B #include <netinet/in.h>
.br
.B tcp_socket = socket(PF_INET, SOCK_STREAM, 0);
.SH 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 un connexion full-duplex fiable orient�e flux entre
deux sockets au-dessus de
.BR ip (7).
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
.BR connect (2)
pour �tablir la connexion sur une autre socket TCP.
Pour recevoir les connexions entrantes, attachez d'abord la socket avec
.BR bind (2)
� une adresse locale et un port, puis appelez
.BR 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
.BR accept (2).
Une socket sur laquelle on a appel�
.B accept
ou
.B connect
avec succ�s 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 2.2 supporte les extensions TCP � hautes performances RFC 1323. Cela inclue
les fen�tres TCP larges pour supporter les liaisons avec une latence ou une
bande passante �lev�es.
Pour les utiliser, les tailles des buffers d'�mission et de r�ception doivent �tre augment�es.
On peut les fixer globalement avec les sysctls
.B net.core.wmem_default
et
.B net.core.rmem_default
ou individuellement sur les sockets avec les options
.B SO_SNDBUF
et
.BR SO_RCVBUF .
Les tailles maximales pour les buffers sont limit�es par les sysctls
.B net.core.rmem_max
et
.B net.core.wmem_max
Voir
.BR socket (7)
pour plus d'informations.
.PP
TCP supporte les donn�es urgentes. Elles signalent au r�cepteur qu'un message
important est dans le flux de donn�es et qu'il doit �tre trait�
le plus t�t possible.
Pour envoyer des donn�es urgentes, indiquez l'option
.B MSG_OOB
de
.BR send (2).
Quand des donn�es urgentes sont re�ues, le noyau envoie un signal
.B SIGURG
au processus lecture ou au groupe de processus qui a �t� indiqu�
pour la socket avec les ioctls
.B FIOCSPGRP
ou
.BR FIOCSETOWN .
Quand l'option de socket
.B SO_OOBINLINE
est valid�e, les donn�es urgentes sont mises dans le flux de donn�es normal
(et peuvent �tre d�tect�es avec l'ioctl
.BR SIOCATMARK ),
sinon, on ne peut
les recevoir que lorsque l'attribut
.B MSG_OOB
et positionn� pour
.BR sendmsg (2).
.SH "FORMATS D'ADRESSE"
TCP est construit au-dessus de IP (voir
.BR ip (7)).
Les formats d'adresse d�finis pour
.BR ip (7)
s'appliquent pour TCP. TCP ne supporte que les communications point-�-point.
Le broadcast et le multicast ne sont pas support�s.
.SH SYSCTLS
Ces sysctls sont accessibles avec les fichiers
.B /proc/sys/net/ipv4/*
ou avec l'interface
.BR sysctl (2).
De plus, la plupart des sysctls d'IP s'appliquent � TCP. Voir
.BR ip (7).
.TP
.B tcp_window_scaling
Activer le dimensionnement de la fen�tre TCP (RFC 1323).
.TP
.B tcp_sack
Activer l'acquiescement TCP s�lectif (RFC 2018).
.TP
.B tcp_timestamps
Activer les horodatages TCP (RFC 1323).
.TP
.B tcp_fin_timeout
Nombre de secondes � attendre un paquet final FIN avant que la socket soit
ferm�e de force. Strictement parlant, ceci est une violation des sp�cifications TCP,
mais est n�cessaire pour emp�cher les attaques par d�ni de service.
.TP
.B tcp_keepalive_probes
Nombre maximal de tentatives TCP keep-alive � envoyer avant d'abandonner. Les messages
keep-alive ne sont envoy�s que si l'option
.B SO_KEEPALIVE
de la socket est valid�e.
.TP
.B tcp_keepalive_time
Nombre de secondes durant lesquelles aucune donn�e n'est transmise sur la connexion avant
d'envoyer un message keep-alive. La valeur par d�faut est 10800 secondes (3 heures).
.TP
.B tcp_max_ka_probes
Nombre de messages keep-alive envoy�s par "slow timer run" [NDT: ?] Pour �viter les
congestions du r�seau, cette valeur ne doit pas �tre trop haute.
.TP
.B tcp_stdurg
Activation de l'interpr�tation RFC 793 stricte du champ TCP Urgent-Pointer.
Par d�faut on utilise une interpr�tation compatible BSD de ce champ, qui
pointe vers le premier octet des donn�es urgentes. L'interpr�tation RFC 793
le fait pointer vers le dernier octet des donn�es urgentes. Valider cette option
peut poser des probl�mes d'interactions entre syst�mes.
.TP
.B tcp_syncookies
Valider les syncookies TCP. Le noyau doit �tre compil� avec l'option
.BR CONFIG_SYN_COOKIES .
Les syncookies prot�gent la socket des surcharges lorsque trop de tentatives de
connexions arrivent. Les machines clientes peuvent ne plus �tre capables de d�tecter une
machine surcharg�e avec un faible d�lai lorsque les syncookies sont activ�s.
.TP
.B tcp_max_syn_backlog
Longueur de la file d'attente par socket des connexions. Dans Linux 2.2, la
valeur indiqu�e dans
.BR listen (2)
ne correspond qu'� la longueur de la file des sockets d�j� �tablies.
La file maximale des sockets pas encore �tablies (dans l'�tat
.BR SYN_RECV )
par socket en attente
est fix�e par ce syctl. Lorsque des demandes de connexion suppl�mentaires arrivent,
Linux commence � rejeter les paquets. Lorsque les syncookies sont activ�s, il r�pond quand m�me
aux paquets, et cette valeur est de fait ignor�e.
.TP
.B tcp_retries1
D�finit combien de fois une r�ponse � une requ�te TCP est retransmise
avant d'abandonner.
.TP
.B tcp_retries2
D�finit combien de fois un paquet TCP est retransmis dans l'�tat �tbli
avant d'abandonner.
.TP
.B tcp_syn_retries
D�finit combien de fois un paquet SYN initial est envoy� � un h�te distant
avant d'abandonner et de renvoyer une erreur. Doit �tre inf�rieur � 255.
Il ne s'agit que d'un maximum pour les connexions sortantes. Pour les connexions
entrantes, le nombre de retransmission est d�fini par
.BR tcp_retries1 .
.TP
.B tcp_retrans_collapse
Essayer d'envoyer des paquets de taille compl�te durant les retransmissions. Ceci permettait
de contourner des bogues dans certaines piles TCP.
.\" tcp_rfc1337 is not documented because it is too obscure and broken.
.SH "OPTIONS DES SOCKETS"
Pour lire ou �crire une option de socket TCP, appeler
.BR getsockopt (2)
pour la lecture ou
.BR setsockopt (2)
pour l'�criture, avec l'argument famille de socket valant
.BR SOL_TCP .
De plus, la plupart des
options de socket
.B SOL_IP
sont valides sur les sockets TCP. Pour plus de d�tails, voir
.BR ip (7).
.TP
.B TCP_NODELAY
D�sactiver l'algorithme Nagle. Cela signifie que les paquets sont toujours envoy�s d�s que
possible et aucun d�lai suppl�mentaire n'est introduit, au prix d'un nombre plus important
de paquets sur le r�seau. Il s'agit d'un attribut entier bool�en.
.TP
.B TCP_MAXSEG
Lit ou �crit la taille maxiamel de segement pour les paquets TCP sortants. Si cette options
est fix�e avant d'�tablir la connexion, elle change �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.
.TP
.B TCP_CORK
Ne pas envoyer de trames partielles.
Toutes les trames partielles en attente sont envoy�es lorsque cette option est effac�e � nouveau.
Ceci permet de pr�parer les ent�te avant
d'appeler
.BR sendfile (2),
ou pour optimiser le d�bit. Cette option ne peut pas �tre combin�e avec
.BR TCP_NODELAY .
.SH IOCTLS
Ces ioctls sont accessibles � travers l'appel-syst�me
.BR ioctl (2).
La syntaxe correcte est :
.PP
.RS
.nf
.BI int " value";
.IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");"
.fi
.RE
.TP
.BR FIONREAD " ou " TIOCINQ
Renvoie la quantit� de donn�es non lues en attente dans le buffer de r�ception.
L'argument est un pointeur sur un entier.
.TP
.B SIOCATMARK
Renvoie vrai si toutes les donn�es urgentes ont d�j� �t� re�ues par
le programme utilisateur.
On l'utilise conjointement �
.BR SO_OOBINLINE .
L'argument est un pointeur sur un entier contenant le r�sultat.
.TP
.B TIOCOUTQ
Renvoie la quantit� de donn�es non lues en attente dans le buffer d'�mission.
La valeur est �crite dans l'entier sur lequel on passe un pointeur. Malheureusement,
l'impl�mentation de cet ioctl est bogu� dans toutes les versions connues de Linux et renvoie � la place
l'espace libre (taille du buffer moins les octets utilis�s y compris les donn�es de contr�le) dans
la file d'�mission. Ceci sera corrig� dans les versions de Linux � venir.
Si vous utilisez
.BR TIOCOUTQ ,
incluez un test � l'ex�cution pour d�terminer quel est le comportement de cet ioctl,
et assurer un fonctionnement correct dans le futur et sur d'autres Unix.
.SH "GESTION D'ERREUR"
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
.B ETIMEDOUT
soit la derni�re erreur re�ue sur la connexion
est renvoy�e.
.PP
Certaines application demande une notification d'erreur plus rapide.
Ceci peut �tre valid� avec l'option de socket
.B IP_RECVERR
de niveau
.BR SOL_IP .
Quand cette option est active, toutes les erreurs arrivant sont imm�diatement pass�es au programme utilisateur.
Employez cette option avec soin, elle rend TCP moins tol�rant envers les modifications de routage
et autres conditions r�seau normales.
.SH NOTES
Lorsqu'une erreur se produit due � une �criture durant l'�tablissement de la connexion, le signal
.B SIGPIPE
n'est envoy� que lorsque l'option
.B SO_KEEPALIVE
de la socket est active.
.PP
TCP n'a pas de v�ritables donn�es hors-bande ; il a des donn�es urgentes. 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
.B SO_OOBINLINE
n'est pas actif). Cela diff�re des piles bas�es sur BSD.
.PP
Linux utilise par d�faut une interpr�tation compatible BSD du champ
Urgent-Pointer. Ceci viole la RFC 1122, mais est indispensable pour
l'interrop�rabilit� avec les autres piles. On peut modifier ce comportement
avec le
sysctl
.BR tcp_stdurg .
.SH "ERREURS"
.TP
.B EPIPE
L'autre extr�mit� a ferm� inopin�ment la socket, ou une lecture est tent�
sur une socket termin�e.
.TP
.B ETIMEDOUT
L'autre c�te n'a pas acquitt� les donn�es retransmises apr�s un certain d�lai.
.TP
.B EAFNOTSUPPORT
Le type d'adresse de la socket pass�e dans
.I sin_family
n'�tait pas
.BR AF_INET .
.PP
Toutes les erreurs d�finies dans
.BR ip (7)
ou au niveau g�n�rique des sockets peuvent aussi se produire avec TCP.
.PP
.SH BOGUES
Toutes les erreurs ne sont pas document�es.
.PP
IPv6 n'est pas d�crit.
.PP
Les options des proxy transparents ne sont pas d�crites.
.SH VERSIONS
Les sysctls sont nouveaux dans Linux 2.2.
.B IP_RECVERR
est une nouvelle
fonctionnalit� dans Linux 2.2.
.B TCP_CORK
est nouveau dans Linux 2.2.
.SH "VOIR AUSSI"
.BR socket (7),
.BR socket (2),
.BR ip (7),
.BR sendmsg (2),
.BR recvmsg (2)
.br
RFC 793 pour les sp�cifications TCP.
.br
RFC 1122 pour les n�c�ssit�s TCP et une description de l'algorithme Nagle.
.br
RFC 2581 pour quelques algorithmes TCP.
.SH TRADUCTION
Christophe Blaess, 2001.
|