File: tcp.7

package info (click to toggle)
manpages-fr 0.9.3-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 7,052 kB
  • ctags: 4
  • sloc: makefile: 58; sh: 8
file content (328 lines) | stat: -rw-r--r-- 11,725 bytes parent folder | download
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.