.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\" FIXME The following need to be documented .\" TCP_MD5SIG (2.6.20) .\" commit cfb6eeb4c860592edd123fdea908d23c6ad1c7dc .\" Author was yoshfuji@linux-ipv6.org .\" Needs CONFIG_TCP_MD5SIG .\" From net/inet/Kconfig: .\" bool "TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL)" .\" RFC2385 specifies a method of giving MD5 protection to TCP sessions. .\" Its main (only?) use is to protect BGP sessions between core routers .\" on the Internet. .\" .\" There is a TCP_MD5SIG option documented in FreeBSD's tcp(4), .\" but probably many details are different on Linux .\" http://thread.gmane.org/gmane.linux.network/47490 .\" http://www.daemon-systems.org/man/tcp.4.html .\" http://article.gmane.org/gmane.os.netbsd.devel.network/3767/match=tcp_md5sig+freebsd .\" .\" TCP_COOKIE_TRANSACTIONS (2.6.33) .\" commit 519855c508b9a17878c0977a3cdefc09b59b30df .\" Author: William Allen Simpson .\" commit e56fb50f2b7958b931c8a2fc0966061b3f3c8f3a .\" Author: William Allen Simpson .\" .\" REMOVED in Linux 3.10 .\" commit 1a2c6181c4a1922021b4d7df373bba612c3e5f04 .\" Author: Christoph Paasch .\" .\" TCP_THIN_LINEAR_TIMEOUTS (2.6.34) .\" commit 36e31b0af58728071e8023cf8e20c5166b700717 .\" Author: Andreas Petlund .\" .\" TCP_THIN_DUPACK (2.6.34) .\" commit 7e38017557bc0b87434d184f8804cadb102bb903 .\" Author: Andreas Petlund .\" .\" TCP_REPAIR (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov .\" See also .\" http://criu.org/TCP_connection .\" https://lwn.net/Articles/495304/ .\" .\" TCP_REPAIR_QUEUE (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov .\" .\" TCP_QUEUE_SEQ (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov .\" .\" TCP_REPAIR_OPTIONS (3.5) .\" commit b139ba4e90dccbf4cd4efb112af96a5c9e0b098c .\" Author: Pavel Emelyanov .\" .\" TCP_FASTOPEN (3.6) .\" (Fast Open server side implementation completed in Linux 3.7) .\" http://lwn.net/Articles/508865/ .\" .\" TCP_TIMESTAMP (3.9) .\" commit 93be6ce0e91b6a94783e012b1857a347a5e6e9f2 .\" Author: Andrey Vagin .\" .\" TCP_NOTSENT_LOWAT (3.12) .\" commit c9bee3b7fdecb0c1d070c7b54113b3bdfb9a3d36 .\" Author: Eric Dumazet .\" .\" TCP_CC_INFO (4.1) .\" commit 6e9250f59ef9efb932c84850cd221f22c2a03c4a .\" Author: Eric Dumazet .\" .\" TCP_SAVE_SYN, TCP_SAVED_SYN (4.2) .\" commit cd8ae85299d54155702a56811b2e035e63064d3d .\" Author: Eric Dumazet .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH tcp 7 "17 Mayo 2025" "Páginas de Manual de Linux 6.15" .SH NOMBRE tcp \- Protocolo TCP .SH SINOPSIS .nf \fB#include \fP \fB#include \fP \fB#include \fP .P \fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP .fi .SH DESCRIPCIÓN Ésta es una implementación del protocolo TCP definido en RFC\ 793, RFC\ 1122 y RFC\ 2001 con las extensiones NewReno y SACK. Proporciona una conexión bidireccional, fiable y orientada a conexión entre dos conectores (\*(lqsockets\*(rq) encima de \fBip\fP(7), tanto para la versión 4 como para la versión 6. TCP garantiza que los datos llegan en orden y retransmite los paquetes perdidos. Genera y comprueba una suma de verificación por paquete para detectar errores de transmisión. TCP no conserva los límites entre registros. .P Un socket TCP recién creado no tiene dirección remota ni local ni está completamente definido. Para crear una conexión TCP saliente con otro socket TCP, se utiliza \fBconnect\fP(2). Para recibir nuevas conexiones entrantes, primero conecte el socket con \fBbind\fP(2) a una dirección y puerto locales y luego invoque a \fBlisten\fP(2) para que esté a la escucha. Posteriormente, se puede aceptar un nuevo socket para cada conexión entrante mediante \fBaccept\fP(2). Un socket al que se le ha llamado correctamente \fBaccept\fP(2) o \fBconnect\fP(2) está completamente definido y ya puede transmitir datos. No se podrán transmitir datos en sockets que estén a la escucha o que aún no están conectados. .P Linux admite extensiones TCP de alto rendimiento RFC\ 1323. Estas incluyen la Protección contra Números de Secuencia Encapsulados (PAWS), el Escalado de Ventanas y las Marcas de Tiempo. El escalado de ventanas permite el uso de ventanas TCP grandes (por ejemplo, 64 kB) para admitir enlaces con alta latencia o gran ancho de banda. Para aprovecharlas, será necesario aumentar el tamaño del búfer de envío y recepción. Estos se pueden configurar globalmente con los archivos \fI/proc/sys/net/ipv4/tcp_wmem\fP e \fI/proc/sys/net/ipv4/tcp_rmem\fP, o en sockets individuales mediante las opciones de socket \fBSO_SNDBUF\fP y \fBSO_RCVBUF\fP con la llamada \fBsetsockopt\fP(2). .P Los tamaños máximos de los búferes de socket declarados mediante los mecanismos \fBSO_SNDBUF\fP y \fBSO_RCVBUF\fP están limitados por los valores de los archivos \fI/proc/sys/net/core/rmem_max\fP e \fI/proc/sys/net/core/wmem_max\fP. Tenga en cuenta que TCP asigna el doble del tamaño del búfer solicitado en la llamada \fBsetsockopt\fP(2), por lo que una llamada \fBgetsockopt\fP(2) posterior no devolverá el mismo tamaño de búfer solicitado en la llamada \fBsetsockopt\fP(2). TCP utiliza el espacio adicional para fines administrativos y para las estructuras internas del núcleo. Los valores del archivo \fI/proc\fP reflejan los tamaños mayores en comparación con las ventanas TCP reales. En conexiones individuales, el tamaño del búfer del socket debe configurarse antes de las llamadas \fBlisten\fP(2) o \fBconnect\fP(2) para que surta efecto. Consulte \fBsocket\fP(7) para obtener más información. .P TCP admite datos urgentes. Los datos urgentes se utilizan para indicar al receptor que algún mensaje importante forma parte del flujo de datos y que debe procesarse lo antes posible. Para enviar datos urgentes, debe indicarse la opción \fBMSG_OOB\fP en \fBsend\fP(2). Cuando se reciben datos urgentes, el núcleo envía una señal \fBSIGURG\fP al proceso o grupo de procesos configurado como «propietario» del socket mediante las ioctls \fBSIOCSPGRP\fP o \fBFIOSETOWN\fP (o la operación \fBfcntl\fP(2) \fBF_SETOWN\fP definida en POSIX.1). Cuando la opción de socket \fBSO_OOBINLINE\fP está habilitada, los datos urgentes se introducen en el flujo de datos normal (un programa podrá comprobar su ubicación mediante la ioctl \fBSIOCATMARK\fP que se describe más adelante); de lo contrario, solo se pueden recibir cuando el indicador \fBMSG_OOB\fP está configurado para \fBrecv\fP(2) o \fBrecvmsg\fP(2). .P Cuando existan datos obsoletos, \fBselect\fP(2) señala el descriptor de archivo como en condiciones ecepcionales y \fIpoll (2)\fP indica un evento \fBPOLLPRI\fP. .P La versión 2.4 de Linux introdujo varios cambios para mejorar el rendimiento y la escalabilidad, además de una funcionalidad mejorada. Algunas de estas características incluyen soporte para llamadas \fBsendfile\fP(2) sin copias internas de datos, Notificación Explícita de Congestión, nueva gestión de conectores TIME_WAIT, opciones \*(lqkeep\-alive\*(rq y soporte para extensiones de SACK Duplicados. .SS "Formato de las direcciones" TCP está construido encima de IP (vea \fBip\fP(7)). Los formatos de dirección definidos por \fBip\fP(7) se aplican a TCP. TCP sólo soporta comunicaciones punto a punto. La difusión y el envío multidestino no están soportados. .SS "Interfaces /proc" Es posible acceder a los parámetros TCP aplicables a todo el sistema a través del archivo \fI/proc/sys/net/ipv4/\fP. También muchas interfaces IP en \fI/proc\fP son aplicables también a TCP, consulte \fBip\fP(7). Las variables de tipo \fIBooleano\fP pueden tomar un valor entero distinto de cero ("verdadero") para indicar que la opción correspondiente está activada o un valor cero ("falso") para indicar que está inactiva. .TP \fItcp_abc\fP (Enterio; por defecto:0; Linux 2.6.15 hasta Linux 3.8) .\" Since Linux 2.6.15; removed in Linux 3.9 .\" commit ca2eb5679f8ddffff60156af42595df44a315ef0 .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Controla el recuento de bytes apropiado (ABC), definido en el RFC 3465. ABC es una forma de aumentar la ventana de congestión (\fIcwnd\fP) más lentamente en respuesta a acuses de recibo parciales. Los valores posibles son: .RS .TP \fB0\fP Incrementa \fIcwnd\fP una vez por cada confirmación (sin ABC) .TP \fB1\fP Incrementa \fIcwnd\fP una vez por cada confirmación de segmento completo .TP \fB2\fP Permite incrementar \fIcwnd\fP en dos si la confirmación es de dos segmentos para compensar las confirmaciones con retraso. .RE .TP \fItcp_abort_on_overflow\fP (Booleano; predeterminado: deshabilitado; a partir de Linux 2.4) .\" Since Linux 2.3.41 Activa el reinicio de conexiones si el servicio que escucha es demasiado lento y es incapaz de continuar y aceptarlas. Significa que si se produjera un desbordamiento debido a una ráfaga de datos, la conexión se recuperará. Active esta opción \fIsólo\fP si verdaderamente está seguro de que el demonio que escucha no puede ser ajustado para aceptar conexiones más rápidamente. Activar esta opción puede perjudicar a los clientes de su servidor. .TP \fItcp_adv_win_scale\fP (Entero; predeterminado: 2; a partir de Linux 2.4) .\" Since Linux 2.4.0-test7 Contabiliza la sibrecarga del buffer como \fIbytes/2\[ha]tcp_adv_win_scale\fP, si \fItcp_adv_win_scale\fP es mayor que cero o bien \fIbytes\-bytes/2\[ha](\-tcp_adv_win_scale)\fP, si \fItcp_adv_win_scale\fP es menor o igual a cero. .IP El espacio del buffer de recepción del conector se comparte entre la aplicación y el núcleo. TCP mantiene parte del buffer como ventana TCP; éste es el tamaño de la ventana de recepción que se comunica al otro extremo. El resto del espacio se usa como \*(lqbuffer de aplicación\*(rq, usado para aislar a la red de latencias de planificación y de la aplicación. El valor 2 por omisión de \fItcp_adv_win_scale\fP implica que el espacio usado para el buffer de aplicación es un cuarto del total. .TP \fItcp_allowed_congestion_control\fP (Cadena; predeterminado: ver texto; a partir de Linux 2.4.20) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Muestra/configura las opciones del algoritmo de control de congestión disponibles para procesos sin privilegios (consulte la descripción de la opción de socket \fBTCP_CONGESTION\fP). Los elementos de la lista se separan por espacios en blanco y terminan con un carácter de nueva línea. La lista es un subconjunto de las que se listan en \fItcp_available_congestion_control\fP. El valor predeterminado de esta lista es «reno» más la configuración predeterminada de \fItcp_congestion_control\fP. .TP \fItcp_autocorking\fP (Booleano; por defecto: activado; desde Linux 3.14) .\" commit f54b311142a92ea2e42598e347b84e1655caf8e3 .\" Text heavily based on Documentation/networking/ip-sysctl.txt Si esta opción está habilitada, el núcleo intenta fusionar mensajes pequeños (de llamadas consecutivas a \fBwrite\fP(2) y \fBsendmsg\fP(2)) tanto como sea posible para reducir el número total de paquetes enviados. La fusión se realiza si al menos un paquete previo del flujo está esperando en las colas de Qdisc o en la cola de transmisión del dispositivo. Las aplicaciones aún pueden usar la opción de socket \fBTCP_CORK\fP para obtener un comportamiento óptimo cuando saben cómo/cuándo desconectan sus sockets. .TP \fItcp_available_congestion_control\fP (Cadena; solo lectura; a partir de Linux 2.4.20) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Muestra una lista de los algoritmos de control de congestión registrados. Los elementos de la lista están separados por espacios en blanco y terminan con un carácter de nueva línea. Esta lista limita la lista en \fItcp_allowed_congestion_control\fP. Es posible que haya más algoritmos de control de congestión disponibles como módulos, pero no cargados. .TP \fItcp_app_win\fP (entero; valor predeterminado: 31; a partir de Linux 2.4) .\" Since Linux 2.4.0-test7 Esta variable define cuántos bytes de la ventana TCP se reservan para el gasto del almacenamiento temporal. .IP .\" .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Un máximo de (\fIwindow/2\[ha]tcp_app_win\fP, mss) bytes en la ventana están reservados para el búfer de la aplicación. Un valor de 0 implica que no se reserva ninguna cantidad. .TP \fItcp_base_mss\fP (Entero; por defecto: 512; a partir de Linux 2.6.17) .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt El valor inicial de \fIsearch_low\fP que utilizará la capa de paquetización para el descubrimiento de la MTU de ruta (sondeo de MTU). Si el sondeo de MTU está habilitado, éste será el MSS inicial utilizado por la conexión. .TP \fItcp_bic\fP (Booleano; predeterminado: deshabilitado; Linux 2.4.27/2.6.6 a Linux 2.6.13) .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Habilita el algoritmo de control de congestión BIC\-TCP. BIC\-TCP es un cambio exclusivo del lado del emisor que garantiza una equidad lineal de RTT en ventanas grandes, a la vez que ofrece escalabilidad y compatibilidad con TCP. El protocolo combina dos esquemas: aumento incremental y aumento de búsqueda binaria. Cuando la ventana de congestión es grande, el aumento incremental con un incremento grande garantiza una equidad lineal de RTT, así como una buena escalabilidad. En ventanas de congestión pequeñas, el aumento de búsqueda binaria proporciona compatibilidad con TCP. .TP \fItcp_bic_low_window\fP (entero; valor predeterminado: 14; Linux 2.4.27/2.6.6 a Linux 2.6.13) .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Establece el umbral de ventana (en paquetes) donde BIC TCP comienza a ajustar la ventana de congestión. Por debajo de este umbral, BIC TCP se comporta igual que el TCP Reno predeterminado. .TP \fItcp_bic_fast_convergence\fP (booleano; valor predeterminado: habilitado; Linux 2.4.27/2.6.6 a Linux 2.6.13) Fuerza a BIC TCP a responder más rápidamente a los cambios en la ventana de congestión. Permite que dos flujos que comparten la misma conexión converjan más rápidamente. .TP \fItcp_congestion_control\fP (Cadena;por defecto: ver texto; a partir de Linux 2.4.13) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Establece el algoritmo de control de congestión predeterminado que se utilizará en las nuevas conexiones. El algoritmo «reno» siempre está disponible, pero pueden darse opciones adicionales según la configuración del núcleo. El valor predeterminado de este archivo se establece como parte de la configuración del núcleo. .TP \fItcp_dma_copybreak\fP (número entero; predeterminado:4096; a partir de Linux 2.6.24). Límite inferior, en bytes, del tamaño de las lecturas de socket que se transferirán a un motor de copia DMA, si existe uno en el sistema y se configuró el núcleo con la opción \fBCONFIG_NET_DMA\fP. .TP \fItcp_dsack\fP (booleano; por defecto:activado; a partir de Linux 2.4). .\" Since Linux 2.4.0-test7 Activa el soporte para SACK Duplicados TCP según se describen en RFC\ 2883. .TP \fItcp_fastopen\fP (máscar a de bits; por defecto: 0x1; a partir de Linux 3.7) Habilita la compatibilidad con la Apertura Rápida RFC\ 7413. El indicador se utiliza como un mapa de bits con los siguientes valores: .RS .TP \fB0x1\fP Activa el soporte Fast Open en la parte del cliente .TP \fB0x2\fP Activa el soporte de Fast Open en la parte del servidor .TP \fB0x4\fP Permite al cliente transmitir datos en SYN sin la opción Fast Open .TP \fB0x200\fP Permite al servidor aceptar datos SYN sin la opción Fast Open .TP \fB0x400\fP Activa Fast Open en todos los que están a la escucha sin la opción \fBTCP_FASTOPEN\fP .RE .TP \fItcp_fastopen_key\fP (desde Linux 3.7) Establece la clave de Apertura Rápida RFC\ 7413 del servidor para generar una cookie cuando la compatibilidad con Apertura Rápida del servidor esté habilitada. .TP \fItcp_ecn\fP (número entero; por defecto:consulte más abajo; a partir de Linux 2.4) .\" Since Linux 2.4.0-test7 Activa la Notificación Explícita de la Congestión (RFC\ 3168). .IP Este archivo puede tener uno de los siguientes valores: .RS .TP \fB0\fP Desactiva ECN. Ni se inicia, ni se acepta ECN. Predeterminado a partir de Linux 2.6.30. .TP \fB1\fP Habilita ECN cuando lo soliciten las conexiones entrantes y también lo solicita en los intentos de conexión salientes. .TP \fB2\fP .\" commit 255cac91c3c9ce7dca7713b93ab03c75b7902e0e Habilita ECN cuando lo soliciten las conexiones entrantes, pero no lo solicita en las conexiones salientes. Este valor es compatible y predeterminado desde Linux 2.6.31. .RE .IP Al habilitarse, la conectividad a algunos destinos podría verse afectada debido a la presencia de módulos intermedios antiguos y con un deficiente funcionamiento a lo largo de la ruta, lo que provoca la pérdida de conexiones. Sin embargo, para facilitar y fomentar la implementación con la opción 1 y solucionar este tipo de equipos con errores, se ha introducido la opción \fBtcp_ecn_fallback\fP. .TP \fItcp_ecn_fallback\fP (Booleano; por defecto: activado; a partir de Linux 4.1) .\" commit 492135557dc090a1abb2cfbe1a412757e3ed68ab Habilita la opción de respaldo según RFC\ 3168, Sección 6.1.1.1. Al habilitarse, los SYN salientes de configuración ECN que agoten el tiempo de espera dentro del tiempo de espera normal de retransmisión de SYN se reenviarán con CWR y ECE desactivados. .TP \fItcp_fack\fP (booleano; predeterminado: habilitado; desde Linux 2.2) .\" Since Linux 2.1.92 Activa el soporte para el Reconocimiento Adelantado (\*(lqForward Acknowledgement\*(rq) TCP. .TP \fItcp_fin_timeout\fP (entero; predeterminado: 60; desde Linux 2.2) .\" Since Linux 2.1.53 .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Esto especifica cuántos segundos se debe esperar para un paquete FIN final antes de que el socket se cierre forzosamente. Esto constituye una violación estricta de la especificación TCP, pero es necesario para evitar ataques de denegación de servicio. En Linux 2.2, el valor predeterminado era 180. .TP \fItcp_frto\fP (entero; valor predeterminado: consulte más adelante; desde Linux 2.4.21/2.6) .\" Since Linux 2.4.21/2.5.43 Habilita F\-RTO, un algoritmo de recuperación mejorado para agotamientos de tiempos de espera de retransmisión TCP (RTO). Resulta especialmente beneficioso en entornos inalámbricos donde la pérdida de paquetes suele deberse a interferencias de radio aleatorias, en lugar de a la congestión del enrutador intermedio. Consulte RFC 4138 para obtener más información. .IP Este archivo puede tener uno de los siguientes valores: .RS .TP \fB0\fP Deshabilitado. Este era el valor predeterminado hasta Linux 2.6.23 inclusive. .TP \fB1\fP La versión básica del algoritmo F\-RTO está habilitada. .TP \fB2\fP .\" commit c96fd3d461fa495400df24be3b3b66f0e0b152f9 Habilita F\-RTO mejorado con SACK si el flujo utiliza SACK. La versión básica también se puede usar cuando se utiliza SACK, aunque en ese caso existen escenarios en los que F\-RTO interactúa de forma deficiente con el conteo de paquetes del flujo TCP con SACK habilitado. Este valor es el predeterminado desde Linux 2.6.24. .RE .IP Antes de Linux 2.6.22, este parámetro era un valor booleano, compatible únicamente con los valores 0 y 1 superiores. .TP \fItcp_frto_response\fP (entero; valor predeterminado: 0; desde Linux 2.6.22) Cuando F\-RTO detecta que un agotamiento de tiempo de espera de retransmisión de TCP es falso (es decir, el agotamiento se habría evitado si TCP hubiera establecido un tiempo de espera de retransmisión mayor), TCP tiene varias opciones para proceder. Los valores posibles son: .RS .TP \fB0\fP Basada en la reducción a la mitad de la tasa; una respuesta suave y conservadora resulta en la reducción a la mitad de la ventana de congestión (\fIcwnd\fP) y del umbral de inicio lento (\fIssthresh\fP) después de un RTT. .TP \fB1\fP Respuesta muy conservadora. No se recomienda porque \-aunque es válida\- interactúa mal con el resto de TCP de Linux; reduce inmediatamente a la mitad \fIcwnd\fP e \fIssthresh\fP. .TP \fB2\fP Respuesta agresiva. Deshace las medidas de control de congestión que ahora se consideran innecesarias (ignorando la posibilidad de una retransmisión perdida que requeriría mayor precaución por parte de TCP); \fIcwnd\fP e \fIssthresh\fP se restauran a los valores previos al agotamiento del tiempo de espera. .RE .TP \fItcp_keepalive_intvl\fP (entero; valor predeterminado: 75; desde Linux 2.4) .\" Since Linux 2.3.18 Número de segundos entre dos sondas \*(lqkeep\-alive\*(rq TCP. .TP \fItcp_keepalive_probes\fP (entero; valor predeterminado: 9; desde Linux 2.2) .\" Since Linux 2.1.43 Número máximo de sondas \*(lqkeep\-alive\*(rq TCP a enviar antes de abandonar y acabar con la conexión si no se obtiene respuesta desde el otro extremo. .TP \fItcp_keepalive_time\fP (entero; valor predeterminado: 7200; desde Linux 2.2) .\" Since Linux 2.1.43 Número de segundos que una conexión necesita estar inactiva antes de que TCP comience a enviar sondas \*(lqkeep\-alive\*(rq. Estas sondas sólo se envían cuando la opción de conector \fBSO_KEEPALIVE\fP está activa. El valor por omisión es 7200 segundos (2 horas). Una conexión inactiva se termina después de aproximadamente otros 11 minutos (9 sondas a intervalos de 75 segundos) cuando está activo el envío de sondas \*(lqkeep\-alive\*(rq. .IP .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Dese cuenta que los mecanismos subyacentes de seguimiento de conexiones y los plazos de tiempo de las aplicaciones pueden ser mucho más pequeños. .TP \fItcp_low_latency\fP (Booleano; valor predeterminado: deshabilitado; desde Linux 2.4.21/2.6; obsoleto desde Linux 4.14) .\" Since Linux 2.4.21/2.5.60 .\" commit b6690b14386698ce2c19309abad3f17656bdfaea Si está habilitada, la pila TCP toma decisiones que priorizan una latencia menor en lugar de un mayor rendimiento. Si esta opción está deshabilitada, se prioriza un mayor rendimiento. Un ejemplo de una aplicación donde se debería cambiar este valor predeterminado sería un clúster de cómputo Beowulf. A partir de Linux 4.14, este archivo aún existe, pero su valor se ignora. .TP \fItcp_max_orphans\fP (entero; valor predeterminado: ver más abajo; desde Linux 2.4) .\" Since Linux 2.3.41 Número máximo de sockets TCP huérfanos (no asociados a ningún identificador de archivo de usuario) permitidos en el sistema. Cuando se supera este número, la conexión huérfana se restablece y se muestra una advertencia. Este límite existe únicamente para evitar ataques de denegación de servicio simples. No se recomienda reducirlo. Las condiciones de red podrían requerir un incremento en el número de huérfanos permitidos, pero tenga en cuenta que cada uno puede ocupar hasta \[ti]64\ kB de memoria no intercambiable. El valor inicial predeterminado es igual al parámetro del kernel NR_FILE. Este valor inicial predeterminado se ajusta según la memoria del sistema. .TP \fItcp_max_syn_backlog\fP (entero; valor predeterminado: ver más abajo; desde Linux 2.2) .\" Since Linux 2.1.53 Número máximo de peticiones de conexión encoladas que todavía no han recibido un reconocimiento desde el cliente que se está conectando. Si este número se supera, el núcleo comenzará a eliminar peticiones. El valor por omisión de 256 se incrementa a 1024 cuando la memoría que hay en el sistema es adecuada o grande (>= 128\ MB) y se reduce a 128 en aquellos sistemas con muy poca memoria (<= 32\ MB). .IP .\" commit 72a3effaf633bcae9034b7e176bdbd78d64a71db Antes de Linux 2.6.20, se recomendaba que, si era necesario aumentar este valor por encima de 1024, se modificara el tamaño de la tabla hash SYNACK (\fBTCP_SYNQ_HSIZE\fP) en \fIinclude/net/tcp.h\fP para mantenerlo y se recompilara el núcleo. En Linux 2.6.20, se eliminó el tamaño fijo de \fBTCP_SYNQ_HSIZE\fP en favor de un tamaño dinámico. .IP .in +4n .EX TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog .EE .in .IP Y el núcleo debe recompilarse. En Linux 2.6.20, se eliminó el tamaño fijo \fBTCP_SYNQ_HSIZE\fP en favor de un tamaño dinámico. .TP \fItcp_max_tw_buckets\fP (entero; predeterminado: ver más abajo; desde Linux 2.4) .\" Since Linux 2.3.41 Número máximo de conectores en el estado TIME_WAIT admitidos por el sistema. Este límite existe sólo para evitar ataques denial\-of\-service sencillos. El valor por omisión de NR_FILE*2 se ajusta dependiendo de la memoria que haya en el sistema. Si este número se supera, se cierra el conector y se muestra una aviso. .TP \fItcp_moderate_rcvbuf\fP (booleano; predeterminado: habilitado; desde Linux 2.4.17/2.6.7) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Si está habilitado, TCP realiza el ajuste del búfer de recepción, intentando cuadrar automáticamente su tamaño (no mayor que \fItcp_rmem[2]\fP) para que coincida con el tamaño requerido por la ruta para un rendimiento completo. .TP \fItcp_mem\fP (desde Linux 2.4) .\" Since Linux 2.4.0-test7 Es un vector de 3 enteros: [bajo, presión, alto]. Estos límites, medidos en unidades del tamaño de página del sistema, son utilizados por TCP para rastrear el uso de memoria. Los valores predeterminados se calculan al arrancar a partir de la cantidad de memoria disponible. TCP solo puede usar \fIpoca memoria\fP para esto, limitada a unos 900 megabytes en sistemas de 32 bits. Los sistemas de 64 bits no tienen esta limitación. .RS .TP \fIlow\fP TCP no regula su asignación de memoria cuando el número de páginas que ha asignado globalmente está por debajo de este número. .TP \fIpressure\fP Cuando la cantidad de memoria asignada por TCP supera este número de páginas, TCP modera su consumo de memoria. Este estado de presión de memoria se termina una vez que el número de páginas asignadas cae por debajo de la marca \fIlow\fP. .TP \fIhigh\fP Número máximo de páginas que TCP asignará de forma global. Este valor invalida cualquier otro límite impuesto por el núcleo. .RE .TP \fItcp_mtu_probing\fP (entero; valor predeterminado: 0; desde Linux 2.6.17) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Este parámetro controla el descubrimiento de la MTU de la ruta de la capa de empaquetamiento de TCP. Se pueden asignar los siguientes valores al archivo: .RS .TP \fB0\fP Desactivado .TP \fB1\fP Deshabilitado por defecto, habilitado al detectar un agujero negro ICMP. .TP \fB2\fP Siempre habilitado, usa el MSS inicial de \fItcp_base_mss\fP. .RE .TP \fItcp_no_metrics_save\fP (booleano; valor predeterminado: deshabilitado; desde Linux 2.6.6) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Por defecto, TCP guarda varias métricas de conexión en la caché de ruta cuando se cierra la conexión, de modo que las conexiones que se establezcan próximamente puedan emplearlas para establecer las condiciones iniciales. Esto suele mejorar el rendimiento general, pero en ocasiones puede reducirlo. Si \fItcp_no_metrics_save\fP está habilitado, TCP no almacenará en caché las métricas al cerrar las conexiones. .TP \fItcp_orphan_retries\fP (número entero; por defecto: 8; a partir de Linux 2.4) .\" Since Linux 2.3.41 Número máximo de intentos realizados para sondear el otro extremo de una conexión que ha sido cerrada por nuestro extremo. .TP \fItcp_reordering\fP (número entero; por defecto:3; a partir de Linux 2.4) .\" Since Linux 2.4.0-test7 El máximo que un paquete puede ser reorganizado en un flujo de paquetes TCP sin que TCP asuma pérdida de paquetes y sin que se ponga a hacer un lento inicio. No es aconsejable cambiar este número. Ésta es una métrica de detección de reorganización de paquetes diseñada para minimizar retrocesos y retransmisiones innecesarios provocados por la reorganización de paquetes en una conexión. .TP \fItcp_retrans_collapse\fP (Booleano; por defecto: activado; a partir de Linux 2.2) .\" Since Linux 2.1.96 Intentar enviar paquetes de tamaño máximo durante las retransmisiones. .TP \fItcp_retries1\fP (número entero; por defecto:3; a partir de Linux 2.2) .\" Since Linux 2.1.43 Número de veces que TCP intentará retransmitir un paquete en una conexión establecida normalmente, sin el esfuerzo extra de que se involucren las capas de red. Una vez se supera este número de retransmisiones, primero hacemos que la capa de red actualice la ruta si es posible antes de cada nueva retransmisión. El valor por omisión es 3, el mínimo especificado en el RFC. .TP \fItcp_retries2\fP (número entero; por defecto:15; a partir de Linux 2.2) .\" Since Linux 2.1.43 Número máximo de veces que un paquete TCP se retransmite con estado \*(lqestablecido\*(rq antes de abandonarlo. El valor por omisión es 15, que corresponde a una duracción de, aproximadamente, entre 13 y 30 minutos, dependiendo del plazo de retransmisión. El límite mínimo de 100 segundos especificado por RFC\ 1122 normalmente se considera demasiado pequeño. .TP \fItcp_rfc1337\fP (Booleano; por defecto:desactivado; a partir de Linux 2.2) .\" Since Linux 2.1.90 Activa el comportamiento TCP que se ajusta al RFC\ 1337. Cuando no está activo, si se recibe un RST en un estado TIME_WAIT, cerramos el conector inmediatamente sin esperar el fin del periodo TIME_WAIT. .TP \fItcp_rmem\fP (desde Linux 2.4) .\" Since Linux 2.4.0-test7 Éste es un vector de 3 enteros: [min, default, max]. Estos parámetros los usa TCP para regular los tamaños de los buffers de recepción. TCP ajusta dinámicamente el tamaño del buffer de recepción a partir de los valores por omisión listados más abajo, en el rango de estas valores, dependiendo de la memoria disponible en el sistema. .RS .TP \fImin\fP Tamaño mínimo del búfer de recepción utilizado por cada socket TCP. El valor predeterminado es el tamaño de página del sistema. (En Linux 2.4, el valor predeterminado es 4 kB, reducido a \fBPAGE_SIZE\fP bytes en sistemas con poca memoria). Este valor se utiliza para garantizar que, si se dispone de poca memoria, las asignaciones por debajo de este tamaño se realicen correctamente. No se utiliza para limitar el tamaño del búfer de recepción declarado mediante \fBSO_RCVBUF\fP en un socket. .TP \fIdefault\fP Tamaño predeterminado del búfer de recepción para un socket TCP. Este valor sobrescribe el tamaño predeterminado inicial del búfer del \fInet.core.rmem_default\fP global genérico definido para todos los protocolos. El valor predeterminado es 87380 bytes. (En Linux 2.4, este valor se reducirá a 43689 en sistemas con poca memoria). Si se desean tamaños de búfer de recepción mayores, se deberá aumentar este valor (para que afecte a todos los sockets). Para emplear ventanas TCP grandes, se debe habilitar \fInet.ipv4.tcp_window_scaling\fP (valor predeterminado). .TP \fImax\fP Tamaño máximo del búfer de recepción utilizado por cada socket TCP. Este valor no anula el valor global \fInet.core.rmem_max\fP. No se utiliza para limitar el tamaño del búfer de recepción declarado mediante \fBSO_RCVBUF\fP en un socket. El valor predeterminado se calcula mediante la fórmula: .IP .in +4n .EX max(87380, min(4\ MB, \fItcp_mem\fP[1]*PAGE_SIZE/128)) .EE .in .IP (En Linux 2.4, el valor predeterminado es 87380*2 bytes, reducido a 87380 en sistemas con poca memoria). .RE .TP \fItcp_sack\fP (Booleano; valor predeterminado: habilitado; desde Linux 2.2) .\" Since Linux 2.1.36 Activa los Reconocimientos Selectivos TCP descritos por el RFC\ 2018. .TP \fItcp_slow_start_after_idle\fP (Booleano; valor predeterminado: habilitado; desde Linux 2.6.18) .\" The following is from Linux 2.6.28-rc4: Documentation/networking/ip-sysctl.txt Si está habilitado, se ciñe a lo indicado en el RFC 2861 y agota el tiempo de espera de la ventana de congestión tras un período de inactividad. Un período de inactividad se define como el RTO (tiempo de espera de retransmisión) actual. Si está deshabilitado, no se agota el tiempo de espera de la ventana de congestión tras un período de inactividad. .TP \fItcp_stdurg\fP (Booleano; valor predeterminado: deshabilitado; desde Linux 2.2) .\" Since Linux 2.1.44 .\" RFC 793 was ambiguous in its specification of the meaning of the .\" urgent pointer. RFC 1122 (and RFC 961) fixed on a particular .\" resolution of this ambiguity (unfortunately the "wrong" one). Si esta opción está habilitada, se utiliza la interpretación RFC\ 1122 del campo de puntero urgente de TCP. Según esta interpretación, el puntero urgente apunta al último byte de los datos urgentes. Si está deshabilitada, se utiliza la interpretación compatible con BSD del puntero urgente: el puntero urgente apunta al primer byte después de los datos urgentes. Habilitar esta opción puede causar problemas de interoperabilidad. .TP \fItcp_syn_retries\fP (entero; predeterminado: 6; desde Linux 2.2) .\" Since Linux 2.1.38 .\" commit 6c9ff979d1921e9fd05d89e1383121c2503759b9 El número máximo de veces que se retransmitirán los SYN iniciales en un intento de conexión TCP activo. Este valor no debe ser superior a 255. El valor predeterminado es 6, lo que corresponde a un tiempo de reintento de hasta aproximadamente 127 segundos. Antes de Linux 3.7, el valor predeterminado era 5, que, sumando al cálculo basado en otros parámetros del núcleo, correspondía a aproximadamente 180 segundos. .TP \fItcp_synack_retries\fP (entero; predeterminado: 5; desde Linux 2.2) .\" Since Linux 2.1.38 Número máximo de veces que se retransmitirá un segmento SYN/ACK para una conexión TCP pasiva. Este número no debería ser mayor que 255. .TP \fItcp_syncookies\fP (entero; predeterminado: 1; desde Linux 2.2) .\" Since Linux 2.1.43 Habilita las TCP syncookies. El núcleo debe compilarse con \fBCONFIG_SYN_COOKIES\fP. La función syncookies intenta proteger un socket de un ataque de inundación SYN. Debe usarse como último recurso, si es que se usa. Esto constituye una violación del protocolo TCP y entra en conflicto con otras áreas de TCP, como las extensiones TCP. Puede causar problemas a clientes y relés. No se recomienda como mecanismo de ajuste para servidores con mucha carga, para ayudar con condiciones de sobrecarga o configuración incorrecta. Para alternativas recomendadas, consulte \fItcp_max_syn_backlog\fP, \fItcp_synack_retries\fP e \fItcp_abort_on_overflow\fP. Establézcalo en uno de los siguientes valores: .RS .TP \fB0\fP Desactiva TCP syncookies. .TP \fB1\fP Envía cookies de sincronización cuando la cola de sincronización pendiente de un socket se desborda. .TP \fB2\fP .\" commit 5ad37d5deee1ff7150a2d0602370101de158ad86 (desde Linux 3.12) Envía cookies de sincronización incondicionalmente. Esto puede ser útil para pruebas de red. .RE .TP \fItcp_timestamps\fP (entero; predeterminado: 1; desde Linux 2.2) .\" Since Linux 2.1.36 Establece uno de los siguientes valores para habilitar o deshabilitar las marcas de tiempo TCP según el RFC 1323: .RS .TP \fB0\fP Deshabilita las marcas de tiempo. .TP \fB1\fP Habilita las marcas de tiempo según la definición de RFC 1323 y utiliza un desplazamiento aleatorio para cada conexión en lugar de usar solo la hora actual. .TP \fB2\fP .\" commit 25429d7b7dca01dc4f17205de023a30ca09390d0 Igual que el valor 1, pero sin desplazamientos aleatorios. Establecer \fItcp_timestamps\fP con este valor es relevante desde Linux 4.10. .RE .TP \fItcp_tso_win_divisor\fP (entero; valor predeterminado: 3; desde Linux 2.6.9) Este parámetro controla el porcentaje de la ventana de congestión que puede consumir una sola trama de Descarga de Segmentación TCP (TSO). La configuración de este parámetro busca un equilibrio entre la capacidad de ráfaga y la creación de tramas TSO más grandes. .TP \fItcp_tw_recycle\fP (booleano; valor predeterminado: deshabilitado; desde Linux 2.4 hasta Linux 4.11) .\" Since Linux 2.3.15 .\" removed in Linux 4.12; commit 4396e46187ca5070219b81773c4e65088dac50cc .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Habilita el reciclaje rápido de sockets TIME_WAIT. No se recomienda habilitar esta opción, ya que la IP remota podría no usar marcas de tiempo que aumenten de forma previsible (dispositivos con NAT, dispositivos con desplazamientos de marca de tiempo por conexión). Consulte los RFC 1323 (PAWS) y RFC 6191. .TP \fItcp_tw_reuse\fP (Booleano; valor predeterminado: deshabilitado; desde Linux 2.4.19/2.6) .\" Since Linux 2.4.19/2.5.43 .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Permite reutilizar los sockets TIME_WAIT para nuevas conexiones cuando sea seguro desde el punto de vista del protocolo. No debe modificarse sin el asesoramiento o la solicitud de expertos técnicos. .TP \fItcp_vegas_cong_avoid\fP (Booleano; valor predeterminado: deshabilitado; desde Linux 2.2 hasta Linux 2.6.13) .\" Since Linux 2.1.8; removed in Linux 2.6.13 .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Habilita el algoritmo de prevención de congestión TCP Vegas. TCP Vegas es una modificación de TCP que solo afecta al remitente y que anticipa la aparición de congestión estimando el ancho de banda. TCP Vegas ajusta la velocidad de envío modificando la ventana de congestión. TCP Vegas debería proporcionar una menor pérdida de paquetes, pero no es tan agresivo como TCP Reno. .TP \fItcp_westwood\fP (Booleano; valor predeterminado: deshabilitado; Linux 2.4.26/2.6.3 a Linux 2.6.13) Habilita el algoritmo de control de congestión TCP Westwood+. TCP Westwood+ es una modificación de la pila de protocolos TCP Reno, que solo afecta al remitente, y que optimiza el rendimiento del control de congestión TCP. Se basa en la estimación del ancho de banda de extremo a extremo para establecer la ventana de congestión y un umbral de inicio lento tras una congestión. Con esta estimación, TCP Westwood+ establece de forma flexible un umbral de inicio lento y una ventana de congestión que tiene en cuenta el ancho de banda utilizado en el momento de la congestión. TCP Westwood+ aumenta significativamente la equidad con respecto a TCP Reno en redes cableadas y el rendimiento en enlaces inalámbricos. .TP \fItcp_window_scaling\fP (Booleano; valor predeterminado: habilitado; desde Linux 2.2) .\" Since Linux 2.1.36 Activa la ampliación de ventanas TCP según el RFC\ 1323. Esta característica permite el uso de una ventana grande (> 64\ kB) en conexiones TCP, aunque el otro extremo debería soportarla. Normalmente, el campo de 16 bit de longitud de ventana en la cabecera TCP limita el tamaño de ventana a menos de 64\ kB. Si se desean ventanas mayores, las aplicaciones pueden incrementar el tamaño de sus buffers de conectores y se empleará la opción de ampliación de ventanas. Si \fItcp_window_scaling\fP se desactiva, TCP no negociará el uso de la ampliación de ventanas con el otro extremo durante el establecimiento de la conexión. .TP \fItcp_wmem\fP (desde Linux 2.4) .\" Since Linux 2.4.0-test7 Éste es un vector de 3 enteros: [min, default, max]. Estos parámetros los usa TCP para regular los tamaños de los buffers de envío. TCP ajusta dinámicamente el tamaño del buffer de envío a partir de los valores por omisión listados más abajo, en el rango de estas valores, dependiendo de la memoria disponible en el sistema. .RS .TP \fImin\fP Tamaño mínimo del búfer de envío utilizado por cada socket TCP. El valor predeterminado es el tamaño de página del sistema. (En Linux 2.4, el valor predeterminado es 4 kB). Este valor se utiliza para garantizar que, cuando se dispone de escasa memoria, las asignaciones inferiores a este tamaño se realicen correctamente. No se utiliza para limitar el tamaño del búfer de envío declarado mediante \fBSO_SNDBUF\fP en un socket. .TP \fIdefault\fP .\" True in Linux 2.4 and 2.6 Tamaño predeterminado del búfer de envío para un socket TCP. Este valor sobrescribe el tamaño predeterminado inicial del búfer del valor genérico global \fI/proc/sys/net/core/wmem_default\fP definido para todos los protocolos. El valor predeterminado es 16 kB. Si se desean tamaños de búfer de envío mayores, se debe aumentar este valor (para que afecte a todos los sockets). Para emplear ventanas TCP grandes, \fI/proc/sys/net/ipv4/tcp_window_scaling\fP debe establecerse en un valor distinto de cero (predeterminado). .TP \fImax\fP Tamaño máximo del búfer de envío utilizado por cada socket TCP. Este valor no sobrescribe el valor de \fI/proc/sys/net/core/wmem_max\fP. No se utiliza para limitar el tamaño del búfer de envío, declarado mediante \fBSO_SNDBUF\fP, en un socket. El valor por defecto se calcula mediante la fórmula: .IP .in +4n .EX max(65536, min(4 MB, \fItcp_mem\fP[1]*PAGE_SIZE/128)) .EE .in .IP (En Linux 2.4, el valor predeterminado es 128 kB, que se reduce a 64 kB en sistemas con poca memoria). .RE .TP \fItcp_workaround_signed_windows\fP (Booleano; valor predeterminado: deshabilitado; desde Linux 2.6.26) Si está habilitado, se asume que la ausencia de una opción de escalado de ventana significa que el TCP remoto está roto y trata la ventana como una cantidad con signo. Si está deshabilitado, se asume que el TCP remoto no está roto incluso si no recibimos una opción de escalado de ventana. .SS "Opciones de los conectores" .\" or SOL_TCP on Linux Para establecer u obtener una opción de socket TCP, invoque a \fBgetsockopt\fP(2) para leer o a \fBsetsockopt\fP(2) para escribir la opción con el argumento de nivel de opción establecido en \fBIPPROTO_TCP\fP. A menos que se indique lo contrario, \fIoptval\fP es un puntero a un \fIint\fP. Además, la mayoría de las opciones de socket \fBIPPROTO_IP\fP son válidas en sockets TCP. Consulte \fBip\fP(7) para más información. .P A continuación, se muestra una lista de opciones de socket específicas de TCP. Consulte \fBsockets\fP(7) para obtener más información sobre otras opciones de socket que también son aplicables a sockets TCP. .TP \fBTCP_CONGESTION\fP (desde Linux 2.6.13) .\" commit 5f8ef48d240963093451bcf83df89f1a1364f51d .\" Author: Stephen Hemminger El argumento de esta opción es una cadena. Esta opción permite al usuario configurar el algoritmo de control de congestión TCP que se utilizará por lossockets. Los procesos sin privilegios de administrador solo pueden elegir uno de los algoritmos en \fItcp_allowed_congestion_control\fP (descrito anteriormente). Los procesos con privilegios (\fBCAP_NET_ADMIN\fP) pueden elegir cualquiera de los algoritmos de control de congestión disponibles (véase la descripción de \fItcp_available_congestion_control\fP anteriormente). .TP \fBTCP_CORK\fP (desde Linux 2.2) .\" precisely: since Linux 2.1.127 Si se configura, no se envían tramas parciales. Todas las tramas parciales en cola se envían al desactivar la opción. Esto resulta útil para anteponer encabezados antes de invocar a \fBsendfile\fP(2) o para optimizar el rendimiento. En la implementación actual, existe un límite de 200 milisegundos para el tiempo durante el cual \fBTCP_CORK\fP bloquea la salida. Si se alcanza este límite, los datos en cola se transmiten automáticamente. Esta opción solo se puede combinar con \fBTCP_NODELAY\fP a partir de Linux 2.5.71. No debe utilizarse en código pretenda ser portable. .TP \fBTCP_DEFER_ACCEPT\fP (desde Linux 2.4) .\" Precisely: since Linux 2.3.38 .\" Useful references: .\" http://www.techrepublic.com/article/take-advantage-of-tcp-ip-options-to-optimize-data-transmission/ .\" http://unix.stackexchange.com/questions/94104/real-world-use-of-tcp-defer-accept Permite despertar a un proceso oyente sólo cuando lleguen datos al conector. Toma un valor entero (segundos). Puede limitar el número máximo de intentos que hará TCP para terminar de establecer la conexión. No debería usar esta opción si desea que su código sea transportable. .TP \fBTCP_INFO\fP (desde Linux 2.4) Se utiliza para recopilar información sobre este socket. El núcleo devuelve un \fIstruct tcp_info\fP, tal como se define en el archivo \fI/usr/include/linux/tcp.h\fP. No debe utilizarse si se desea que el código portable. .TP \fBTCP_KEEPCNT\fP (desde Linux 2.4) .\" Precisely: since Linux 2.3.18 Número máximo de sondas \*(lqkeep\-alive\*(rq que TCP debería enviar antes de abandonar la conexión. No debería usar esta opción si desea que su código sea transportable. .TP \fBTCP_KEEPIDLE\fP (desde Linux 2.4) .\" Precisely: since Linux 2.3.18 Tiempo (en segundos) que la conexión necesita estar ociosa antes de que TCP empiece a enviar sondas \*(lqkeep\-alive\*(rq si la opción de conector \fBSO_KEEPALIVE\fP se ha activado en este conector. No debería usar esta opción si desea que su código sea transportable. .TP \fBTCP_KEEPINTVL\fP (desde Linux 2.4) .\" Precisely: since Linux 2.3.18 Tiempo (en segundos) entre sondas \*(lqkeep\-alive\*(rq. No debería usar esta opción si desea que su código sea portable. .TP \fBTCP_LINGER2\fP (desde Linux 2.4) .\" Precisely: since Linux 2.3.41 Tiempo de vida de los sockets huérfanos con estado FIN_WAIT2. Esta opción puede utilizarse para anular la configuración general del sistema en el archivo \fI/proc/sys/net/ipv4/tcp_fin_timeout\fP para este socket. No debe confundirse con la opción de nivel \fBsocket\fP(7) \fBSO_LINGER\fP. No debe utilizarse si se considera la portabilidad del código. .TP \fBTCP_MAXSEG\fP .\" Present in Linux 1.0 Tamaño máximo del segmento para los paquetes TCP salientes. En Linux 2.2 y anteriores, y en Linux 2.6.28 y posteriores, si esta opción se configura antes de establecer la conexión, también cambia el valor MSS anunciado al otro extremo en el paquete inicial. Los valores superiores a la MTU de la interfaz (eventual) no tienen efecto. TCP también impondrá sus límites mínimo y máximo sobre el valor indicado. .TP \fBTCP_NODELAY\fP .\" Present in Linux 1.0 Si se configura, se deshabilita el algoritmo de Nagle. Los segmentos siempre se enviarán lo antes posible, incluso con una pequeña cantidad de datos. Si no se configura, los datos se almacenan en búfer hasta que haya suficiente cantidad para enviar, evitando así el envío frecuente de paquetes pequeños, lo que resulta en una mala utilización de la red. Esta opción se sobrescribe con \fBTCP_CORK\fP; sin embargo, al configurarla, se fuerza a un vaciado de la salida pendiente, incluso si \fBTCP_CORK\fP está configurado. .TP \fBTCP_QUICKACK\fP (desde Linux 2.4.4) Activa el modo \*(lqquickack\*(rq cuando se pone a 1 y lo desactiva cuando se pone a 0. En el modo \*(lqquickack\*(rq, los reconocimientos se envían inmediatamente, antes de retrasarlos si es necesario conforme a un funcionamiento normal de TCP. Esta opción no es permanente, sólo permite un cambio a o desde el modo \*(lqquickack\*(rq. Las operaciones posteriores del protocolo TCP entrarán/saldrán otra vez del modo \*(lqquickack\*(rq dependiendo del procesamiento interno del protocolo y de factores tales como la expiración de plazos de reconocimientos retrasados y la transferencia de datos. No debería usar esta opción si desea que su código sea transportable. .TP \fBTCP_SYNCNT\fP (desde Linux 2.4) .\" Precisely: since Linux 2.3.18 Establece el número de retransmisiones SYN que debe enviar TCP antes de interrumpir el intento de conexión. No puede exceder de 255. No debería usar esta opción si desea que su código sea transportable. .TP \fBTCP_USER_TIMEOUT\fP (desde Linux 2.6.37) .\" commit dca43c75e7e545694a9dd6288553f55c53e2a3a3 .\" Author: Jerry Chu .\" The following text taken nearly verbatim from Jerry Chu's (excellent) .\" commit message. .\" Esta opción toma un \fIentero sin signo\fP como argumento. Cuando el valor es mayor que 0, dará el tiempo máximo en milisegundos que los datos transmitidos pueden permanecer sin confirmar, o que los datos almacenados en búfer pueden permanecer sin transmitir (debido al tamaño de ventana cero), antes de que TCP cierre forzosamente la conexión correspondiente y retorne \fBETIMEDOUT\fP a la aplicación. Si el valor de la opción es 0, TCP utilizará el valor predeterminado del sistema. .IP El aumento de los tiempos de espera del usuario permite que una conexión TCP previva durante periodos prolongados sin conectividad de extremo a extremo. Reducir los tiempos de espera del usuario permite que las aplicaciones den error rápidamente, si así se desea. De lo contrario, el fallo puede tardar hasta 20 minutos con los valores predeterminados del sistema en un entorno WAN normal. .IP Esta opción se puede configurar en cualquier estado de una conexión TCP, pero solo es efectiva durante los estados sincronizados de una conexión (ESTABLISHED, FIN\-WAIT\-1, FIN\-WAIT\-2, CLOSE\-WAIT, CLOSING y LAST\-ACK). Además, al usar la opción de mantenimiento de conexión TCP (\fBSO_KEEPALIVE\fP), \fBTCP_USER_TIMEOUT\fP sobrescribirá el mantenimiento de conexión para determinar cuándo cerrar una conexión debido a un fallo de mantenimiento de conexión. .IP Esta opción no afecta a la retransmisión TCP de un paquete ni al envío de un paquete sonda de mantenimiento de conexión. .IP Esta opción, como muchas otras, será heredada por el socket devuelto por \fBaccept\fP(2), si se configuró en el socket de escucha. .IP Para más detalles sobre la función de tiempo de espera del usuario, consulte los RFC\ 793 y RFC\ 5482 «Opción de tiempo de espera del usuario TCP». .TP \fBTCP_WINDOW_CLAMP\fP (desde Linux 2.4) .\" Precisely: since Linux 2.3.41 Limita el tamaño de la ventana anunciada a este valor. El núcleo impone un tamaño mínimo de SOCK_MIN_RCVBUF/2. No debería usar esta opción si desea que su código sea transportable. .TP \fBTCP_FASTOPEN\fP (desde Linux 3.6) Esta opción habilita la apertura rápida (RFC\ 7413) en el socket de escucha. El valor especifica la longitud máxima de los SYN pendientes (similar al argumento de retraso en \fBlisten\fP(2)). Una vez habilitado, el socket de escucha otorga la cookie de Apertura Rápida TCP al SYN entrante con la opción de Apertura Rápida TCP. .IP Más importante aún, acepta los datos en SYN con una cookie de Apertura Rápida válida y responde con un SYN\-ACK, confirmando tanto los datos como la secuencia SYN. \fBaccept\fP(2) devuelve un socket disponible para lectura y escritura cuando el protocolo de enlace aún no se ha completado. Por lo tanto, el intercambio de datos puede comenzar antes de que se complete el protocolo de enlace. Esta opción requiere habilitar la compatibilidad del lado del servidor en sysctl \fInet.ipv4.tcp_fastopen\fP (véase más arriba). Para obtener información sobre la compatibilidad del lado del cliente con Apertura Rápida TCP, consulte \fBsend\fP(2), \fBMSG_FASTOPEN\fP o \fBTCP_FASTOPEN_CONNECT\fP más adelante. .TP \fBTCP_FASTOPEN_CONNECT\fP (desde Linux 4.11) Esta opción habilita una forma alternativa de realizar Apertura Rápida en el lado activo (cliente). Cuando esta opción está habilitada, \fBconnect\fP(2) se comportará de manera diferente dependiendo de si hay una cookie de apertura rápida disponible para el destino. .IP Si no hay una cookie disponible (es decir, el primer contacto con el destino), \fBconnect\fP(2) actuará como de costumbre enviando un SYN inmediatamente, aunque este SYN incluiría una opción de cookie de Apertura Rápida vacía para solicitar una cookie. .IP Si hay una cookie disponible, \fBconnect\fP(2) devolvería 0 inmediatamente, pero la transmisión del SYN se aplaza. Un \fBwrite\fP(2) o \fBsendmsg\fP(2) posterior activaría un SYN con datos más una cookie en la opción de Apertura Rápida. Es decit, la operación de conexión se aplaza hasta que se proporcionen los datos. .IP \fBObserve:\fP Aunque esta opción está diseñada para mayor comodidad, habilitarla modifica el comportamiento y ciertas llamadas del sistema podrían establecer valores \fIerrno\fP diferentes. Con una cookie presente, se debe llamar a \fBwrite\fP(2) o \fBsendmsg\fP(2) inmediatamente después de \fBconnect\fP(2) para enviar SYN + datos para completar el 3WHS (acrónimo que significa «saludo de 3 partes») y establecer la conexión. Si se llama a \fBread\fP(2) justo después de \fBconnect\fP(2) sin \fBwrite\fP(2) provocará que el socket bloqueador se bloquee indefinidamente. .IP La aplicación debe configurar la opción de socket \fBTCP_FASTOPEN_CONNECT\fP antes de \fBwrite\fP(2) o \fBsendmsg\fP(2), o llamar directamente a \fBwrite\fP(2) o \fBsendmsg\fP(2) con el indicador \fBMSG_FASTOPEN\fP, en lugar de usar ambos en la misma conexión. .IP Este es el flujo de llamada típico con esta nueva opción: .IP .in +4n .EX s = socket(); setsockopt(s, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, 1, ...); connect(s); write(s); /* write() debería ir siempre después de connect() * para hacer que SYN salga. */ read(s)/write(s); /* ... */ close(s); .EE .in .SS "API de sockets" TCP ofrece compatibilidad limitada con datos fuera de banda, en forma de datos urgentes (un solo byte). En Linux, esto significa que si el otro extremo envía datos fuera de banda más recientes, los datos urgentes más antiguos se insertan como datos normales en el flujo (incluso si \fBSO_OOBINLINE\fP no está configurado). Esto difiere del comportamiento de las pilas basadas en BSD. .P Por defecto, Linux utiliza la interpretación compatible con BSD del campo de puntero urgente. Esto incumple lo dispuesto en el RFC 1122, pero es necesario para la interoperabilidad con otras pilas. Se puede modificar en \fI/proc/sys/net/ipv4/tcp_stdurg\fP. .P Es posible acceder a datos fuera de banda mediante el indicador \fBMSG_PEEK\fP de \fBrecv\fP(2). .P Desde Linux 2.4, Linux admite el uso de \fBMSG_TRUNC\fP en el argumento \fIflags\fP de \fBrecv\fP(2) (y \fBrecvmsg\fP(2)). Este indicador hace que los bytes de datos recibidos se descarten, en lugar de devolverse a un búfer proporcionado por el emisor. Desde Linux 2.4.4, \fBMSG_TRUNC\fP también tiene este efecto cuando se utiliza junto con \fBMSG_OOB\fP para recibir datos fuera de banda. .SS Ioctls Las siguientes llamadas a \fBioctl\fP(2) devuelven información en \fIvalor\fP. La sintaxis correcta es: .P .RS .nf \fBint\fP\fI valor\fP\fB;\fP \fIerror\fP\fB = ioctl(\fP\fItcp_socket\fP\fB, \fP\fIioctl_type\fP\fB, &\fP\fIvalor\fP\fB);\fP .fi .RE .P \fIioctl_type\fP es una de las siguientes: .TP \fBSIOCINQ\fP .\" FIXME https://www.sourceware.org/bugzilla/show_bug.cgi?id=12002, .\" filed 2010-09-10, may cause SIOCINQ to be defined in glibc headers Devuelve la cantidad de datos no leídos en cola en el búfer de recepción. El socket no debe estar en estado LISTEN, de lo contrario se devuelve un error (\fBEINVAL\fP). \fBSIOCINQ\fP se define en \fI\fP. Como alternativa, puede emplearse el sinónimo \fBFIONREAD\fP, definido en \fI\fP. .TP \fBSIOCATMARK\fP Devuelve verdadero (es decir, \fIvalor\fP es distinto de cero) si el flujo de datos entrante se encuentra en la marca de urgencia. .IP Si la opción de socket \fBSO_OOBINLINE\fP está activada y \fBSIOCATMARK\fP devuelve verdadero, la siguiente lectura del socket devolverá los datos urgentes. Si la opción de socket \fBSO_OOBINLINE\fP no está establecida y \fBSIOCATMARK\fP devuelve verdadero, la siguiente lectura del socket devolverá los bytes posteriores a los datos urgentes (para leer los datos urgentes se requiere el indicador \fBrecv(MSG_OOB)\fP). .IP Una lectura nunca sobrepasa la marca de urgencia. Si se informa a una aplicación de la presencia de datos urgentes mediante \fBselect\fP(2) (mediante el argumento \fIexceptfds\fP) o mediante la entrega de una señal \fBSIGURG\fP, puede avanzar hasta la marca mediante un bucle que prueba repetidamente \fBSIOCATMARK\fP y realiza una lectura (solicitando cualquier número de bytes) siempre que \fBSIOCATMARK\fP devuelva falso. .TP \fBSIOCOUTQ\fP .\" FIXME . https://www.sourceware.org/bugzilla/show_bug.cgi?id=12002, .\" filed 2010-09-10, may cause SIOCOUTQ to be defined in glibc headers Devuelve la cantidad de datos no enviados en la cola de envío del socket. El socket no debe estar en estado LISTEN; de lo contrario, se devuelve un error (\fBEINVAL\fP). \fBSIOCOUTQ\fP se define en \fI\fP. Como alternativa, puede usar el sinónimo \fBTIOCOUTQ\fP, definido en \fI\fP. .SS "Gestión de errores" Cuando se produce un error de red, TCP intenta reenviar el paquete. Si no tiene éxito después de un cierto tiempo, informa o bien de un error \fBETIMEDOUT\fP o bien del último error recibido sobre esta conexión. .P Algunas aplicaciones requieren una notificación de errores más rápida. Esto se puede habilitar con la opción de socket \fBIP_RECVERR\fP de nivel \fBIPPROTO_IP\fP. Cuando esta opción está habilitada, todos los errores entrantes se pasan inmediatamente al programa de usuario. Use esta opción con precaución, ya que reduce la tolerancia de TCP a los cambios de enrutamiento y otras condiciones normales de red. .SH ERRORES .TP \fBEAFNOTSUPPORT\fP El tipo de dirección de conector pasado en \fIsin_family\fP no es \fBAF_INET\fP. .TP \fBEPIPE\fP El otro extremo ha cerrado el conector inesperadamente o se ha intentado leer de un conector desconectado. .TP \fBETIMEDOUT\fP El otro extremo no ha reconocido los datos retransmitidos después de cierto tiempo. .P TCP también puede devolver cualquier error definido por \fBip\fP(7) o la capa de conectores genéricos. .SH VERSIONES La compatibilidad con la Notificación Explícita de Congestión, en \fBsendfile\fP(2), soporte para reordenamiento y algunas extensiones SACK (DSACK) se introdujeron en Linux 2.4. La compatibilidad con el acuse de recibo de reenvío (FACK), el reciclaje TIME_WAIT y las opciones de socket keepalive por conexión se introdujeron en Linux 2.3. .SH ERRORES No se han documentado todos los errores. .P .\" Only a single Linux kernel version is described .\" Info for 2.2 was lost. Should be added again, .\" or put into a separate page. .\" .SH AUTHORS .\" This man page was originally written by Andi Kleen. .\" It was updated for 2.4 by Nivedita Singhvi with input from .\" Alexey Kuznetsov's Documentation/networking/ip-sysctl.txt .\" document. No se ha descrito IPv6. .SH "VÉASE TAMBIÉN" \fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBgetsockopt\fP(2), \fBlisten\fP(2), \fBrecvmsg\fP(2), \fBsendfile\fP(2), \fBsendmsg\fP(2), \fBsocket\fP(2), \fBip\fP(7), \fBsocket\fP(7) .P Documentación del código fuente del núcleo \fIDocumentation/networking/ip\-sysctl.txt\fP. .P RFC\ 793 para la especificación de TCP. .br RFC\ 1122 para los requisitos de TCP y una descripción del algoritmo Nagle. .br RFC\ 1323 para las opciones TCP de fechado y de ampliación de ventana. .br RFC\ 1337 para una descripción de los peligros que conlleva el \*(lqasesinato\*(rq de los conectores TIME_WAIT. .br RFC\ 3168 para una descripción de la Notificación Explícita de la Congestión. .br RFC\ 2581 para los algoritmos TCP de control de la congestión. .br RFC\ 2018 y RFC\ 2883 para SACK y sus extensiones. .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Juan Piernas y Marcos Fouces . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .