File: tcp.7

package info (click to toggle)
manpages-es 1.24a-6
  • links: PTS
  • area: main
  • in suites: potato
  • size: 4,256 kB
  • ctags: 7
  • sloc: makefile: 66; sh: 62
file content (317 lines) | stat: -rw-r--r-- 11,229 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
.\" 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.7 1999/06/02 17:24:21 freitag Exp $
.\"
.\" Translated on Mon Jul 5 1999 by Juan Piernas <piernas@ditec.um.es>
.\"
.TH TCP  7 "25 abril 1999" "Pgina man de Linux" "Manual del Programador de Linux"
.SH NOMBRE
tcp \- Protocolo TCP.
.SH SINOPSIS
.B #include <sys/socket.h>
.br
.B #include <netinet/in.h>
.br
.B tcp_socket = socket(PF_INET, SOCK_STREAM, 0); 
.SH DESCRIPCIN
sta es una implementacin del protocolo TCP definido en RFC793, RFC1122 y
RFC2001 con las extensiones NewReno y SACK.  Proporciona una conexin
bidireccional, fiable y orientada a conexin entre dos conectores encima de
.BR ip (7).
TCP garantiza que los datos llegan en orden y retransmite los paquetes
perdidos. Genera y comprueba una suma de verificacin por paquete para
detectar errores de transmisin. TCP no conserva los lmites entre
registros.

Un conector TCP recin creado no tiene ni direccin remota ni local y no
est totalmente especificado. Para crear una conexin TCP de salida use
.BR connect (2)
para establecer una conexin con otro conector TCP. Para recibir nuevas
conexiones de entrada, primero enlace el conector a una direccin local y
puerto mediante
.BR bind (2)
y a continuacin llame a
.BR listen (2)
para colocar el conector en estado de escucha. Despus de esto, se puede
aceptar un nuevo conector para cada conexin de entrada usando
.BR accept (2).
Un conector sobre el que se han ejecutado con xito
.B accept
o 
.B connect
est totalmente especificado y puede transmitir datos. No se pueden
transmitir datos a travs de conectores en estado de escucha o no conectados
todava.

La versin 2.2 de Linux soporta las extensiones RFC1323 para TCP de alto
rendimiento. stas incluyen grandes ventanas TCP para soportar enlaces con
una alta latencia o gran ancho de banda.
Para usarlas, se deben incrementar los tamaos de los buffers de envo y
recepcin. Se pueden configurar globalmente con las sysctls
.B net.core.wmem_default
y
.BR net.core.rmem_default ,
o para cada conector individual mediante las opciones de conector
.B SO_SNDBUF 
y 
.BR SO_RCVBUF .
Los tamaos mximos de los buffers de los conectores estn limitados por las
sysctls globales
.B net.core.rmem_max
y
.BR net.core.wmem_max .
Vea
.BR socket (7)
para ms informacin.
.PP
TCP soporta datos urgentes. Los datos urgentes se usan para indicar al
receptor que algn mensaje importante es parte del flujo de datos y que debe
ser procesado tan pronto como sea posible.
Para enviar datos urgentes, especifique la opcin
.B MSG_OOB
en
.BR send (2).
Cuando se reciben datos urgentes, el ncleo enva una seal
.B SIGURG
al proceso lector o al proceso o grupo de procesos que han sido
configurados para el conector usando la ioctl
.B FIOCSPGRP
o 
.BR FIOCSETOWN .
Cuando la opcin de conector
.B SO_OOBINLINE
est activa, los datos urgentes se colocan en el flujo normal de datos (y se
pueden examinar mediante la ioctl
.BR SIOCATMARK ).
En otro caso, slo se pueden recibir cuando se ha configurado la opcin
.B MSG_OOB
en
.BR sendmsg (2). 
.SH FORMATO DE LAS DIRECCIONES
TCP est construido encima de IP (vea
.BR ip (7)).
Los formatos de direccin definidos por
.BR ip (7)
se aplican a TCP. TCP slo soporta comunicaciones punto a punto. La difusin
y el envo multidestino no estn soportados.
.SH SYSCTLS
Estas sysctls pueden ser accededida mediante los ficheros
.B /proc/sys/net/ipv4/* 
o con la interfaz
.BR sysctl (2).
Adems, las mayora de las sysctls de IP tambin se aplican a TCP. Vea
.BR ip (7). 
.TP
.B tcp_window_scaling
Habilita la adaptacin de ventanas TCP RFC1323.
.TP
.B tcp_sack
Habilita los reconocimientos selectivos TCP RFC2018.
.TP
.B tcp_timestamps
Habilita las marcas de tiempo TCP RFC1323.
.TP
.B tcp_fin_timeout
Cantidad de segundos a esperar un paquete FIN final antes de que el conector
sea cerrado a la fuerza. Esto es estrictamente una violacin de la
especificacin TCP pero necesario para evitar ataques de "denegacin de
servicio".
.TP
.B tcp_keepalive_probes
Nmero mximo de sondeos "sigue vivo" (keep-alive) de TCP
a enviar antes de darse por vencido.
Este tipo de sondeos slo se enva cuando la opcin de conector
.B SO_KEEPALIVE 
est activa.
.TP
.B tcp_keepalive_time
Cantida de segundos despus de que no se haya transmitido ningn dato antes
de que se enven sondeos "sigue vivo" a travs de una conexin. El valor por
defecto es de 10800 segundos (3 horas).
.TP
.B tcp_max_ka_probes
Cuntos sondeos "sigue vivo" se envan por cada periodo atrasado del
cronmetro. Para evitar rfagas, este valor no debera ser demasiado alto.
.TP
.B tcp_stdurg
Activa la interpretacin estricta del RFC793 para el campo "puntero urgente"
de TCP. Por defecto, se usa la interpretacin de "puntero urgente"
compatible con BSD, apuntando al primer byte despus de los datos urgentes.
La interpretacin RFC793 es hacerlo apuntar al ltimo byte de los datos
urgentes. Activar esta opcin puede conducir a problemas de
interoperatibidad.
.TP
.B tcp_syncookies
Habilita los "syncookies" de TCP. Se debe compilar el ncleo con
.BR CONFIG_SYN_COOKIES .
Los "syncookies" protegen a un conector de la sobrecarga cuando intentan
llegar demasiadas conexiones. Puede ser que las mquinas clientes ya no sean
capaces de detectar una mquina sobrecargada con un plazo de tiempo pequeo
cuando se activan los "syncookies".
.TP
.B tcp_max_syn_backlog
Longitud de la cola de acumulacin por conector. A partir de la versin 2.2
de Linux, la acumulacin especificada en
.BR listen (2)
slo indica la longitud de la cola de acumulacin de los conectores ya
establecidos. Esta sysctl establece la longitud mxima de la cola de
conectores todava no establecidos (en estado
.BR SYN_RECV )
para cada conector en escucha. Cuando llegan ms solicitudes de conexin, Linux
comienza a perder paquetes. Cuando se activan los "syncookies" todava se
responde a los paquetes y esta valor se ignora.
.TP
.B tcp_retries1
Define cuntas veces se retransmite una respuesta a una solicitud de
conexin TCP antes de darse por vencido.
.TP
.B tcp_retries2
Define cantas veces se retransmite un paquete TCP en el estado
"establecido" antes de dejarlo.
.TP
.B tcp_syn_retries
Define cuntas veces se intenta enviar un paquete SYN inicial a un anfitrin
remoto antes de abandonar y devolver un error. El valor debe estar por
debajo de 255. ste slo es el plazo de tiempo para las conexiones de
salida. Para las conexiones de entrada el nmero de retransmisiones se
define en
.BR tcp_retries1 .
.TP
.B tcp_retrans_collapse
Intentar enviar paquetes totalmente formados durante las retransmisiones.
Esto se usa para solucionar temporalmente los fallos TCP de algunas pilas
de protocolos.
.\" tcp_rfc1337 is not documented because it is too obscure and broken.
.SH OPCIONES DE LOS CONECTORES
Para establecer u obtener la opcin de un conector TCP, llame a
.BR getsockopt (2)
para leerla o a
.BR setsockopt (2)
para escribirla, asignando
.BR SOL_TCP .
al argumento de la familia del conector.
Adems, la mayora de las opciones de conector
.B SOL_IP 
son vlidas para conectores TCP. Para ms informacin vea
.BR ip (7).
.TP
.B TCP_NODELAY
Desactiva el algoritmo de Nagle. Esto significa que los paquetes se envan
siempre tan pronto como sea posible y no se introduce ningn retraso
innecesario, a costa de ms paquetes en la red. Expera una opcin booleana
entera.
.TP
.B TCP_MAXSEG
Establece o recibe el tamao mximo de segmento para los paquetes TCP de
salida. si se configura esta opcin antes del establecimiento de la
conexin, tambin cambia el valor MSS comunicado al otro extremo en el
paquete inicial. Los valores mayores que la MTU de la interfaz se ignoran y
no tienen ningn efecto.
.TP
.B TCP_CORK
No se envan tramas parciales cuando est activa. Todas las tramas parciales
encoladas se envan cuando esta opcin se desactiva de nuevo.
Esto es til para ir aadiendo cabeceras antes de llamar a
.BR sendfile (2)
o para optimizar el rendimiento. Esta opcin no se puede combinar con
.BR TCP_NODELAY .
.SH IOCTLS
Estas ioctls pueden ser accedidas usando
.BR ioctl (2).
La sintaxis correcta es:
.PP
.RS
.nf
.BI int " value";
.IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");"
.fi
.RE
.TP
.B FIONREAD
Devuelve la cantidad de datos encolados sin leer en el buffer de recepcin.
El argumento es un puntero a un entero.
.TP
.B SIOCATMARK
Devuelve cierto cuando el programa de usuario ya ha recibido todos los datos
urgentes. Esto se usa junto con
.BR SO_OOBINLINE .
El argumento es un puntero a un entero para el resultado de la comprobacin.
.TP
.B TIOCOUTQ
Devuelve la cantidad de datos sin enviar en la cola de envo del conector
en el puntero a un valor entero pasado.
.SH MANEJO DE ERRORES
Cuando se produce un error de red, TCP intenta reenviar el paquete. Si no
tiene xito despus de un cierto tiempo, informa o bien de un error
.B ETIMEDOUT
o bien del ltimo error recibido sobre esta conexin.
.PP
Algunas aplicaciones necesitan una notificacin ms rpida del error. Esto
se puede hacer con la opcin de conector
.B IP_RECVERR
del nivel
.BR SOL_IP .
Cuando se activa esta opcin, todos los errores de entrada son pasado
inmediatamente al programa de usuario. Use esta opcin con cuidado (hace que
TCP sea menos tolerante a cambios de enrutamiento y a otras condiciones de
red normales).
.SH NOTAS
Cuando se produce un error, al configurar una conexin, durante la escritura
en un conector, slo se produce una seal
.B SIGPIPE
cuando est activa la opcin de conector
.BR SO_KEEPOPEN .
.PP
TCP no posee verdaderos datos fuera de orden, posee datos urgentes. En Linux
esto significa que si el otro extremo enva datos fuera de orden recientes,
los anteriores datos urgentes se insertarn como datos normales en el flujo
(incluso cuando
.B SO_OOBINLINE
no est activa). Esto difiere de las pilas de protocolo basadas en BSD.
.PP
Linux usa por defecto una interpretacin del campo puntero urgente
compatible con BSD. Esto viola el RFC1122 pero se necesita por
interoperatividad con otras pilas. Se puede cambiar con la sysctl
.BR tcp_stdurg .

.SH ERRORES
.TP 0.8i
.B EPIPE
El otro extremo ha cerrado el conector inesperadamente.
.TP
.B ETIMEDOUT
El otro extremo no ha reconocido los datos retransmitidos despus de cierto
tiempo.
.TP
.B EAFNOTSUPPORT
El tipo de direccin de conector pasado en
.I sin_family 
no es 
.BR AF_INET .
.PP
TCP tambin puede devolver cualquier error definido por
.BR ip (7)
o la capa de conectores genricos.
.PP

.SH FALLOS
No se han documentado todos los errores.
.PP
No se ha descrito IPv6.
.PP
No se han descrito las opciones de proxy transparente.
.SH VERSIONES
Las sysctls son nuevas en la versin 2.2 de Linux.
.B IP_RECVERR
es una caracterstica nueva de la versin 2.2 de Linux.
.B TCP_CORK
es nueva en la versin 2.2.
.SH VASE TAMBIN
.BR socket "(7), " socket "(2), " ip "(7), " sendmsg "(2), " recvmsg (2)
.br
RFC793 para la especificacin de TCP
.br
RFC2001 para algunos algoritmos de TCP