Provided by:
manpages-es_1.55-10_all 
NOMBRE
tcp - Protocolo TCP.
SINOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
tcp_socket = socket(PF_INET, SOCK_STREAM, 0);
DESCRIPCI'ON
Esta es una implementacion del protocolo TCP definido en RFC793,
RFC1122 y RFC2001 con las extensiones NewReno y SACK. Proporciona una
conexion bidireccional, fiable y orientada a conexion entre dos
conectores (``sockets'') encima de ip(7), tanto para la version 4 como
para la version 6. TCP garantiza que los datos llegan en orden y
retransmite los paquetes perdidos. Genera y comprueba una suma de
verificacion por paquete para detectar errores de transmision. TCP no
conserva los limites entre registros.
Un conector TCP recien creado no tiene ni direccion remota ni local y
no esta totalmente especificado. Para crear una conexion TCP de salida
use connect(2) para establecer una conexion con otro conector TCP. Para
recibir nuevas conexiones de entrada, primero enlace el conector a una
direccion local y puerto mediante bind(2) y a continuacion llame a
listen(2) para colocar el conector en estado de escucha. Despues de
esto, se puede aceptar un nuevo conector para cada conexion de entrada
usando accept(2). Un conector sobre el que se han ejecutado con exito
accept o connect esta totalmente especificado y puede transmitir datos.
No se pueden transmitir datos a traves de conectores en estado de
escucha o no conectados todavia.
La version 2.2 de Linux soporta las extensiones RFC1323 para TCP de
alto rendimiento. Estas incluyen proteccion contra la repeticion de
numeros de secuencia (PAWS, ``Protection Against Wrapped Sequence
Numbers''), ampliacion de ventana (``Window Scaling'') y fechados
(``Timestamps''). La ampliacion de ventana permite el uso de grandes
ventanas TCP (> 64K) para dar soporte a enlaces con una alta latencia o
un gran ancho de banda. Para usarlas, se deben incrementar los tamanos
de los buffers de envio y recepcion. Se pueden configurar globalmente
con las variables sysctls net.ipv4.tcp_wmem y net.ipv4.tcp_rmem, o para
cada conector individual mediante las opciones de conector SO_SNDBUF y
SO_RCVBUF con la llamada setsockopt(2).
Los tamanos maximos de los buffers de los conectores declarados a
traves de SO_SNDBUF y SO_RCVBUF estan limitados por las sysctls
globales net.core.rmem_max y net.core.wmem_max. Dese cuenta que TCP
realmente asigna dos veces el tamano del buffer solicitado en la
llamada setsockopt(2), por lo que una llamada con exito a getsockopt(2)
no devolvera el mismo tamano de buffer que el solicitado en la llamada
setsockopt(2). TCP usa esto para propositos administrativos y
estructuras internas del nucleo, y las variables sysctl reflejan los
tamanos mayores comparados con las ventanas TCP actuales. Para las
conexiones individuales, el tamano del buffer del conector se debe
establecer antes de las llamadas listen() o connect() para que tenga
efecto. Vea socket(7) para mas informacion.
TCP soporta datos urgentes. Los datos urgentes se usan para indicar al
receptor que algun mensaje importante es parte del flujo de datos y que
debe ser procesado tan pronto como sea posible. Para enviar datos
urgentes, especifique la opcion MSG_OOB en send(2). Cuando se reciben
datos urgentes, el nucleo envia una senal SIGURG al proceso lector o al
proceso o grupo de procesos que han sido configurados para el conector
usando la ioctl SIOCSPGRP o FIOSETOWN. Cuando la opcion de conector
SO_OOBINLINE esta activa, los datos urgentes se colocan en el flujo
normal de datos (y se pueden examinar mediante la ioctl SIOCATMARK).
En otro caso, solo se pueden recibir cuando se ha configurado la opcion
MSG_OOB en sendmsg(2).
La version 2.4 de Linux introdujo varios cambios para mejorar el
rendimiento y la escalabilidad, ademas de una funcionalidad mejorada.
Algunas de estas caracteristicas incluyen soporte para llamadas
sendfile(2) sin copias internas de datos, Notificacion Explicita de
Congestion, nueva gestion de conectores TIME_WAIT, opciones ``keep-
alive'' y soporte para extensiones de SACK Duplicados.
FORMATO DE LAS DIRECCIONES
TCP esta construido encima de IP (vea ip(7)). Los formatos de
direccion definidos por ip(7) se aplican a TCP. TCP solo soporta
comunicaciones punto a punto. La difusion y el envio multidestino no
estan soportados.
SYSCTLS
Estas variables pueden ser accedidas mediante los ficheros
/proc/sys/net/ipv4/* o con la interfaz sysctl(2). Ademas, las mayoria
de las sysctls de IP tambien se aplican a TCP. Vea ip(7).
tcp_abort_on_overflow
Activa el reinicio de conexiones si el servicio que escucha es
demasiado lento y es incapaz de continuar y aceptarlas. No esta
activo por omision. Significa que si se produjera un
desbordamiento debido a una rafaga de datos, la conexion se
recuperara. Active esta opcion <<solo>> si verdaderamente esta
seguro de que el demonio que escucha no puede ser ajustado para
aceptar conexiones mas rapidamente. Activar esta opcion puede
perjudicar a los clientes de su servidor.
tcp_adv_win_scale
Considera que el gasto del almacenamiento temporal es
bytes/2^tcp_adv_win_scale (si tcp_adv_win_scale > 0) o bytes-
bytes/2^(-tcp_adv_win_scale) si el valor es <= 0. El valor por
omision es 2.
El espacio del buffer de recepcion del conector se comparte
entre la aplicacion y el nucleo. TCP mantiene parte del buffer
como ventana TCP; este es el tamano de la ventana de recepcion
que se comunica al otro extremo. El resto del espacio se usa
como ``buffer de aplicacion'', usado para aislar a la red de
latencias de planificacion y de la aplicacion. El valor 2 por
omision de tcp_adv_win_scale implica que el espacio usado para
el buffer de aplicacion es un cuarto del total.
tcp_app_win
Esta variable define cuantos bytes de la ventana TCP se reservan
para el gasto del almacenamiento temporal.
La cantidad de bytes de la ventana que se reservan para el
buffer de la aplicacion es el maximo de (window/2^tcp_app_win,
mss). 0 significa que no se reserva ninguna cantidad. El valor
por omision es 31.
tcp_dsack
Activa el soporte para SACK Duplicados TCP segun se describen en
RFC2883. Esta activo por omision.
tcp_ecn
Activa la Notificacion Explicita de Congestion (ECN, Explicit
Congestion Notification), descrita en el RFC2884. No esta
activa por omision. Cuando esta activa, se podria ver afectada
la conectividad a algunos destinos debido a la existencia a lo
largo de la ruta de enrutadores antiguos con un comportamiento
defectuoso, los cuales provocarian la perdida de conexiones.
tcp_fack
Activa el soporte para el Reconocimiento Adelantado (``Forward
Acknowledgement'') TCP. Por omision, esta activo.
tcp_fin_timeout
Cantidad de segundos a esperar un paquete FIN final antes de que
el conector se cierre por la fuerza. Estas es estrictamente una
violacion de la especificacion TCP, pero se necesita para evitar
ataques de denegacion de servicio (DoS). El valor por omision en
los nucleos 2.4 es 60, por debajo de los 180 segundos de la
version 2.2.
tcp_keepalive_intvl
Numero de segundos entre dos sondas ``keep-alive'' TCP. El valor
por omision es 75 segundos.
tcp_keepalive_probes
Numero maximo de sondas ``keep-alive'' TCP a enviar antes de
abandonar y acabar con la conexion si no se obtiene respuesta
desde el otro extremo. El valor por omision es 9.
tcp_keepalive_time
Numero de segundos que una conexion necesita estar inactiva
antes de que TCP comience a enviar sondas ``keep-alive''. Estas
sondas solo se envian cuando la opcion de conector SO_KEEPALIVE
esta activa. El valor por omision es 7200 segundos (2 horas).
Una conexion inactiva se termina despues de aproximadamente
otros 11 minutos (9 sondas a intervalos de 75 segundos) cuando
esta activo el envio de sondas ``keep-alive''.
Dese cuenta que los mecanismos subyacentes de seguimiento de
conexiones y los plazos de tiempo de las aplicaciones pueden ser
mucho mas pequenos.
tcp_max_orphans
Numero maximo de conectores TCP huerfanos (no conectados a
ningun manejador de fichero de usuario) que se permiten en el
sistema. Cuando se sobrepasa este numero, la conexion huerfana
se reinicia y se muestra un aviso. Este limite existe solo para
evitar ataques DoS sencillos. No se recomienda reducir este
limite. Las condiciones de la red podria hacer necesario que
incremente el numero de huerfanos permitidos, pero dese cuenta
que cada huerfano puede gasta hasta ~64K de memoria no
intercambiable. El valor por omision inicial es igual al
parametro del nucleo NR_FILE. Este valor se ajusta dependiendo
de la memoria del sistema.
tcp_max_syn_backlog
Numero maximo de peticiones de conexion encoladas que todavia no
han recibido un reconocimiento desde el cliente que se esta
conectando. Si este numero se supera, el nucleo comenzara a
eliminar peticiones. El valor por omision de 256 se incrementa a
1024 cuando la memoria que hay en el sistema es adecuada o
grande (>= 128Mb) y se reduce a 128 en aquellos sistemas con muy
poca memoria (<= 32Mb). Si se necesita incrementar este valor
por encima de 1024, se recomienda que se modifique
TCP_SYNQ_HSIZE para mantener
TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog y que se recompile el
nucleo.
tcp_max_tw_buckets
Numero maximo de conectores en el estado TIME_WAIT admitidos por
el sistema. Este limite existe solo para evitar ataques DoS
sencillos. El valor por omision de NR_FILE*2 se ajusta
dependiendo de la memoria que haya en el sistema. Si este numero
se supera, se cierra el conector y se muestra una aviso.
tcp_mem
Este es un vector de 3 enteros: [low, pressure, high]. Estos
limites los usa TCP para hacer un seguimiento de su uso de
memoria. Los valores por omision se calculan durante el arranque
a partir de la cantidad de memoria disponible.
low - TCP no regula su asignacion de memoria cuando el numero de
paginas que ha asignado globalmente esta por debajo de este
numero.
pressure - cuando la cantidad de memoria asignada por TCP supera
este numero de paginas, TCP modera su consumo de memoria. Este
estado de presion de memoria se termina una vez que el numero de
paginas asignadas cae por debajo de la marca low.
high - numero maximo de paginas que TCP asignara de forma
global. Este valor invalida cualquier otro limite impuesto por
el nucleo.
tcp_orphan_retries
Numero maximo de intentos realizados para sondear el otro
extremo de una conexion que ha sido cerrada por nuestro extremo.
El valor por omision es 8.
tcp_reordering
El maximo que un paquete puede ser reorganizado en un flujo de
paquetes TCP sin que TCP asuma perdida de paquetes y sin que se
ponga a hacer un lento inicio. El valor por omision es 3. No es
aconsejable cambiar este numero. Esta es una metrica de
deteccion de reorganizacion de paquetes disenada para minimizar
retrocesos y retransmisiones innecesarios provocados por la
reorganizacion de paquetes en una conexion.
tcp_retrans_collapse
Intentar enviar paquetes de tamano maximo durante las
retransmisiones. Esto esta activo por defecto.
tcp_retries1
Numero de veces que TCP intentara retransmitir un paquete en una
conexion establecida normalmente, sin el esfuerzo extra de que
se involucren las capas de red. Una vez se supera este numero de
retransmisiones, primero hacemos que la capa de red actualice la
ruta si es posible antes de cada nueva retransmision. El valor
por omision es 3, el minimo especificado en el RFC.
tcp_retries2
Numero maximo de veces que un paquete TCP se retransmite con
estado ``establecido'' antes de abandonarlo. El valor por
omision es 15, que corresponde a una duraccion de,
aproximadamente, entre 13 y 30 minutos, dependiendo del plazo de
retransmision. El limite minimo de 100 segundos especificado por
RFC1122 normalmente se considera demasiado pequeno.
tcp_rfc1337
Activa el comportamiento TCP que se ajusta al RFC 1337. Esto no
esta activo por omision. Cuando no esta activo, si se recibe un
RST en un estado TIME_WAIT, cerramos el conector inmediatamente
sin esperar el fin del periodo TIME_WAIT.
tcp_rmem
Este es un vector de 3 enteros: [min, default, max]. Estos
parametros los usa TCP para regular los tamanos de los buffers
de recepcion. TCP ajusta dinamicamente el tamano del buffer de
recepcion a partir de los valores por omision listados mas
abajo, en el rango de estas variables sysctl, dependiendo de la
memoria disponible en el sistema.
min - tamano minimo del buffer de recepcion usado por cada
conector TCP. El valor por omision es 4K y se reduce a
PAGE_SIZE bytes en sistemas con poca memoria. Este valor se usa
para asegurar que, en el modo de presion de memoria, las
asignaciones de memoria por debajo de este tamano todavia
tendran exito. Esto no se usa para limitar el tamano del buffer
de recepcion declarado usando SO_RCVBUF en un conector.
default - el tamano por omision del buffer de recepcion de un
conector TCP. Este valor sobrescribe el tamano por omision
inicial del buffer que viene dado por el valor generico global
net.core.rmem_default, definido para todos los protocolos. El
valor por omision es de 87380 bytes y se reduce a 43689 en
sistemas con poca memoria. Si se desean tamanos de buffers de
recepcion mayores, se deberia incrementar este valor (para que
afecte a todos los conectores). Para que se empleen ventanas TCP
grandes, se debe activar (valor por omision)
net.ipv4.tcp_window_scaling.
max - tamano maximo del buffer de recepcion usado por cada
conector TCP. Este valor no invalida el valor global
net.core.rmem_max. Esto no se usa para limitar el tamano del
buffer de recepcion declarado usando SO_RCVBUF sobre un
conector. El valor por omision de 87380*2 bytes se reduce a
87380 en sistemas con poca memoria.
tcp_sack
Activa los Reconocimientos Selectivos TCP descritos por el
RFC2018. Esto esta activo por omision.
tcp_stdurg
Activa la interpretacion estricta RFC793 del campo puntero-
urgente de TCP. El valor por omision es usar la interpretacion
compatible con BSD del puntero urgente, que apunta al primer
byte tras los datos urgentes. La interpretacion RFC793 es hacer
que apunte al ultimo byte de los datos urgentes. Activar esta
opcion puede conducir a problemas de interoperatividad.
tcp_synack_retries
Numero maximo de veces que se retransmitira un segmento SYN/ACK
para una conexion TCP pasiva. Este numero no deberia ser mayor
que 255. El valor por omision es 5.
tcp_syncookies
Activa los ``syncookies'' TCP. Se debe compilar el nucleo con
CONFIG_SYN_COOKIES. Envia ``syncookies'' cuando la cola de
paquetes syn pendientes de un conector se desborda. Los
``syncookies'' intentan proteger a un conector de un ataque por
la llegada en avalancha de paquetes SYN. Esto se deberia usar
como ultimo recurso o nunca. Esto es una violacion del protocolo
TCP y entra en conflicto con otras areas de TCP como las
extensiones TCP. Puede producir problemas para clientes y nodos
repetidores. No se recomienda como mecanismo de ajuste para
ayudar a servidores muy cargados en condiciones de sobrecarga o
de mala configuracion. Para alternativas recomendadas, vea
tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.
tcp_syn_retries
Numero maximo de veces que se retransmitiran SYNs iniciales para
un intento activo de conexion TCP. Este valor no deberia ser
mayor que 255. El valor por omision es 5, que se corresponde a,
aproximadamente, 180 segundos.
tcp_timestamps
Activa fechados TCP segun el RFC1323. Esto esta activo por
omision.
tcp_tw_recycle
Activa el reciclado rapido de conectores TIME-WAIT. No esta
activo por omision. No se recomienda activar esta opcion ya que
produce problemas cuando se trabaja con NAT (Network Address
Translation).
tcp_window_scaling
Activa la ampliacion de ventanas TCP segun el RFC1323. Esto esta
activo por omision. Esta caracteristica permite el uso de una
ventana grande (> 64K) en conexiones TCP, aunque el otro extremo
deberia soportarla. Normalmente, el campo de 16 bit de longitud
de ventana en la cabecera TCP limita el tamano de ventana a
menos de 64K bytes. Si se desean ventanas mayores, las
aplicaciones pueden incrementar el tamano de sus buffers de
conectores y se empleara la opcion de ampliacion de ventanas. Si
tcp_window_scaling se desactiva, TCP no negociara el uso de la
ampliacion de ventanas con el otro extremo durante el
establecimiento de la conexion.
tcp_wmem
Este es un vector de 3 enteros: [min, default, max]. Estos
parametros los usa TCP para regular los tamanos de los buffers
de envio. TCP ajusta dinamicamente el tamano del buffer de envio
a partir de los valores por omision listados mas abajo, en el
rango de estas variables sysctl, dependiendo de la memoria
disponible en el sistema.
min - tamano minimo del buffer de envio usado por cada conector
TCP. El valor por omision es de 4K bytes. Este valor se usa para
asegurar que, en el modo de presion de memoria, las asignaciones
de memoria por debajo de este tamano todavia tendran exito. Esto
no se usa para limitar el tamano del buffer de envio declarado
usando SO_SNDBUF en un conector.
default - el tamano por omision del buffer de envio un conector
TCP. Este valor sobrescribe el tamano por omision inicial del
buffer que viene dado por el valor generico global
net.core.wmem_default, definido para todos los protocolos. El
valor por omision es de 16K. Si se desean tamanos de buffers de
envio mayores, se deberia incrementar este valor (para que
afecte a todos los conectores). Para que se empleen ventanas TCP
grandes, se debe activar (valor por omision) la variable sysctl.
net.ipv4.tcp_window_scaling.
max - tamano maximo del buffer de envio usado por cada conector
TCP. Este valor no invalida el valor global net.core.wmem_max.
Esto no se usa para limitar el tamano del buffer de envio
declarado usando SO_SNDBUF sobre un conector. El valor por
omision de 128K bytes. Se reduce a 64K dependiendo de la memoria
disponible en el sistema.
OPCIONES DE LOS CONECTORES
Para establecer u obtener la opcion de un conector TCP, llame a
getsockopt(2) para leerla o a setsockopt(2) para escribirla, asignando
SOL_TCP. al argumento del nivel de opcion. Ademas, la mayoria de las
opciones de conector SOL_IP son validas para conectores TCP. Para mas
informacion vea ip(7).
TCP_CORK
Si se activa, no se envian tramas parciales. Todas las tramas
parciales encoladas se envian cuando esta opcion se desactiva de
nuevo. Es util para anadir cabeceras antes de llamar a
sendfile(2) o para optmizar el rendimiento. Esta opcion no se
puede combinar con TCP_NODELAY. No deberia usar esta opcion si
desea que su codigo sea transportable.
TCP_DEFER_ACCEPT
Permite despertar a un proceso oyente solo cuando lleguen datos
al conector. Toma un valor entero (segundos). Puede limitar el
numero maximo de intentos que hara TCP para terminar de
establecer la conexion. No deberia usar esta opcion si desea que
su codigo sea transportable.
TCP_INFO
Se usa para recoger informacion sobre este conector. El nucleo
devuelve una estructura tcp_info como la que se define en el
fichero /usr/include/linux/tcp.h. No deberia usar esta opcion
si desea que su codigo sea transportable.
TCP_KEEPCNT
Numero maximo de sondas ``keep-alive'' que TCP deberia enviar
antes de abandonar la conexion. No deberia usar esta opcion si
desea que su codigo sea transportable.
TCP_KEEPIDLE
Tiempo (en segundos) que la conexion necesita estar ociosa antes
de que TCP empiece a enviar sondas ``keep-alive'' si la opcion
de conector SO_KEEPALIVE se ha activado en este conector. No
deberia usar esta opcion si desea que su codigo sea
transportable.
TCP_KEEPINTVL
Tiempo (en segundos) entre sondas ``keep-alive''. No deberia
usar esta opcion si desea que su codigo sea transportable.
TCP_LINGER2
Tiempo de vida de conectores que han quedado huerfanos en estado
FIN_WAIT2. Esta opcion se puede usar para invalidar la sysctl
global del sistema tcp_fin_timeout en este conector. No
confundir con la opcion SO_LINGER del nivel de conectores
(socket(7)). No deberia usar esta opcion si desea que su codigo
sea transportable.
TCP_MAXSEG
Tamano maximo de segmento para los paquetes TCP de salida. Si se
establece esta opcion antes del establecimiento de conexiones,
tambien cambia el valor MSS anunciado al otro extremo en el
paquete inicial. Valores mayores que la MTU de la interfaz que
finalmente se use no tienen efecto. TCP tambien impondra sus
limites minimo y maximo sobre el valor dado.
TCP_NODELAY
Si se usa, desactiva el algoritmo de Nagle. Esto significa que
los segmentos siempre se envian tan pronto como sea posible,
aunque solo haya una pequena cantidad de datos. Cuando no se
usa, los datos se almacenan temporalmente hasta que haya una
cantidad suficiente para ser enviada, evitando asi el envio
frecuente de pequenos paquetes que ocasiona una pobre
utilizacion de la red. Esta opcion no se puede usar a la misma
vez que la opcion TCP_CORK.
TCP_QUICKACK
Activa el modo ``quickack'' cuando se pone a 1 y lo desactiva
cuando se pone a 0. En el modo ``quickack'', los reconocimientos
se envian inmediatamente, antes de retrasarlos si es necesario
conforme a un funcionamiento normal de TCP. Esta opcion no es
permanente, solo permite un cambio a o desde el modo
``quickack''. Las operaciones posteriores del protocolo TCP
entraran/saldran otra vez del modo ``quickack'' dependiendo del
procesamiento interno del protocolo y de factores tales como la
expiracion de plazos de reconocimientos retrasados y la
transferencia de datos. No deberia usar esta opcion si desea
que su codigo sea transportable.
TCP_SYNCNT
Establece el numero de retransmisiones SYN que debe enviar TCP
antes de abortar el intento de conexion. No puede exceder de
255. No deberia usar esta opcion si desea que su codigo sea
transportable.
TCP_WINDOW_CLAMP
Limita el tamano de la ventana anunciada a este valor. El nucleo
impone un tamano minimo de SOCK_MIN_RCVBUF/2. No deberia usar
esta opcion si desea que su codigo sea transportable.
IOCTLS
Estas ioctls pueden ser accedidas usando ioctl(2). La sintaxis
correcta es:
int value;
error = ioctl(tcp_socket, ioctl_type, &value);
SIOCINQ
Devuelve la cantidad de datos encolados sin leer en el buffer de
recepcion. El argumento es un puntero a un entero. El conector
no debe estar en estado LISTEN, de lo contrario se devolvera un
error (EINVAL).
SIOCATMARK
Devuelve cierto cuando el programa de usuario ya ha recibido
todos los datos urgentes. Esto se usa junto con SO_OOBINLINE.
El argumento es un puntero a un entero para el resultado de la
comprobacion.
SIOCOUTQ
Devuelve la cantidad de datos sin enviar en la cola de envio del
conector en el puntero a un valor entero pasado. El conector no
debe estar en estado LISTEN, de lo contrario se devolvera un
error (EINVAL).
MANEJO DE ERRORES
Cuando se produce un error de red, TCP intenta reenviar el paquete. Si
no tiene exito despues de un cierto tiempo, informa o bien de un error
ETIMEDOUT o bien del ultimo error recibido sobre esta conexion.
Algunas aplicaciones necesitan una notificacion mas rapida del error.
Esto se puede hacer con la opcion de conector IP_RECVERR del nivel
SOL_IP. Cuando se activa esta opcion, todos los errores de entrada son
pasado inmediatamente al programa de usuario. Use esta opcion con
cuidado (hace que TCP sea menos tolerante a cambios de enrutamiento y a
otras condiciones de red normales).
OBSERVACIONES
Cuando se produce un error, al configurar una conexion, durante la
escritura en un conector, solo se produce una senal SIGPIPE cuando esta
activa la opcion de conector SO_KEEPALIVE.
TCP no posee verdaderos datos fuera de orden, posee datos urgentes. En
Linux esto significa que si el otro extremo envia datos fuera de orden
recientes, los anteriores datos urgentes se insertaran como datos
normales en el flujo (incluso cuando SO_OOBINLINE no esta activa). Esto
difiere de las pilas de protocolo basadas en BSD.
Linux usa por defecto una interpretacion 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
tcp_stdurg.
ERRORES
EPIPE El otro extremo ha cerrado el conector inesperadamente o se ha
intentado leer de un conector desconectado.
ETIMEDOUT
El otro extremo no ha reconocido los datos retransmitidos
despues de cierto tiempo.
EAFNOTSUPPORT
El tipo de direccion de conector pasado en sin_family no es
AF_INET.
TCP tambien puede devolver cualquier error definido por ip(7) o la capa
de conectores genericos.
FALLOS
No se han documentado todos los errores.
No se ha descrito IPv6.
VERSIONES
El soporte para la Notificacion Explicita de la Congestion, sendfile
sin copias internas de datos, la reorganizacion de paquetes y algunas
extensiones SACK (DSACK) se introdujo en la version 2.4. El soporte
para el Reconocimiento Adelantado (FACK), el reciclado de conectores en
estado TIME_WAIT, opciones ``keep-alive'' para conexiones individuales
y las sysctls se introdujo en la version 2.3.
Los valores por omision y las descripciones de la variables sysctl
dados mas arriba son aplicables para la version 2.4 del nucleo.
AUTORES
Esta pagina de manual fue escrita originariamente por Andi Kleen.
Nivedita Singhvi la actualizo para la version 2.4 de Linux con la
informacion del documento Documentation/networking/ip-sysctls.txt de
Alexey Kuznetsov.
V'EASE TAMBI'EN
socket(7), socket(2), ip(7), bind(2), listen(2), accept(2), connect(2),
sendmsg(2), recvmsg(2), sendfile(2), sysctl(2), getsockopt(2).
RFC793 para la especificacion de TCP.
RFC1122 para los requisitos de TCP y una descripcion del algoritmo
Nagle.
RFC1323 para las opciones TCP de fechado y de ampliacion de ventana.
RFC1644 para una descripcion de los peligros que conlleva el
``asesinato'' de los conectores TIME_WAIT.
RFC2481 para una descripcion de la Notificacion Explicita de la
Congestion.
RFC2581 para los algoritmos TCP de control de la congestion.
RFC2018 y RFC2883 para SACK y sus extensiones.
Pagina man de Linux 20 abril 2002 TCP(7)