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
|