tcp(7) Miscellaneous Information Manual tcp(7) NOMBRE tcp - Protocolo TCP SINOPSIS #include #include #include tcp_socket = socket(AF_INET, SOCK_STREAM, 0); DESCRIPCION Esta es una implementacion del protocolo TCP definido en RFC 793, RFC 1122 y RFC 2001 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 socket TCP recien creado no tiene direccion remota ni local ni esta completamente definido. Para crear una conexion TCP saliente con otro socket TCP, se utiliza connect(2). Para recibir nuevas conexiones entrantes, primero conecte el socket con bind(2) a una direccion y puerto locales y luego invoque a listen(2) para que este a la escucha. Posteriormente, se puede aceptar un nuevo socket para cada conexion entrante mediante accept(2). Un socket al que se le ha llamado correctamente accept(2) o connect(2) esta completamente definido y ya puede transmitir datos. No se podran transmitir datos en sockets que esten a la escucha o que aun no estan conectados. Linux admite extensiones TCP de alto rendimiento RFC 1323. Estas incluyen la Proteccion contra Numeros 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, sera necesario aumentar el tamano del bufer de envio y recepcion. Estos se pueden configurar globalmente con los archivos /proc/sys/net/ipv4/tcp_wmem e /proc/sys/net/ipv4/tcp_rmem, o en sockets individuales mediante las opciones de socket SO_SNDBUF y SO_RCVBUF con la llamada setsockopt(2). Los tamanos maximos de los buferes de socket declarados mediante los mecanismos SO_SNDBUF y SO_RCVBUF estan limitados por los valores de los archivos /proc/sys/net/core/rmem_max e /proc/sys/net/core/wmem_max. Tenga en cuenta que TCP asigna el doble del tamano del bufer solicitado en la llamada setsockopt(2), por lo que una llamada getsockopt(2) posterior no devolvera el mismo tamano de bufer solicitado en la llamada setsockopt(2). TCP utiliza el espacio adicional para fines administrativos y para las estructuras internas del nucleo. Los valores del archivo /proc reflejan los tamanos mayores en comparacion con las ventanas TCP reales. En conexiones individuales, el tamano del bufer del socket debe configurarse antes de las llamadas listen(2) o connect(2) para que surta efecto. Consulte socket(7) para obtener mas informacion. TCP admite datos urgentes. Los datos urgentes se utilizan para indicar al receptor que algun mensaje importante forma parte del flujo de datos y que debe procesarse lo antes posible. Para enviar datos urgentes, debe indicarse la opcion MSG_OOB en send(2). Cuando se reciben datos urgentes, el nucleo envia una senal SIGURG al proceso o grupo de procesos configurado como <> del socket mediante las ioctls SIOCSPGRP o FIOSETOWN (o la operacion fcntl(2) F_SETOWN definida en POSIX.1). Cuando la opcion de socket SO_OOBINLINE esta habilitada, los datos urgentes se introducen en el flujo de datos normal (un programa podra comprobar su ubicacion mediante la ioctl SIOCATMARK que se describe mas adelante); de lo contrario, solo se pueden recibir cuando el indicador MSG_OOB esta configurado para recv(2) o recvmsg(2). Cuando existan datos obsoletos, select(2) senala el descriptor de archivo como en condiciones ecepcionales y poll (2) indica un evento POLLPRI. 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. Interfaces /proc Es posible acceder a los parametros TCP aplicables a todo el sistema a traves del archivo /proc/sys/net/ipv4/. Tambien muchas interfaces IP en /proc son aplicables tambien a TCP, consulte ip(7). Las variables de tipo Booleano pueden tomar un valor entero distinto de cero ("verdadero") para indicar que la opcion correspondiente esta activada o un valor cero ("falso") para indicar que esta inactiva. tcp_abc (Enterio; por defecto:0; Linux 2.6.15 hasta Linux 3.8) Controla el recuento de bytes apropiado (ABC), definido en el RFC 3465. ABC es una forma de aumentar la ventana de congestion (cwnd) mas lentamente en respuesta a acuses de recibo parciales. Los valores posibles son: 0 Incrementa cwnd una vez por cada confirmacion (sin ABC) 1 Incrementa cwnd una vez por cada confirmacion de segmento completo 2 Permite incrementar cwnd en dos si la confirmacion es de dos segmentos para compensar las confirmaciones con retraso. tcp_abort_on_overflow (Booleano; predeterminado: deshabilitado; a partir de Linux 2.4) 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 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 (Entero; predeterminado: 2; a partir de Linux 2.4) Contabiliza la sibrecarga del buffer como bytes/2^tcp_adv_win_scale, si tcp_adv_win_scale es mayor que cero o bien bytes-bytes/2^(-tcp_adv_win_scale), si tcp_adv_win_scale es menor o igual a cero. 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_allowed_congestion_control (Cadena; predeterminado: ver texto; a partir de Linux 2.4.20) Muestra/configura las opciones del algoritmo de control de congestion disponibles para procesos sin privilegios (consulte la descripcion de la opcion de socket TCP_CONGESTION). Los elementos de la lista se separan por espacios en blanco y terminan con un caracter de nueva linea. La lista es un subconjunto de las que se listan en tcp_available_congestion_control. El valor predeterminado de esta lista es <> mas la configuracion predeterminada de tcp_congestion_control. tcp_autocorking (Booleano; por defecto: activado; desde Linux 3.14) Si esta opcion esta habilitada, el nucleo intenta fusionar mensajes pequenos (de llamadas consecutivas a write(2) y sendmsg(2)) tanto como sea posible para reducir el numero total de paquetes enviados. La fusion se realiza si al menos un paquete previo del flujo esta esperando en las colas de Qdisc o en la cola de transmision del dispositivo. Las aplicaciones aun pueden usar la opcion de socket TCP_CORK para obtener un comportamiento optimo cuando saben como/cuando desconectan sus sockets. tcp_available_congestion_control (Cadena; solo lectura; a partir de Linux 2.4.20) Muestra una lista de los algoritmos de control de congestion registrados. Los elementos de la lista estan separados por espacios en blanco y terminan con un caracter de nueva linea. Esta lista limita la lista en tcp_allowed_congestion_control. Es posible que haya mas algoritmos de control de congestion disponibles como modulos, pero no cargados. tcp_app_win (entero; valor predeterminado: 31; a partir de Linux 2.4) Esta variable define cuantos bytes de la ventana TCP se reservan para el gasto del almacenamiento temporal. Un maximo de (window/2^tcp_app_win, mss) bytes en la ventana estan reservados para el bufer de la aplicacion. Un valor de 0 implica que no se reserva ninguna cantidad. tcp_base_mss (Entero; por defecto: 512; a partir de Linux 2.6.17) El valor inicial de search_low que utilizara la capa de paquetizacion para el descubrimiento de la MTU de ruta (sondeo de MTU). Si el sondeo de MTU esta habilitado, este sera el MSS inicial utilizado por la conexion. tcp_bic (Booleano; predeterminado: deshabilitado; Linux 2.4.27/2.6.6 a Linux 2.6.13) Habilita el algoritmo de control de congestion 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 busqueda binaria. Cuando la ventana de congestion es grande, el aumento incremental con un incremento grande garantiza una equidad lineal de RTT, asi como una buena escalabilidad. En ventanas de congestion pequenas, el aumento de busqueda binaria proporciona compatibilidad con TCP. tcp_bic_low_window (entero; valor predeterminado: 14; Linux 2.4.27/2.6.6 a Linux 2.6.13) Establece el umbral de ventana (en paquetes) donde BIC TCP comienza a ajustar la ventana de congestion. Por debajo de este umbral, BIC TCP se comporta igual que el TCP Reno predeterminado. tcp_bic_fast_convergence (booleano; valor predeterminado: habilitado; Linux 2.4.27/2.6.6 a Linux 2.6.13) Fuerza a BIC TCP a responder mas rapidamente a los cambios en la ventana de congestion. Permite que dos flujos que comparten la misma conexion converjan mas rapidamente. tcp_congestion_control (Cadena;por defecto: ver texto; a partir de Linux 2.4.13) Establece el algoritmo de control de congestion predeterminado que se utilizara en las nuevas conexiones. El algoritmo <> siempre esta disponible, pero pueden darse opciones adicionales segun la configuracion del nucleo. El valor predeterminado de este archivo se establece como parte de la configuracion del nucleo. tcp_dma_copybreak (numero entero; predeterminado:4096; a partir de Linux 2.6.24). Limite inferior, en bytes, del tamano de las lecturas de socket que se transferiran a un motor de copia DMA, si existe uno en el sistema y se configuro el nucleo con la opcion CONFIG_NET_DMA. tcp_dsack (booleano; por defecto:activado; a partir de Linux 2.4). Activa el soporte para SACK Duplicados TCP segun se describen en RFC 2883. tcp_fastopen (mascar a de bits; por defecto: 0x1; a partir de Linux 3.7) Habilita la compatibilidad con la Apertura Rapida RFC 7413. El indicador se utiliza como un mapa de bits con los siguientes valores: 0x1 Activa el soporte Fast Open en la parte del cliente 0x2 Activa el soporte de Fast Open en la parte del servidor 0x4 Permite al cliente transmitir datos en SYN sin la opcion Fast Open 0x200 Permite al servidor aceptar datos SYN sin la opcion Fast Open 0x400 Activa Fast Open en todos los que estan a la escucha sin la opcion TCP_FASTOPEN tcp_fastopen_key (desde Linux 3.7) Establece la clave de Apertura Rapida RFC 7413 del servidor para generar una cookie cuando la compatibilidad con Apertura Rapida del servidor este habilitada. tcp_ecn (numero entero; por defecto:consulte mas abajo; a partir de Linux 2.4) Activa la Notificacion Explicita de la Congestion (RFC 3168). Este archivo puede tener uno de los siguientes valores: 0 Desactiva ECN. Ni se inicia, ni se acepta ECN. Predeterminado a partir de Linux 2.6.30. 1 Habilita ECN cuando lo soliciten las conexiones entrantes y tambien lo solicita en los intentos de conexion salientes. 2 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. Al habilitarse, la conectividad a algunos destinos podria verse afectada debido a la presencia de modulos intermedios antiguos y con un deficiente funcionamiento a lo largo de la ruta, lo que provoca la perdida de conexiones. Sin embargo, para facilitar y fomentar la implementacion con la opcion 1 y solucionar este tipo de equipos con errores, se ha introducido la opcion tcp_ecn_fallback. tcp_ecn_fallback (Booleano; por defecto: activado; a partir de Linux 4.1) Habilita la opcion de respaldo segun RFC 3168, Seccion 6.1.1.1. Al habilitarse, los SYN salientes de configuracion ECN que agoten el tiempo de espera dentro del tiempo de espera normal de retransmision de SYN se reenviaran con CWR y ECE desactivados. tcp_fack (booleano; predeterminado: habilitado; desde Linux 2.2) Activa el soporte para el Reconocimiento Adelantado ("Forward Acknowledgement") TCP. tcp_fin_timeout (entero; predeterminado: 60; desde Linux 2.2) Esto especifica cuantos segundos se debe esperar para un paquete FIN final antes de que el socket se cierre forzosamente. Esto constituye una violacion estricta de la especificacion TCP, pero es necesario para evitar ataques de denegacion de servicio. En Linux 2.2, el valor predeterminado era 180. tcp_frto (entero; valor predeterminado: consulte mas adelante; desde Linux 2.4.21/2.6) Habilita F-RTO, un algoritmo de recuperacion mejorado para agotamientos de tiempos de espera de retransmision TCP (RTO). Resulta especialmente beneficioso en entornos inalambricos donde la perdida de paquetes suele deberse a interferencias de radio aleatorias, en lugar de a la congestion del enrutador intermedio. Consulte RFC 4138 para obtener mas informacion. Este archivo puede tener uno de los siguientes valores: 0 Deshabilitado. Este era el valor predeterminado hasta Linux 2.6.23 inclusive. 1 La version basica del algoritmo F-RTO esta habilitada. 2 Habilita F-RTO mejorado con SACK si el flujo utiliza SACK. La version basica tambien se puede usar cuando se utiliza SACK, aunque en ese caso existen escenarios en los que F-RTO interactua de forma deficiente con el conteo de paquetes del flujo TCP con SACK habilitado. Este valor es el predeterminado desde Linux 2.6.24. Antes de Linux 2.6.22, este parametro era un valor booleano, compatible unicamente con los valores 0 y 1 superiores. tcp_frto_response (entero; valor predeterminado: 0; desde Linux 2.6.22) Cuando F-RTO detecta que un agotamiento de tiempo de espera de retransmision de TCP es falso (es decir, el agotamiento se habria evitado si TCP hubiera establecido un tiempo de espera de retransmision mayor), TCP tiene varias opciones para proceder. Los valores posibles son: 0 Basada en la reduccion a la mitad de la tasa; una respuesta suave y conservadora resulta en la reduccion a la mitad de la ventana de congestion (cwnd) y del umbral de inicio lento (ssthresh) despues de un RTT. 1 Respuesta muy conservadora. No se recomienda porque -aunque es valida- interactua mal con el resto de TCP de Linux; reduce inmediatamente a la mitad cwnd e ssthresh. 2 Respuesta agresiva. Deshace las medidas de control de congestion que ahora se consideran innecesarias (ignorando la posibilidad de una retransmision perdida que requeriria mayor precaucion por parte de TCP); cwnd e ssthresh se restauran a los valores previos al agotamiento del tiempo de espera. tcp_keepalive_intvl (entero; valor predeterminado: 75; desde Linux 2.4) Numero de segundos entre dos sondas "keep-alive" TCP. tcp_keepalive_probes (entero; valor predeterminado: 9; desde Linux 2.2) 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. tcp_keepalive_time (entero; valor predeterminado: 7200; desde Linux 2.2) 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_low_latency (Booleano; valor predeterminado: deshabilitado; desde Linux 2.4.21/2.6; obsoleto desde Linux 4.14) Si esta habilitada, la pila TCP toma decisiones que priorizan una latencia menor en lugar de un mayor rendimiento. Si esta opcion esta deshabilitada, se prioriza un mayor rendimiento. Un ejemplo de una aplicacion donde se deberia cambiar este valor predeterminado seria un cluster de computo Beowulf. A partir de Linux 4.14, este archivo aun existe, pero su valor se ignora. tcp_max_orphans (entero; valor predeterminado: ver mas abajo; desde Linux 2.4) Numero maximo de sockets TCP huerfanos (no asociados a ningun identificador de archivo de usuario) permitidos en el sistema. Cuando se supera este numero, la conexion huerfana se restablece y se muestra una advertencia. Este limite existe unicamente para evitar ataques de denegacion de servicio simples. No se recomienda reducirlo. Las condiciones de red podrian requerir un incremento en el numero de huerfanos permitidos, pero tenga en cuenta que cada uno puede ocupar hasta ~64 kB de memoria no intercambiable. El valor inicial predeterminado es igual al parametro del kernel NR_FILE. Este valor inicial predeterminado se ajusta segun la memoria del sistema. tcp_max_syn_backlog (entero; valor predeterminado: ver mas abajo; desde Linux 2.2) 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 (>= 128 MB) y se reduce a 128 en aquellos sistemas con muy poca memoria (<= 32 MB). Antes de Linux 2.6.20, se recomendaba que, si era necesario aumentar este valor por encima de 1024, se modificara el tamano de la tabla hash SYNACK (TCP_SYNQ_HSIZE) en include/net/tcp.h para mantenerlo y se recompilara el nucleo. En Linux 2.6.20, se elimino el tamano fijo de TCP_SYNQ_HSIZE en favor de un tamano dinamico. TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog Y el nucleo debe recompilarse. En Linux 2.6.20, se elimino el tamano fijo TCP_SYNQ_HSIZE en favor de un tamano dinamico. tcp_max_tw_buckets (entero; predeterminado: ver mas abajo; desde Linux 2.4) Numero maximo de conectores en el estado TIME_WAIT admitidos por el sistema. Este limite existe solo para evitar ataques denial-of-service 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_moderate_rcvbuf (booleano; predeterminado: habilitado; desde Linux 2.4.17/2.6.7) Si esta habilitado, TCP realiza el ajuste del bufer de recepcion, intentando cuadrar automaticamente su tamano (no mayor que tcp_rmem[2]) para que coincida con el tamano requerido por la ruta para un rendimiento completo. tcp_mem (desde Linux 2.4) Es un vector de 3 enteros: [bajo, presion, alto]. Estos limites, medidos en unidades del tamano de pagina 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 poca memoria para esto, limitada a unos 900 megabytes en sistemas de 32 bits. Los sistemas de 64 bits no tienen esta limitacion. 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_mtu_probing (entero; valor predeterminado: 0; desde Linux 2.6.17) Este parametro controla el descubrimiento de la MTU de la ruta de la capa de empaquetamiento de TCP. Se pueden asignar los siguientes valores al archivo: 0 Desactivado 1 Deshabilitado por defecto, habilitado al detectar un agujero negro ICMP. 2 Siempre habilitado, usa el MSS inicial de tcp_base_mss. tcp_no_metrics_save (booleano; valor predeterminado: deshabilitado; desde Linux 2.6.6) Por defecto, TCP guarda varias metricas de conexion en la cache de ruta cuando se cierra la conexion, de modo que las conexiones que se establezcan proximamente puedan emplearlas para establecer las condiciones iniciales. Esto suele mejorar el rendimiento general, pero en ocasiones puede reducirlo. Si tcp_no_metrics_save esta habilitado, TCP no almacenara en cache las metricas al cerrar las conexiones. tcp_orphan_retries (numero entero; por defecto: 8; a partir de Linux 2.4) Numero maximo de intentos realizados para sondear el otro extremo de una conexion que ha sido cerrada por nuestro extremo. tcp_reordering (numero entero; por defecto:3; a partir de Linux 2.4) 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. 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 (Booleano; por defecto: activado; a partir de Linux 2.2) Intentar enviar paquetes de tamano maximo durante las retransmisiones. tcp_retries1 (numero entero; por defecto:3; a partir de Linux 2.2) 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 entero; por defecto:15; a partir de Linux 2.2) 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 RFC 1122 normalmente se considera demasiado pequeno. tcp_rfc1337 (Booleano; por defecto:desactivado; a partir de Linux 2.2) Activa el comportamiento TCP que se ajusta al RFC 1337. 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 (desde Linux 2.4) 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 valores, dependiendo de la memoria disponible en el sistema. min Tamano minimo del bufer de recepcion utilizado por cada socket TCP. El valor predeterminado es el tamano de pagina del sistema. (En Linux 2.4, el valor predeterminado es 4 kB, reducido a PAGE_SIZE 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 tamano se realicen correctamente. No se utiliza para limitar el tamano del bufer de recepcion declarado mediante SO_RCVBUF en un socket. default Tamano predeterminado del bufer de recepcion para un socket TCP. Este valor sobrescribe el tamano predeterminado inicial del bufer del net.core.rmem_default global generico definido para todos los protocolos. El valor predeterminado es 87380 bytes. (En Linux 2.4, este valor se reducira a 43689 en sistemas con poca memoria). Si se desean tamanos de bufer de recepcion mayores, se debera aumentar este valor (para que afecte a todos los sockets). Para emplear ventanas TCP grandes, se debe habilitar net.ipv4.tcp_window_scaling (valor predeterminado). max Tamano maximo del bufer de recepcion utilizado por cada socket TCP. Este valor no anula el valor global net.core.rmem_max. No se utiliza para limitar el tamano del bufer de recepcion declarado mediante SO_RCVBUF en un socket. El valor predeterminado se calcula mediante la formula: max(87380, min(4 MB, tcp_mem[1]*PAGE_SIZE/128)) (En Linux 2.4, el valor predeterminado es 87380*2 bytes, reducido a 87380 en sistemas con poca memoria). tcp_sack (Booleano; valor predeterminado: habilitado; desde Linux 2.2) Activa los Reconocimientos Selectivos TCP descritos por el RFC 2018. tcp_slow_start_after_idle (Booleano; valor predeterminado: habilitado; desde Linux 2.6.18) Si esta habilitado, se cine a lo indicado en el RFC 2861 y agota el tiempo de espera de la ventana de congestion tras un periodo de inactividad. Un periodo de inactividad se define como el RTO (tiempo de espera de retransmision) actual. Si esta deshabilitado, no se agota el tiempo de espera de la ventana de congestion tras un periodo de inactividad. tcp_stdurg (Booleano; valor predeterminado: deshabilitado; desde Linux 2.2) Si esta opcion esta habilitada, se utiliza la interpretacion RFC 1122 del campo de puntero urgente de TCP. Segun esta interpretacion, el puntero urgente apunta al ultimo byte de los datos urgentes. Si esta deshabilitada, se utiliza la interpretacion compatible con BSD del puntero urgente: el puntero urgente apunta al primer byte despues de los datos urgentes. Habilitar esta opcion puede causar problemas de interoperabilidad. tcp_syn_retries (entero; predeterminado: 6; desde Linux 2.2) El numero maximo de veces que se retransmitiran los SYN iniciales en un intento de conexion 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 calculo basado en otros parametros del nucleo, correspondia a aproximadamente 180 segundos. tcp_synack_retries (entero; predeterminado: 5; desde Linux 2.2) Numero maximo de veces que se retransmitira un segmento SYN/ACK para una conexion TCP pasiva. Este numero no deberia ser mayor que 255. tcp_syncookies (entero; predeterminado: 1; desde Linux 2.2) Habilita las TCP syncookies. El nucleo debe compilarse con CONFIG_SYN_COOKIES. La funcion syncookies intenta proteger un socket de un ataque de inundacion SYN. Debe usarse como ultimo recurso, si es que se usa. Esto constituye una violacion del protocolo TCP y entra en conflicto con otras areas de TCP, como las extensiones TCP. Puede causar problemas a clientes y reles. No se recomienda como mecanismo de ajuste para servidores con mucha carga, para ayudar con condiciones de sobrecarga o configuracion incorrecta. Para alternativas recomendadas, consulte tcp_max_syn_backlog, tcp_synack_retries e tcp_abort_on_overflow. Establezcalo en uno de los siguientes valores: 0 Desactiva TCP syncookies. 1 Envia cookies de sincronizacion cuando la cola de sincronizacion pendiente de un socket se desborda. 2 (desde Linux 3.12) Envia cookies de sincronizacion incondicionalmente. Esto puede ser util para pruebas de red. tcp_timestamps (entero; predeterminado: 1; desde Linux 2.2) Establece uno de los siguientes valores para habilitar o deshabilitar las marcas de tiempo TCP segun el RFC 1323: 0 Deshabilita las marcas de tiempo. 1 Habilita las marcas de tiempo segun la definicion de RFC 1323 y utiliza un desplazamiento aleatorio para cada conexion en lugar de usar solo la hora actual. 2 Igual que el valor 1, pero sin desplazamientos aleatorios. Establecer tcp_timestamps con este valor es relevante desde Linux 4.10. tcp_tso_win_divisor (entero; valor predeterminado: 3; desde Linux 2.6.9) Este parametro controla el porcentaje de la ventana de congestion que puede consumir una sola trama de Descarga de Segmentacion TCP (TSO). La configuracion de este parametro busca un equilibrio entre la capacidad de rafaga y la creacion de tramas TSO mas grandes. tcp_tw_recycle (booleano; valor predeterminado: deshabilitado; desde Linux 2.4 hasta Linux 4.11) Habilita el reciclaje rapido de sockets TIME_WAIT. No se recomienda habilitar esta opcion, ya que la IP remota podria no usar marcas de tiempo que aumenten de forma previsible (dispositivos con NAT, dispositivos con desplazamientos de marca de tiempo por conexion). Consulte los RFC 1323 (PAWS) y RFC 6191. tcp_tw_reuse (Booleano; valor predeterminado: deshabilitado; desde Linux 2.4.19/2.6) 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 tecnicos. tcp_vegas_cong_avoid (Booleano; valor predeterminado: deshabilitado; desde Linux 2.2 hasta Linux 2.6.13) Habilita el algoritmo de prevencion de congestion TCP Vegas. TCP Vegas es una modificacion de TCP que solo afecta al remitente y que anticipa la aparicion de congestion estimando el ancho de banda. TCP Vegas ajusta la velocidad de envio modificando la ventana de congestion. TCP Vegas deberia proporcionar una menor perdida de paquetes, pero no es tan agresivo como TCP Reno. tcp_westwood (Booleano; valor predeterminado: deshabilitado; Linux 2.4.26/2.6.3 a Linux 2.6.13) Habilita el algoritmo de control de congestion TCP Westwood+. TCP Westwood+ es una modificacion de la pila de protocolos TCP Reno, que solo afecta al remitente, y que optimiza el rendimiento del control de congestion TCP. Se basa en la estimacion del ancho de banda de extremo a extremo para establecer la ventana de congestion y un umbral de inicio lento tras una congestion. Con esta estimacion, TCP Westwood+ establece de forma flexible un umbral de inicio lento y una ventana de congestion que tiene en cuenta el ancho de banda utilizado en el momento de la congestion. TCP Westwood+ aumenta significativamente la equidad con respecto a TCP Reno en redes cableadas y el rendimiento en enlaces inalambricos. tcp_window_scaling (Booleano; valor predeterminado: habilitado; desde Linux 2.2) Activa la ampliacion de ventanas TCP segun el RFC 1323. Esta caracteristica permite el uso de una ventana grande (> 64 kB) 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 64 kB. 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 (desde Linux 2.4) 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 valores, dependiendo de la memoria disponible en el sistema. min Tamano minimo del bufer de envio utilizado por cada socket TCP. El valor predeterminado es el tamano de pagina 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 tamano se realicen correctamente. No se utiliza para limitar el tamano del bufer de envio declarado mediante SO_SNDBUF en un socket. default Tamano predeterminado del bufer de envio para un socket TCP. Este valor sobrescribe el tamano predeterminado inicial del bufer del valor generico global /proc/sys/net/core/wmem_default definido para todos los protocolos. El valor predeterminado es 16 kB. Si se desean tamanos de bufer de envio mayores, se debe aumentar este valor (para que afecte a todos los sockets). Para emplear ventanas TCP grandes, /proc/sys/net/ipv4/tcp_window_scaling debe establecerse en un valor distinto de cero (predeterminado). max Tamano maximo del bufer de envio utilizado por cada socket TCP. Este valor no sobrescribe el valor de /proc/sys/net/core/wmem_max. No se utiliza para limitar el tamano del bufer de envio, declarado mediante SO_SNDBUF, en un socket. El valor por defecto se calcula mediante la formula: max(65536, min(4 MB, tcp_mem[1]*PAGE_SIZE/128)) (En Linux 2.4, el valor predeterminado es 128 kB, que se reduce a 64 kB en sistemas con poca memoria). tcp_workaround_signed_windows (Booleano; valor predeterminado: deshabilitado; desde Linux 2.6.26) Si esta habilitado, se asume que la ausencia de una opcion de escalado de ventana significa que el TCP remoto esta roto y trata la ventana como una cantidad con signo. Si esta deshabilitado, se asume que el TCP remoto no esta roto incluso si no recibimos una opcion de escalado de ventana. Opciones de los conectores Para establecer u obtener una opcion de socket TCP, invoque a getsockopt(2) para leer o a setsockopt(2) para escribir la opcion con el argumento de nivel de opcion establecido en IPPROTO_TCP. A menos que se indique lo contrario, optval es un puntero a un int. Ademas, la mayoria de las opciones de socket IPPROTO_IP son validas en sockets TCP. Consulte ip(7) para mas informacion. A continuacion, se muestra una lista de opciones de socket especificas de TCP. Consulte sockets(7) para obtener mas informacion sobre otras opciones de socket que tambien son aplicables a sockets TCP. TCP_CONGESTION (desde Linux 2.6.13) El argumento de esta opcion es una cadena. Esta opcion permite al usuario configurar el algoritmo de control de congestion TCP que se utilizara por lossockets. Los procesos sin privilegios de administrador solo pueden elegir uno de los algoritmos en tcp_allowed_congestion_control (descrito anteriormente). Los procesos con privilegios (CAP_NET_ADMIN) pueden elegir cualquiera de los algoritmos de control de congestion disponibles (vease la descripcion de tcp_available_congestion_control anteriormente). TCP_CORK (desde Linux 2.2) Si se configura, no se envian tramas parciales. Todas las tramas parciales en cola se envian al desactivar la opcion. Esto resulta util para anteponer encabezados antes de invocar a sendfile(2) o para optimizar el rendimiento. En la implementacion actual, existe un limite de 200 milisegundos para el tiempo durante el cual TCP_CORK bloquea la salida. Si se alcanza este limite, los datos en cola se transmiten automaticamente. Esta opcion solo se puede combinar con TCP_NODELAY a partir de Linux 2.5.71. No debe utilizarse en codigo pretenda ser portable. TCP_DEFER_ACCEPT (desde Linux 2.4) 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 (desde Linux 2.4) Se utiliza para recopilar informacion sobre este socket. El nucleo devuelve un struct tcp_info, tal como se define en el archivo /usr/include/linux/tcp.h. No debe utilizarse si se desea que el codigo portable. TCP_KEEPCNT (desde Linux 2.4) 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 (desde Linux 2.4) 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 (desde Linux 2.4) Tiempo (en segundos) entre sondas "keep-alive". No deberia usar esta opcion si desea que su codigo sea portable. TCP_LINGER2 (desde Linux 2.4) Tiempo de vida de los sockets huerfanos con estado FIN_WAIT2. Esta opcion puede utilizarse para anular la configuracion general del sistema en el archivo /proc/sys/net/ipv4/tcp_fin_timeout para este socket. No debe confundirse con la opcion de nivel socket(7) SO_LINGER. No debe utilizarse si se considera la portabilidad del codigo. TCP_MAXSEG Tamano maximo del segmento para los paquetes TCP salientes. En Linux 2.2 y anteriores, y en Linux 2.6.28 y posteriores, si esta opcion se configura antes de establecer la conexion, tambien 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 tambien impondra sus limites minimo y maximo sobre el valor indicado. TCP_NODELAY Si se configura, se deshabilita el algoritmo de Nagle. Los segmentos siempre se enviaran lo antes posible, incluso con una pequena cantidad de datos. Si no se configura, los datos se almacenan en bufer hasta que haya suficiente cantidad para enviar, evitando asi el envio frecuente de paquetes pequenos, lo que resulta en una mala utilizacion de la red. Esta opcion se sobrescribe con TCP_CORK; sin embargo, al configurarla, se fuerza a un vaciado de la salida pendiente, incluso si TCP_CORK esta configurado. TCP_QUICKACK (desde Linux 2.4.4) 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 (desde Linux 2.4) Establece el numero de retransmisiones SYN que debe enviar TCP antes de interrumpir el intento de conexion. No puede exceder de 255. No deberia usar esta opcion si desea que su codigo sea transportable. TCP_USER_TIMEOUT (desde Linux 2.6.37) Esta opcion toma un entero sin signo como argumento. Cuando el valor es mayor que 0, dara el tiempo maximo en milisegundos que los datos transmitidos pueden permanecer sin confirmar, o que los datos almacenados en bufer pueden permanecer sin transmitir (debido al tamano de ventana cero), antes de que TCP cierre forzosamente la conexion correspondiente y retorne ETIMEDOUT a la aplicacion. Si el valor de la opcion es 0, TCP utilizara el valor predeterminado del sistema. El aumento de los tiempos de espera del usuario permite que una conexion TCP previva durante periodos prolongados sin conectividad de extremo a extremo. Reducir los tiempos de espera del usuario permite que las aplicaciones den error rapidamente, si asi se desea. De lo contrario, el fallo puede tardar hasta 20 minutos con los valores predeterminados del sistema en un entorno WAN normal. Esta opcion se puede configurar en cualquier estado de una conexion TCP, pero solo es efectiva durante los estados sincronizados de una conexion (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING y LAST-ACK). Ademas, al usar la opcion de mantenimiento de conexion TCP (SO_KEEPALIVE), TCP_USER_TIMEOUT sobrescribira el mantenimiento de conexion para determinar cuando cerrar una conexion debido a un fallo de mantenimiento de conexion. Esta opcion no afecta a la retransmision TCP de un paquete ni al envio de un paquete sonda de mantenimiento de conexion. Esta opcion, como muchas otras, sera heredada por el socket devuelto por accept(2), si se configuro en el socket de escucha. Para mas detalles sobre la funcion de tiempo de espera del usuario, consulte los RFC 793 y RFC 5482 <>. TCP_WINDOW_CLAMP (desde Linux 2.4) 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. TCP_FASTOPEN (desde Linux 3.6) Esta opcion habilita la apertura rapida (RFC 7413) en el socket de escucha. El valor especifica la longitud maxima de los SYN pendientes (similar al argumento de retraso en listen(2)). Una vez habilitado, el socket de escucha otorga la cookie de Apertura Rapida TCP al SYN entrante con la opcion de Apertura Rapida TCP. Mas importante aun, acepta los datos en SYN con una cookie de Apertura Rapida valida y responde con un SYN-ACK, confirmando tanto los datos como la secuencia SYN. accept(2) devuelve un socket disponible para lectura y escritura cuando el protocolo de enlace aun no se ha completado. Por lo tanto, el intercambio de datos puede comenzar antes de que se complete el protocolo de enlace. Esta opcion requiere habilitar la compatibilidad del lado del servidor en sysctl net.ipv4.tcp_fastopen (vease mas arriba). Para obtener informacion sobre la compatibilidad del lado del cliente con Apertura Rapida TCP, consulte send(2), MSG_FASTOPEN o TCP_FASTOPEN_CONNECT mas adelante. TCP_FASTOPEN_CONNECT (desde Linux 4.11) Esta opcion habilita una forma alternativa de realizar Apertura Rapida en el lado activo (cliente). Cuando esta opcion esta habilitada, connect(2) se comportara de manera diferente dependiendo de si hay una cookie de apertura rapida disponible para el destino. Si no hay una cookie disponible (es decir, el primer contacto con el destino), connect(2) actuara como de costumbre enviando un SYN inmediatamente, aunque este SYN incluiria una opcion de cookie de Apertura Rapida vacia para solicitar una cookie. Si hay una cookie disponible, connect(2) devolveria 0 inmediatamente, pero la transmision del SYN se aplaza. Un write(2) o sendmsg(2) posterior activaria un SYN con datos mas una cookie en la opcion de Apertura Rapida. Es decit, la operacion de conexion se aplaza hasta que se proporcionen los datos. Observe: Aunque esta opcion esta disenada para mayor comodidad, habilitarla modifica el comportamiento y ciertas llamadas del sistema podrian establecer valores errno diferentes. Con una cookie presente, se debe llamar a write(2) o sendmsg(2) inmediatamente despues de connect(2) para enviar SYN + datos para completar el 3WHS (acronimo que significa <>) y establecer la conexion. Si se llama a read(2) justo despues de connect(2) sin write(2) provocara que el socket bloqueador se bloquee indefinidamente. La aplicacion debe configurar la opcion de socket TCP_FASTOPEN_CONNECT antes de write(2) o sendmsg(2), o llamar directamente a write(2) o sendmsg(2) con el indicador MSG_FASTOPEN, en lugar de usar ambos en la misma conexion. Este es el flujo de llamada tipico con esta nueva opcion: s = socket(); setsockopt(s, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, 1, ...); connect(s); write(s); /* write() deberia ir siempre despues de connect() * para hacer que SYN salga. */ read(s)/write(s); /* ... */ close(s); 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 envia datos fuera de banda mas recientes, los datos urgentes mas antiguos se insertan como datos normales en el flujo (incluso si SO_OOBINLINE no esta configurado). Esto difiere del comportamiento de las pilas basadas en BSD. Por defecto, Linux utiliza la interpretacion 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 /proc/sys/net/ipv4/tcp_stdurg. Es posible acceder a datos fuera de banda mediante el indicador MSG_PEEK de recv(2). Desde Linux 2.4, Linux admite el uso de MSG_TRUNC en el argumento flags de recv(2) (y recvmsg(2)). Este indicador hace que los bytes de datos recibidos se descarten, en lugar de devolverse a un bufer proporcionado por el emisor. Desde Linux 2.4.4, MSG_TRUNC tambien tiene este efecto cuando se utiliza junto con MSG_OOB para recibir datos fuera de banda. Ioctls Las siguientes llamadas a ioctl(2) devuelven informacion en valor. La sintaxis correcta es: int valor; error = ioctl(tcp_socket, ioctl_type, &valor); ioctl_type es una de las siguientes: SIOCINQ Devuelve la cantidad de datos no leidos en cola en el bufer de recepcion. El socket no debe estar en estado LISTEN, de lo contrario se devuelve un error (EINVAL). SIOCINQ se define en . Como alternativa, puede emplearse el sinonimo FIONREAD, definido en . SIOCATMARK Devuelve verdadero (es decir, valor es distinto de cero) si el flujo de datos entrante se encuentra en la marca de urgencia. Si la opcion de socket SO_OOBINLINE esta activada y SIOCATMARK devuelve verdadero, la siguiente lectura del socket devolvera los datos urgentes. Si la opcion de socket SO_OOBINLINE no esta establecida y SIOCATMARK devuelve verdadero, la siguiente lectura del socket devolvera los bytes posteriores a los datos urgentes (para leer los datos urgentes se requiere el indicador recv(MSG_OOB)). Una lectura nunca sobrepasa la marca de urgencia. Si se informa a una aplicacion de la presencia de datos urgentes mediante select(2) (mediante el argumento exceptfds) o mediante la entrega de una senal SIGURG, puede avanzar hasta la marca mediante un bucle que prueba repetidamente SIOCATMARK y realiza una lectura (solicitando cualquier numero de bytes) siempre que SIOCATMARK devuelva falso. SIOCOUTQ Devuelve la cantidad de datos no enviados en la cola de envio del socket. El socket no debe estar en estado LISTEN; de lo contrario, se devuelve un error (EINVAL). SIOCOUTQ se define en . Como alternativa, puede usar el sinonimo TIOCOUTQ, definido en . Gestion 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 requieren una notificacion de errores mas rapida. Esto se puede habilitar con la opcion de socket IP_RECVERR de nivel IPPROTO_IP. Cuando esta opcion esta habilitada, todos los errores entrantes se pasan inmediatamente al programa de usuario. Use esta opcion con precaucion, ya que reduce la tolerancia de TCP a los cambios de enrutamiento y otras condiciones normales de red. ERRORES EAFNOTSUPPORT El tipo de direccion de conector pasado en sin_family no es AF_INET. 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. TCP tambien puede devolver cualquier error definido por ip(7) o la capa de conectores genericos. VERSIONES La compatibilidad con la Notificacion Explicita de Congestion, en sendfile(2), soporte para reordenamiento y algunas extensiones SACK (DSACK) se introdujeron en Linux 2.4. La compatibilidad con el acuse de recibo de reenvio (FACK), el reciclaje TIME_WAIT y las opciones de socket keepalive por conexion se introdujeron en Linux 2.3. ERRORES No se han documentado todos los errores. No se ha descrito IPv6. VEASE TAMBIEN accept(2), bind(2), connect(2), getsockopt(2), listen(2), recvmsg(2), sendfile(2), sendmsg(2), socket(2), ip(7), socket(7) Documentacion del codigo fuente del nucleo Documentation/networking/ip-sysctl.txt. RFC 793 para la especificacion de TCP. RFC 1122 para los requisitos de TCP y una descripcion del algoritmo Nagle. RFC 1323 para las opciones TCP de fechado y de ampliacion de ventana. RFC 1337 para una descripcion de los peligros que conlleva el "asesinato" de los conectores TIME_WAIT. RFC 3168 para una descripcion de la Notificacion Explicita de la Congestion. RFC 2581 para los algoritmos TCP de control de la congestion. RFC 2018 y RFC 2883 para SACK y sus extensiones. TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Juan Piernas y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de Manual de Linux 6.15 17 Mayo 2025 tcp(7)