Provided by: manpages-es_1.55-10_all bug

NOMBRE

       tcp - Protocolo TCP.

SINOPSIS

       #include <sys/socket.h>
       #include <netinet/in.h>
       tcp_socket = socket(PF_INET, SOCK_STREAM, 0);

DESCRIPCI'ON

       Esta  es  una  implementacion  del  protocolo  TCP  definido en RFC793,
       RFC1122 y RFC2001 con las extensiones NewReno y SACK.  Proporciona  una
       conexion  bidireccional,  fiable  y  orientada  a  conexion  entre  dos
       conectores (``sockets'') encima de ip(7), tanto para la version 4  como
       para  la  version  6.   TCP  garantiza  que los datos llegan en orden y
       retransmite los paquetes perdidos.  Genera  y  comprueba  una  suma  de
       verificacion  por  paquete para detectar errores de transmision. TCP no
       conserva los limites entre registros.

       Un conector TCP recien creado no tiene ni direccion remota ni  local  y
       no  esta totalmente especificado. Para crear una conexion TCP de salida
       use connect(2) para establecer una conexion con otro conector TCP. Para
       recibir  nuevas conexiones de entrada, primero enlace el conector a una
       direccion local y puerto mediante bind(2)  y  a  continuacion  llame  a
       listen(2)  para  colocar  el  conector en estado de escucha. Despues de
       esto, se puede aceptar un nuevo conector para cada conexion de  entrada
       usando  accept(2).  Un conector sobre el que se han ejecutado con exito
       accept o connect esta totalmente especificado y puede transmitir datos.
       No  se  pueden  transmitir  datos  a  traves de conectores en estado de
       escucha o no conectados todavia.

       La version 2.2 de Linux soporta las extensiones  RFC1323  para  TCP  de
       alto  rendimiento.  Estas  incluyen  proteccion contra la repeticion de
       numeros de  secuencia  (PAWS,  ``Protection  Against  Wrapped  Sequence
       Numbers''),  ampliacion  de  ventana  (``Window  Scaling'')  y fechados
       (``Timestamps''). La ampliacion de ventana permite el  uso  de  grandes
       ventanas TCP (> 64K) para dar soporte a enlaces con una alta latencia o
       un gran ancho de banda.  Para usarlas, se deben incrementar los tamanos
       de  los  buffers de envio y recepcion. Se pueden configurar globalmente
       con las variables sysctls net.ipv4.tcp_wmem y net.ipv4.tcp_rmem, o para
       cada  conector individual mediante las opciones de conector SO_SNDBUF y
       SO_RCVBUF con la llamada setsockopt(2).

       Los tamanos maximos de los  buffers  de  los  conectores  declarados  a
       traves  de  SO_SNDBUF  y  SO_RCVBUF  estan  limitados  por  las sysctls
       globales net.core.rmem_max y net.core.wmem_max.  Dese  cuenta  que  TCP
       realmente  asigna  dos  veces  el  tamano  del  buffer solicitado en la
       llamada setsockopt(2), por lo que una llamada con exito a getsockopt(2)
       no  devolvera el mismo tamano de buffer que el solicitado en la llamada
       setsockopt(2).   TCP  usa  esto  para  propositos   administrativos   y
       estructuras  internas  del  nucleo, y las variables sysctl reflejan los
       tamanos mayores comparados con las  ventanas  TCP  actuales.  Para  las
       conexiones  individuales,  el  tamano  del  buffer del conector se debe
       establecer antes de las llamadas listen() o connect()  para  que  tenga
       efecto. Vea socket(7) para mas informacion.

       TCP  soporta datos urgentes. Los datos urgentes se usan para indicar al
       receptor que algun mensaje importante es parte del flujo de datos y que
       debe  ser  procesado  tan  pronto  como sea posible.  Para enviar datos
       urgentes, especifique la opcion MSG_OOB en send(2).  Cuando se  reciben
       datos urgentes, el nucleo envia una senal SIGURG al proceso lector o al
       proceso o grupo de procesos que han sido configurados para el  conector
       usando  la  ioctl  SIOCSPGRP o FIOSETOWN.  Cuando la opcion de conector
       SO_OOBINLINE esta activa, los datos urgentes se  colocan  en  el  flujo
       normal  de  datos  (y se pueden examinar mediante la ioctl SIOCATMARK).
       En otro caso, solo se pueden recibir cuando se ha configurado la opcion
       MSG_OOB en sendmsg(2).

       La  version  2.4  de  Linux  introdujo  varios  cambios para mejorar el
       rendimiento y la escalabilidad, ademas de una  funcionalidad  mejorada.
       Algunas   de  estas  caracteristicas  incluyen  soporte  para  llamadas
       sendfile(2) sin copias internas de  datos,  Notificacion  Explicita  de
       Congestion,  nueva  gestion  de  conectores TIME_WAIT, opciones ``keep-
       alive'' y soporte para extensiones de SACK Duplicados.

FORMATO DE LAS DIRECCIONES

       TCP esta  construido  encima  de  IP  (vea  ip(7)).   Los  formatos  de
       direccion  definidos  por  ip(7)  se  aplican  a  TCP. TCP solo soporta
       comunicaciones punto a punto. La difusion y el  envio  multidestino  no
       estan soportados.

SYSCTLS

       Estas   variables   pueden   ser   accedidas   mediante   los  ficheros
       /proc/sys/net/ipv4/* o con la interfaz sysctl(2).  Ademas, las  mayoria
       de las sysctls de IP tambien se aplican a TCP. Vea ip(7).

       tcp_abort_on_overflow
              Activa  el  reinicio de conexiones si el servicio que escucha es
              demasiado lento y es incapaz de continuar y aceptarlas. No  esta
              activo   por   omision.   Significa   que  si  se  produjera  un
              desbordamiento debido a una rafaga  de  datos,  la  conexion  se
              recuperara.  Active  esta opcion <<solo>> si verdaderamente esta
              seguro de que el demonio que escucha no puede ser ajustado  para
              aceptar  conexiones  mas  rapidamente. Activar esta opcion puede
              perjudicar a los clientes de su servidor.

       tcp_adv_win_scale
              Considera  que  el  gasto   del   almacenamiento   temporal   es
              bytes/2^tcp_adv_win_scale  (si  tcp_adv_win_scale  > 0) o bytes-
              bytes/2^(-tcp_adv_win_scale) si el valor es <= 0. El  valor  por
              omision es 2.

              El  espacio  del  buffer  de  recepcion del conector se comparte
              entre la aplicacion y el nucleo. TCP mantiene parte  del  buffer
              como  ventana  TCP; este es el tamano de la ventana de recepcion
              que se comunica al otro extremo. El resto  del  espacio  se  usa
              como  ``buffer  de  aplicacion'',  usado para aislar a la red de
              latencias de planificacion y de la aplicacion. El  valor  2  por
              omision  de  tcp_adv_win_scale implica que el espacio usado para
              el buffer de aplicacion es un cuarto del total.

       tcp_app_win
              Esta variable define cuantos bytes de la ventana TCP se reservan
              para el gasto del almacenamiento temporal.

              La  cantidad  de  bytes  de  la  ventana que se reservan para el
              buffer de la aplicacion es el maximo  de  (window/2^tcp_app_win,
              mss).  0  significa que no se reserva ninguna cantidad. El valor
              por omision es 31.

       tcp_dsack
              Activa el soporte para SACK Duplicados TCP segun se describen en
              RFC2883. Esta activo por omision.

       tcp_ecn
              Activa  la  Notificacion  Explicita de Congestion (ECN, Explicit
              Congestion Notification),  descrita  en  el  RFC2884.   No  esta
              activa  por  omision. Cuando esta activa, se podria ver afectada
              la conectividad a algunos destinos debido a la existencia  a  lo
              largo  de  la ruta de enrutadores antiguos con un comportamiento
              defectuoso, los cuales provocarian la perdida de conexiones.

       tcp_fack
              Activa el soporte para el Reconocimiento  Adelantado  (``Forward
              Acknowledgement'') TCP. Por omision, esta activo.

       tcp_fin_timeout
              Cantidad de segundos a esperar un paquete FIN final antes de que
              el conector se cierre por la fuerza. Estas es estrictamente  una
              violacion de la especificacion TCP, pero se necesita para evitar
              ataques de denegacion de servicio (DoS). El valor por omision en
              los  nucleos  2.4  es  60,  por debajo de los 180 segundos de la
              version 2.2.

       tcp_keepalive_intvl
              Numero de segundos entre dos sondas ``keep-alive'' TCP. El valor
              por omision es 75 segundos.

       tcp_keepalive_probes
              Numero  maximo  de  sondas  ``keep-alive'' TCP a enviar antes de
              abandonar y acabar con la conexion si no  se  obtiene  respuesta
              desde el otro extremo. El valor por omision es 9.

       tcp_keepalive_time
              Numero  de  segundos  que  una  conexion necesita estar inactiva
              antes de que TCP comience a enviar sondas ``keep-alive''.  Estas
              sondas  solo se envian cuando la opcion de conector SO_KEEPALIVE
              esta activa. El valor por omision es 7200  segundos  (2  horas).
              Una  conexion  inactiva  se  termina  despues de aproximadamente
              otros 11 minutos (9 sondas a intervalos de 75  segundos)  cuando
              esta activo el envio de sondas ``keep-alive''.

              Dese  cuenta  que  los  mecanismos subyacentes de seguimiento de
              conexiones y los plazos de tiempo de las aplicaciones pueden ser
              mucho mas pequenos.

       tcp_max_orphans
              Numero  maximo  de  conectores  TCP  huerfanos  (no conectados a
              ningun manejador de fichero de usuario) que se  permiten  en  el
              sistema.  Cuando  se sobrepasa este numero, la conexion huerfana
              se reinicia y se muestra un aviso. Este limite existe solo  para
              evitar  ataques  DoS  sencillos.  No  se recomienda reducir este
              limite. Las condiciones de la red  podria  hacer  necesario  que
              incremente  el  numero de huerfanos permitidos, pero dese cuenta
              que  cada  huerfano  puede  gasta  hasta  ~64K  de  memoria   no
              intercambiable.  El  valor  por  omision  inicial  es  igual  al
              parametro del nucleo NR_FILE. Este valor se  ajusta  dependiendo
              de la memoria del sistema.

       tcp_max_syn_backlog
              Numero maximo de peticiones de conexion encoladas que todavia no
              han recibido un reconocimiento desde  el  cliente  que  se  esta
              conectando.  Si  este  numero  se  supera, el nucleo comenzara a
              eliminar peticiones. El valor por omision de 256 se incrementa a
              1024  cuando  la  memoria  que  hay  en el sistema es adecuada o
              grande (>= 128Mb) y se reduce a 128 en aquellos sistemas con muy
              poca  memoria  (<=  32Mb). Si se necesita incrementar este valor
              por  encima  de   1024,   se   recomienda   que   se   modifique
              TCP_SYNQ_HSIZE                   para                   mantener
              TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog y  que  se  recompile  el
              nucleo.

       tcp_max_tw_buckets
              Numero maximo de conectores en el estado TIME_WAIT admitidos por
              el sistema. Este limite existe  solo  para  evitar  ataques  DoS
              sencillos.   El   valor  por  omision  de  NR_FILE*2  se  ajusta
              dependiendo de la memoria que haya en el sistema. Si este numero
              se supera, se cierra el conector y se muestra una aviso.

       tcp_mem
              Este  es  un  vector de 3 enteros: [low, pressure, high].  Estos
              limites los usa TCP para hacer  un  seguimiento  de  su  uso  de
              memoria. Los valores por omision se calculan durante el arranque
              a partir de la cantidad de memoria disponible.

              low - TCP no regula su asignacion de memoria cuando el numero de
              paginas  que  ha  asignado  globalmente  esta por debajo de este
              numero.

              pressure - cuando la cantidad de memoria asignada por TCP supera
              este  numero  de paginas, TCP modera su consumo de memoria. Este
              estado de presion de memoria se termina una vez que el numero de
              paginas asignadas cae por debajo de la marca low.

              high  -  numero  maximo  de  paginas  que  TCP asignara de forma
              global. Este valor invalida cualquier otro limite  impuesto  por
              el nucleo.

       tcp_orphan_retries
              Numero  maximo  de  intentos  realizados  para  sondear  el otro
              extremo de una conexion que ha sido cerrada por nuestro extremo.
              El valor por omision es 8.

       tcp_reordering
              El  maximo  que un paquete puede ser reorganizado en un flujo de
              paquetes TCP sin que TCP asuma perdida de paquetes y sin que  se
              ponga  a hacer un lento inicio. El valor por omision es 3. No es
              aconsejable  cambiar  este  numero.  Esta  es  una  metrica   de
              deteccion  de reorganizacion de paquetes disenada para minimizar
              retrocesos y  retransmisiones  innecesarios  provocados  por  la
              reorganizacion de paquetes en una conexion.

       tcp_retrans_collapse
              Intentar   enviar   paquetes   de   tamano  maximo  durante  las
              retransmisiones.  Esto esta activo por defecto.

       tcp_retries1
              Numero de veces que TCP intentara retransmitir un paquete en una
              conexion  establecida  normalmente, sin el esfuerzo extra de que
              se involucren las capas de red. Una vez se supera este numero de
              retransmisiones, primero hacemos que la capa de red actualice la
              ruta si es posible antes de cada nueva retransmision.  El  valor
              por omision es 3, el minimo especificado en el RFC.

       tcp_retries2
              Numero  maximo  de  veces  que un paquete TCP se retransmite con
              estado  ``establecido''  antes  de  abandonarlo.  El  valor  por
              omision   es   15,   que   corresponde   a   una  duraccion  de,
              aproximadamente, entre 13 y 30 minutos, dependiendo del plazo de
              retransmision. El limite minimo de 100 segundos especificado por
              RFC1122 normalmente se considera demasiado pequeno.

       tcp_rfc1337
              Activa el comportamiento TCP que se ajusta al RFC 1337. Esto  no
              esta  activo por omision. Cuando no esta activo, si se recibe un
              RST en un estado TIME_WAIT, cerramos el conector  inmediatamente
              sin esperar el fin del periodo TIME_WAIT.

       tcp_rmem
              Este  es  un  vector  de  3  enteros: [min, default, max]. Estos
              parametros los usa TCP para regular los tamanos de  los  buffers
              de  recepcion.  TCP ajusta dinamicamente el tamano del buffer de
              recepcion a partir de  los  valores  por  omision  listados  mas
              abajo,  en el rango de estas variables sysctl, dependiendo de la
              memoria disponible en el sistema.

              min - tamano minimo del  buffer  de  recepcion  usado  por  cada
              conector  TCP.   El  valor  por  omision  es  4K  y  se reduce a
              PAGE_SIZE bytes en sistemas con poca memoria. Este valor se  usa
              para  asegurar  que,  en  el  modo  de  presion  de memoria, las
              asignaciones de  memoria  por  debajo  de  este  tamano  todavia
              tendran  exito. Esto no se usa para limitar el tamano del buffer
              de recepcion declarado usando SO_RCVBUF en un conector.

              default - el tamano por omision del buffer de  recepcion  de  un
              conector  TCP.   Este  valor  sobrescribe  el tamano por omision
              inicial del buffer que viene dado por el valor  generico  global
              net.core.rmem_default,  definido  para  todos los protocolos. El
              valor por omision es de 87380 bytes  y  se  reduce  a  43689  en
              sistemas  con  poca  memoria. Si se desean tamanos de buffers de
              recepcion mayores, se deberia incrementar este valor  (para  que
              afecte a todos los conectores). Para que se empleen ventanas TCP
              grandes,    se    debe    activar    (valor     por     omision)
              net.ipv4.tcp_window_scaling.

              max  -  tamano  maximo  del  buffer  de recepcion usado por cada
              conector  TCP.   Este  valor  no  invalida   el   valor   global
              net.core.rmem_max.   Esto  no  se usa para limitar el tamano del
              buffer  de  recepcion  declarado  usando  SO_RCVBUF   sobre   un
              conector.   El  valor  por  omision de 87380*2 bytes se reduce a
              87380 en sistemas con poca memoria.

       tcp_sack
              Activa los  Reconocimientos  Selectivos  TCP  descritos  por  el
              RFC2018.  Esto esta activo por omision.

       tcp_stdurg
              Activa  la  interpretacion  estricta  RFC793  del campo puntero-
              urgente de TCP. El valor por omision es usar  la  interpretacion
              compatible  con  BSD  del  puntero urgente, que apunta al primer
              byte tras los datos urgentes. La interpretacion RFC793 es  hacer
              que  apunte  al  ultimo byte de los datos urgentes. Activar esta
              opcion puede conducir a problemas de interoperatividad.

       tcp_synack_retries
              Numero maximo de veces que se retransmitira un segmento  SYN/ACK
              para  una  conexion TCP pasiva. Este numero no deberia ser mayor
              que 255. El valor por omision es 5.

       tcp_syncookies
              Activa los ``syncookies'' TCP. Se debe compilar  el  nucleo  con
              CONFIG_SYN_COOKIES.   Envia  ``syncookies''  cuando  la  cola de
              paquetes  syn  pendientes  de  un  conector  se  desborda.   Los
              ``syncookies''  intentan proteger a un conector de un ataque por
              la llegada en avalancha de paquetes SYN.  Esto se  deberia  usar
              como ultimo recurso o nunca. Esto es una violacion del protocolo
              TCP y entra en  conflicto  con  otras  areas  de  TCP  como  las
              extensiones  TCP. Puede producir problemas para clientes y nodos
              repetidores. No se recomienda  como  mecanismo  de  ajuste  para
              ayudar  a servidores muy cargados en condiciones de sobrecarga o
              de  mala  configuracion.  Para  alternativas  recomendadas,  vea
              tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.

       tcp_syn_retries
              Numero maximo de veces que se retransmitiran SYNs iniciales para
              un intento activo de conexion TCP. Este  valor  no  deberia  ser
              mayor  que 255. El valor por omision es 5, que se corresponde a,
              aproximadamente, 180 segundos.

       tcp_timestamps
              Activa fechados TCP segun  el  RFC1323.  Esto  esta  activo  por
              omision.

       tcp_tw_recycle
              Activa  el  reciclado  rapido  de  conectores TIME-WAIT. No esta
              activo por omision. No se recomienda activar esta opcion ya  que
              produce  problemas  cuando  se  trabaja con NAT (Network Address
              Translation).

       tcp_window_scaling
              Activa la ampliacion de ventanas TCP segun el RFC1323. Esto esta
              activo  por  omision.  Esta caracteristica permite el uso de una
              ventana grande (> 64K) en conexiones TCP, aunque el otro extremo
              deberia  soportarla. Normalmente, el campo de 16 bit de longitud
              de ventana en la cabecera TCP limita  el  tamano  de  ventana  a
              menos   de  64K  bytes.  Si  se  desean  ventanas  mayores,  las
              aplicaciones pueden incrementar el  tamano  de  sus  buffers  de
              conectores y se empleara la opcion de ampliacion de ventanas. Si
              tcp_window_scaling se desactiva, TCP no negociara el uso  de  la
              ampliacion   de   ventanas   con  el  otro  extremo  durante  el
              establecimiento de la conexion.

       tcp_wmem
              Este es un vector de  3  enteros:  [min,  default,  max].  Estos
              parametros  los  usa TCP para regular los tamanos de los buffers
              de envio. TCP ajusta dinamicamente el tamano del buffer de envio
              a  partir  de  los valores por omision listados mas abajo, en el
              rango de estas  variables  sysctl,  dependiendo  de  la  memoria
              disponible en el sistema.

              min  - tamano minimo del buffer de envio usado por cada conector
              TCP. El valor por omision es de 4K bytes. Este valor se usa para
              asegurar que, en el modo de presion de memoria, las asignaciones
              de memoria por debajo de este tamano todavia tendran exito. Esto
              no  se  usa para limitar el tamano del buffer de envio declarado
              usando SO_SNDBUF en un conector.

              default - el tamano por omision del buffer de envio un  conector
              TCP.   Este  valor sobrescribe el tamano por omision inicial del
              buffer  que  viene   dado   por   el   valor   generico   global
              net.core.wmem_default,  definido  para  todos los protocolos. El
              valor por omision es de 16K.  Si se desean tamanos de buffers de
              envio  mayores,  se  deberia  incrementar  este  valor (para que
              afecte a todos los conectores). Para que se empleen ventanas TCP
              grandes, se debe activar (valor por omision) la variable sysctl.
              net.ipv4.tcp_window_scaling.

              max - tamano maximo del buffer de envio usado por cada  conector
              TCP.   Este valor no invalida el valor global net.core.wmem_max.
              Esto no se usa para  limitar  el  tamano  del  buffer  de  envio
              declarado  usando  SO_SNDBUF  sobre  un  conector.  El valor por
              omision de 128K bytes. Se reduce a 64K dependiendo de la memoria
              disponible en el sistema.

OPCIONES DE LOS CONECTORES

       Para  establecer  u  obtener  la  opcion  de  un  conector TCP, llame a
       getsockopt(2) para leerla o a setsockopt(2) para escribirla,  asignando
       SOL_TCP.   al argumento del nivel de opcion.  Ademas, la mayoria de las
       opciones de conector SOL_IP son validas para conectores TCP.  Para  mas
       informacion vea ip(7).

       TCP_CORK
              Si  se  activa,  no se envian tramas parciales. Todas las tramas
              parciales encoladas se envian cuando esta opcion se desactiva de
              nuevo.   Es  util  para  anadir  cabeceras  antes  de  llamar  a
              sendfile(2) o para optmizar el rendimiento. Esta  opcion  no  se
              puede  combinar con TCP_NODELAY.  No deberia usar esta opcion si
              desea que su codigo sea transportable.

       TCP_DEFER_ACCEPT
              Permite despertar a un proceso oyente solo cuando lleguen  datos
              al  conector.  Toma un valor entero (segundos). Puede limitar el
              numero  maximo  de  intentos  que  hara  TCP  para  terminar  de
              establecer la conexion. No deberia usar esta opcion si desea que
              su codigo sea transportable.

       TCP_INFO
              Se usa para recoger informacion sobre este conector.  El  nucleo
              devuelve  una  estructura  tcp_info  como la que se define en el
              fichero /usr/include/linux/tcp.h.  No deberia usar  esta  opcion
              si desea que su codigo sea transportable.

       TCP_KEEPCNT
              Numero  maximo  de  sondas ``keep-alive'' que TCP deberia enviar
              antes de abandonar la conexion.  No deberia usar esta opcion  si
              desea que su codigo sea transportable.

       TCP_KEEPIDLE
              Tiempo (en segundos) que la conexion necesita estar ociosa antes
              de que TCP empiece a enviar sondas ``keep-alive'' si  la  opcion
              de  conector  SO_KEEPALIVE  se ha activado en este conector.  No
              deberia  usar  esta  opcion  si  desea   que   su   codigo   sea
              transportable.

       TCP_KEEPINTVL
              Tiempo  (en  segundos)  entre sondas ``keep-alive''.  No deberia
              usar esta opcion si desea que su codigo sea transportable.

       TCP_LINGER2
              Tiempo de vida de conectores que han quedado huerfanos en estado
              FIN_WAIT2.  Esta  opcion  se puede usar para invalidar la sysctl
              global  del  sistema  tcp_fin_timeout  en  este   conector.   No
              confundir  con  la  opcion  SO_LINGER  del  nivel  de conectores
              (socket(7)).  No deberia usar esta opcion si desea que su codigo
              sea transportable.

       TCP_MAXSEG
              Tamano maximo de segmento para los paquetes TCP de salida. Si se
              establece esta opcion antes del establecimiento  de  conexiones,
              tambien  cambia  el  valor  MSS  anunciado al otro extremo en el
              paquete inicial.  Valores mayores que la MTU de la interfaz  que
              finalmente  se  use  no  tienen efecto. TCP tambien impondra sus
              limites minimo y maximo sobre el valor dado.

       TCP_NODELAY
              Si se usa, desactiva el algoritmo de Nagle. Esto  significa  que
              los  segmentos  siempre  se  envian tan pronto como sea posible,
              aunque solo haya una pequena cantidad de  datos.  Cuando  no  se
              usa,  los  datos  se  almacenan temporalmente hasta que haya una
              cantidad suficiente para ser  enviada,  evitando  asi  el  envio
              frecuente   de   pequenos   paquetes   que  ocasiona  una  pobre
              utilizacion de la red. Esta opcion no se puede usar a  la  misma
              vez que la opcion TCP_CORK.

       TCP_QUICKACK
              Activa  el  modo  ``quickack'' cuando se pone a 1 y lo desactiva
              cuando se pone a 0. En el modo ``quickack'', los reconocimientos
              se  envian  inmediatamente, antes de retrasarlos si es necesario
              conforme a un funcionamiento normal de TCP. Esta  opcion  no  es
              permanente,   solo   permite   un  cambio  a  o  desde  el  modo
              ``quickack''. Las  operaciones  posteriores  del  protocolo  TCP
              entraran/saldran  otra vez del modo ``quickack'' dependiendo del
              procesamiento interno del protocolo y de factores tales como  la
              expiracion   de   plazos  de  reconocimientos  retrasados  y  la
              transferencia de datos.  No deberia usar esta  opcion  si  desea
              que su codigo sea transportable.

       TCP_SYNCNT
              Establece  el  numero de retransmisiones SYN que debe enviar TCP
              antes de abortar el intento de conexion.  No  puede  exceder  de
              255.   No  deberia  usar  esta opcion si desea que su codigo sea
              transportable.

       TCP_WINDOW_CLAMP
              Limita el tamano de la ventana anunciada a este valor. El nucleo
              impone  un  tamano minimo de SOCK_MIN_RCVBUF/2.  No deberia usar
              esta opcion si desea que su codigo sea transportable.

IOCTLS

       Estas  ioctls  pueden  ser  accedidas  usando  ioctl(2).   La  sintaxis
       correcta es:

              int value;
              error = ioctl(tcp_socket, ioctl_type, &value);

       SIOCINQ
              Devuelve la cantidad de datos encolados sin leer en el buffer de
              recepcion.  El argumento es un puntero a un entero. El  conector
              no  debe estar en estado LISTEN, de lo contrario se devolvera un
              error (EINVAL).

       SIOCATMARK
              Devuelve cierto cuando el programa de  usuario  ya  ha  recibido
              todos  los  datos  urgentes. Esto se usa junto con SO_OOBINLINE.
              El argumento es un puntero a un entero para el resultado  de  la
              comprobacion.

       SIOCOUTQ
              Devuelve la cantidad de datos sin enviar en la cola de envio del
              conector en el puntero a un valor entero pasado. El conector  no
              debe  estar  en  estado  LISTEN, de lo contrario se devolvera un
              error (EINVAL).

MANEJO DE ERRORES

       Cuando se produce un error de red, TCP intenta reenviar el paquete.  Si
       no  tiene exito despues de un cierto tiempo, informa o bien de un error
       ETIMEDOUT o bien del ultimo error recibido sobre esta conexion.

       Algunas aplicaciones necesitan una notificacion mas rapida  del  error.
       Esto  se  puede  hacer  con  la opcion de conector IP_RECVERR del nivel
       SOL_IP.  Cuando se activa esta opcion, todos los errores de entrada son
       pasado  inmediatamente  al  programa  de  usuario.  Use esta opcion con
       cuidado (hace que TCP sea menos tolerante a cambios de enrutamiento y a
       otras condiciones de red normales).

OBSERVACIONES

       Cuando  se  produce  un  error,  al configurar una conexion, durante la
       escritura en un conector, solo se produce una senal SIGPIPE cuando esta
       activa la opcion de conector SO_KEEPALIVE.

       TCP  no posee verdaderos datos fuera de orden, posee datos urgentes. En
       Linux esto significa que si el otro extremo envia datos fuera de  orden
       recientes,  los  anteriores  datos  urgentes  se  insertaran como datos
       normales en el flujo (incluso cuando SO_OOBINLINE no esta activa). Esto
       difiere de las pilas de protocolo basadas en BSD.

       Linux  usa  por  defecto  una  interpretacion del campo puntero urgente
       compatible con  BSD.  Esto  viola  el  RFC1122  pero  se  necesita  por
       interoperatividad  con  otras  pilas.  Se  puede  cambiar con la sysctl
       tcp_stdurg.

ERRORES

       EPIPE  El otro extremo ha cerrado el conector inesperadamente o  se  ha
              intentado leer de un conector desconectado.

       ETIMEDOUT
              El  otro  extremo  no  ha  reconocido  los  datos retransmitidos
              despues de cierto tiempo.

       EAFNOTSUPPORT
              El tipo de direccion de conector  pasado  en  sin_family  no  es
              AF_INET.

       TCP tambien puede devolver cualquier error definido por ip(7) o la capa
       de conectores genericos.

FALLOS

       No se han documentado todos los errores.
       No se ha descrito IPv6.

VERSIONES

       El soporte para la Notificacion Explicita de  la  Congestion,  sendfile
       sin  copias  internas de datos, la reorganizacion de paquetes y algunas
       extensiones SACK (DSACK) se introdujo en la version  2.4.   El  soporte
       para el Reconocimiento Adelantado (FACK), el reciclado de conectores en
       estado TIME_WAIT, opciones ``keep-alive'' para conexiones  individuales
       y las sysctls se introdujo en la version 2.3.

       Los  valores  por  omision  y  las descripciones de la variables sysctl
       dados mas arriba son aplicables para la version 2.4 del nucleo.

AUTORES

       Esta pagina de manual  fue  escrita  originariamente  por  Andi  Kleen.
       Nivedita  Singhvi  la  actualizo  para  la  version 2.4 de Linux con la
       informacion del  documento  Documentation/networking/ip-sysctls.txt  de
       Alexey Kuznetsov.

V'EASE TAMBI'EN

       socket(7), socket(2), ip(7), bind(2), listen(2), accept(2), connect(2),
       sendmsg(2), recvmsg(2), sendfile(2), sysctl(2), getsockopt(2).

       RFC793 para la especificacion de TCP.
       RFC1122 para los requisitos de TCP  y  una  descripcion  del  algoritmo
       Nagle.
       RFC1323 para las opciones TCP de fechado y de ampliacion de ventana.
       RFC1644   para   una  descripcion  de  los  peligros  que  conlleva  el
       ``asesinato'' de los conectores TIME_WAIT.
       RFC2481 para  una  descripcion  de  la  Notificacion  Explicita  de  la
       Congestion.
       RFC2581 para los algoritmos TCP de control de la congestion.
       RFC2018 y RFC2883 para SACK y sus extensiones.

Pagina man de Linux              20 abril 2002                          TCP(7)