Protocolo de Control de Transmisión

(Redirigido desde «TCP»)

Protocolo de Control de Transmisión

TCP
Información sobre la plantilla
G1 3 3.jpg
Concepto:TCP es un protocolo orientado a conexión, es decir, que permite que dos máquinas que están comunicadas controlen el estado de la transmisión.


A finales de los años 1960 y principios de los 1970, las redes no estaban diseñadas de forma que fuera posible compartir recursos entre redes diferentes. Desde entonces se ha hecho cada vez más necesario que las aplicaciones de usuario compartan recursos. Pero para que puedan hacerlo, los administradores de las redes deben acordar primero un conjunto de tecnologías y normas comunes para que las redes puedan comunicarse. Es por eso que las aplicaciones como la transferencia de archivos y el correo electrónico se deberían estandarizar también para permitir la interacción entre aplicaciones de usuario. El Protocolo de Control de Transmisión se desarrolló con esos objetivos. El propósito primordial de TCP es proporcionar circuitos lógicos confiables o servicios de conexión entre parejas de procesos. Esto no implica confiabilidad desde protocolos de más bajo nivel (como IP) así que TCP debe garantizar esto por sí mismo.

Protocolo de Control de Transmisión (TCP)

TCP reside en el nivel de transporte del modelo de niveles convencionales. Está situado entre IP y los niveles superiores. TCP no está cargado en las pasarelas. Está diseñado para residir en los computadores o en las máquinas que se ocupan de conservar la integridad de la transferencia de datos entre extremos. Lo más común es que TCP resida en los computadores de usuario. Como IP es una red no orientada a conexión, es TCP quien se debe encargar de las tareas de fiabilidad, control de flujo, secuenciamiento, aperturas y cierres. Aunque TCP e IP estén tan relacionados que incluso se les denomine juntos "TCP/IP", TCP puede soportar otros protocolos. Por ejemplo, otro protocolo no orientado a conexión como el ISO 8473 (Protocolo de Redes No Orientado a Conexión o CNLP) podría funcionar con TCP (si se realizan algunos ajustes de los interfaces entre módulos). Además, los protocolos de aplicación, como el Protocolo de Transferencia de Correo Simple (de siglas en inglés, SMTP) se apoyan en muchos servicios que proporciona TCP.

Principales características de TCP

El protocolo TCP suministra una serie de servicios a los niveles superiores. TCP es un protocolo orientado a conexión, esto quiere decir que TCP mantiene información del estado de cada cadena de datos de usuario que circula por él.

El término utilizado en este contexto significa también que TCP es responsable de la transferencia de datos entre extremos por la red o redes hasta la aplicación de usuario receptora (o el protocolo de nivel superior). TCP debe asegurar que los datos se transmiten y reciben correctamente por los computadores atravesando las correspondientes redes. Como TCP es un protocolo orientado a conexión, es responsable de la transferencia fiable de cada uno de los caracteres (bytes u octetos) que reciben del nivel superior correspondiente. En consecuencia, utiliza números de secuencia y aceptaciones/rechazos.

El término asociado con estos aspectos de los protocolos orientados a conexión es el de circuito virtual. Cada octeto transmitido lleva asignado un número de secuencia. El módulo TCP receptor utiliza una rutina de checksum para comprobar la posible existencia de daños en los datos producidos en el proceso de transmisión. Si los datos son aceptables, TCP envía una acepción positiva (ACK) al módulo TCP remitente. Si los datos han resultado dañados, el TCP receptor los descarta y utiliza un número de secuencia para informar al TCP remitente del problema. Como muchos otros protocolos orientados a conexión, TCP emplea temporizadores para garantizar que no transcurre un lapso de tiempo demasiado grande antes de la transmisión de aceptaciones desde el nodo receptor y/o de la transmisión de datos desde el nodo transmisor.

TCP recibe datos de un protocolo de nivel superior de forma orientada a cadenas. Esto es diferente a muchos otros protocolos empleados en la industria. Los protocolos orientados a cadenas se diseñan para enviar caracteres separados y no bloques, tramas, datagramas, etc. Los datos son enviados por un protocolo de nivel superior en forma de cadenas, byte a byte. Cuando llegan al nivel TCP, los bytes son agrupados para formar segmentos TCP. Dichos segmentos se transfieren a IP (o a otro protocolo de nivel inferior) para su transmisión al siguiente destino. La longitud de los segmentos de la determina TCP, aunque el realizador de un determinado sistema puede determinar la forma en que TCP toma su decisión.

Los realizadores de TCP que han trabajado con sistemas orientados a bloques, como los sistemas operativos de IBM, puede que tengas que modificar ligeramente su forma de pensar acerca de las prestaciones de TCP.

TCP admite el uso de segmentos de longitud variable, debido a su diseño orientado a cadenas. Por tanto, las aplicaciones que trabajan normalmente con bloques de datos de longitud fija (una aplicación de gestión de personal que envíe registros de empleados de longitud fija o una aplicación de gestión de nóminas con registros de pago también longitud fija) no pueden utilizar TCP para transmitir bloques fijos al receptor. El nivel de aplicación debe ocuparse de configurar los bloques dentro de las cadenas de TCP.

TCP comprueba también la duplicidad de los datos. En el caso de que el TCP remitente decida retransmitir los datos, el TCP descarta los datos redundantes. Estos datos redundantes podrían aparecer en la interred, por ejemplo cuando el TCP receptor no acepta el tráfico de manera temporizada, en cuyo caso el TCP remitente decidirá retransmitir los datos. Además de la capacidad de transmisión de cadenas, TCP soporta también el concepto de función push. Esta función se utiliza cuando una aplicación desea asegurarse de que todos los datos que han pasado al nivel inferior se han transmitido. Para hacer eso, gobierna la gestión del buffer de TCP. Para obtener esta función, el protocolo de nivel superior envía una orden a TCP con un identificador de parámetro de push a 1. Esta operación implica que TCP envía todo el tráfico almacenado en forma de segmento o segmentos hacia su destino. Además de utilizar los números de secuencia para aceptaciones, TCP los utiliza para la reordenación de los segmentos que llegan a su destino fuera de orden. Como TCP descansa sobre un protocolo no orientado a conexión, es bastante posible que en la interred se creen datagramas duplicados.

TCP también elimina los segmentos duplicados. TCP emplea un esquema de aceptación inclusiva. El número de aceptación acepta todos los octetos hasta (e incluyendo) el del número de aceptación menos uno. Este esquema es un método muy sencillo y eficiente de aceptar tráfico, pero presenta una desventaja. Por ejemplo, supongamos que se han transmitido diez segmentos y debido a las operaciones realizadas durante el proceso de encaminamiento llegan desordenados. TCP está obligado aceptar sólo el mayor número de bytes contiguos recibidos sin error. No está permitido aceptar el byte de mayor número recibido hasta que hayan llegado todos los bytes intermedios.

Por tanto, como en cualquier otro protocolo orientado a conexión, podría transcurrir el periodo de temporización de aceptaciones y TCP transmisora retransmitiría el tráfico no aceptado todavía. Esas retransmisiones podrían introducir una considerable sobrecarga en la red. El módulo TCP receptor se ocupa también de controlar el flujo de los datos del transmisor, lo que es muy útil para evitar el desbordamiento de los dispositivos de almacenamiento y la saturación de la máquina receptora. La idea que utiliza TCP es algo poco usual en protocolos de comunicación. Se basa en enviar el dispositivo transmisor un valor de "ventana". Se permite que el transmisor envíe un número máximo de bytes igual al valor de su ventana. Cuando se ha llegado a ese valor, la ventana se cierra y el transmisor debe interrumpir el envío de datos. Además, TCP posee una facilidad muy útil que permite multiplexar varias sesiones de usuario en un mismo computador. Esta operación se realiza definiendo algunas convenciones para compartir puertos y sockets entre usuarios.

TCP proporciona transmisión en modo dúplex integral entre las entidades que se comunican. De esta forma, la transmisión se puede efectuar en ambos sentidos sin necesidad de esperar a la señal de indicación de cambio de sentido, necesaria en las transmisiones semidúplex. Además, TCP permite a los usuarios especificar niveles de seguridad y prioridades de las conexiones. Aunque esas opciones no están incluidas en todos los protocolos TCP, están definidas en el estándar TCP. TCP proporciona el cierre seguro de los circuitos virtuales (la conexión lógica entre dos usuarios). El cierre seguro se ocupa de que todo el tráfico sea reconocido antes de la desactivación del circuito virtual.

Aperturas activa y pasiva

Los puertos TCP pueden establecer dos tipos de conexiones. El modo de apertura pasiva permite que el protocolo de nivel superior (por ejemplo, un servidor) indique al TCP y al sistema operativo del computador que va a esperar la llegada de solicitudes de conexión procedentes del sistema remoto, en lugar de enviar una apertura activa.

Tras recibir esta solicitud, el sistema operativo asigna un número de puerto a este extremo. Esta utilidad se puede usar para realizar comunicaciones con usuarios remotos sin tener el retardo de la apertura activa. Los procesos de aplicaciones que solicitan la apertura pasiva pueden aceptar una solicitud de cualquier usuario (supuesto que se cumplen algunos requisitos de compatibilidad).

Si se puede aceptar cualquier llamada (sin requisitos de compatibilidad) el número de socket exterior se pone a ceros. Los números de socket exterior no especificados sólo se permiten en aperturas pasivas. La segunda forma de establecimiento de conexión es el modo de apertura activa. En esta situación, el protocolo de nivel superior designa específicamente otro socket por el que establecer la conexión. Típicamente, se envía la apertura activa a un puerto con apertura pasiva para establecer un circuito virtual.

TCP admite un escenario en el que se envían dos aperturas activas de un sistema a otro a la vez. TCP realizará la conexión. Esta característica permite que las aplicaciones envíen una apertura en cualquier momento, sin preocuparse de si la otra aplicación ha enviado otra apertura o no. TCP establece convenciones estrictas sobre cómo se deben utilizar conjuntamente las aperturas activas y pasivas. En primer lugar, una apertura activa identifica un socket específico, así como sus niveles de prioridad y de seguridad. TCP garantiza una apertura si el socket remoto tiene una apertura pasiva compatible, o si ha enviado una apertura activa compatible.

El Bloque de Control de Transmisión (TCB)

Como TCP debe recordar varias cosas de cada conexión virtual, almacena esa información en un Bloque de Control de Transmisión (TCB). Entre la información que se almacena en la TCB destacamos los números de socket local y remoto, los punteros a los buffers de transmisión y recepción, los punteros a la cola de retransmisión, los valores de seguridad y prioridad de la conexión y el segmento en curso. La TCB también contiene varias variables asociadas a los números de secuencia de envío y recepción. Las PDU que se intercambian entre dos módulos TCP se denominan segmentos. El segmento se divide en dos partes, la parte de cabecera y la parte de datos. La parte de datos sigue a la parte de cabecera. Los primeros dos campos del segmento se denominan puerto de fuente y puerto de destino. Esos campos de 16 bits identifican a los programas de aplicación de nivel superior que utilizan la conexión TCP.

El segmento TCP (PDU)

El siguiente campo se denomina número de secuencia. Este campo contiene el número de secuencia del primer octeto del campo de datos de usuario. Su valor especifica la posición de la cadena de bits del módulo transmisor. Dentro del segmento especifica el primer octeto de datos de usuario. El número de secuencia se utiliza también durante la operación de gestión de la conexión. Si dos entidades TCP utilizan el segmento de solicitud de conexión, entonces el número de secuencia especifica el número de secuencia de envío inicial (ISS) que se utilizará para la numeración subsiguiente de los datos de usuario.

El valor del número de aceptación permite aceptar los datos previamente recibidos. Este campo contiene el valor del número de secuencia del siguiente octeto que se espera recibir del transmisor. Con esa definición permite la aceptación inclusiva, en el sentido de que permite la aceptación de todos los octetos hasta, e incluyendo, el valor de este número menos 1. El campo de desplazamiento de datos especifica el número de palabras alineadas de 32 bits de que consta la cabecera de TCP.

Este campo se utiliza para determinar dónde comienza el campo de datos. Como puede esperarse, el campo reservado está reservado. Consta de 6 bits que deben valer cero. Estos bits están reservados para usos futuros. Los seis bits siguientes se denominan indicadores (flags). Son bits de control de TCP y se utilizan para especificar ciertos servicios o utilidades que se pueden emplear durante la sesión. El valor de algunos de esos bits indica cómo interpretar otros campos de la cabecera. Los seis bits mencionados llevan la siguiente información.

  • URG indica que el campo de puntero de urgencia es significativo.
  • ACK indica si el campo de aceptación es significativo.
  • PSH significa que el módulo va a utilizar la función push.
  • RST indica que la conexión se va a inicializar.
  • SYN indica que se van a sincronizar los números de secuencia; se utiliza en los segmentos de establecimiento de conexión como indicación de que se van a realizar algunas operaciones de preparación.
  • FIN indica que el remitente no tiene más datos para enviar. Es comparable a la señal de fin de transmisión (EOT) en otros protocolos.

El campo siguiente, denominado ventana, se pone a un valor que indica cuántos octetos desea aceptar el receptor. Este valor se establece teniendo en cuenta el valor del campo de aceptación (número de aceptación). La ventana se establece sumando los valores del campo de ventana y del campo de número de aceptación. El campo de checksum contiene el complemento de 1 a 16 bits del complemento a 1 de la suma de todas las palabras de 16 bits del segmento, incluyendo la cabecera del texto. El propósito de este cálculo es determinar si el segmento procedente del transmisor ha llegado libre de errores. El siguiente campo del segmento, denominado puntero de urgente, se utiliza sólo si el indicador de URG está a 1.

El objeto de este puntero es identificar el octeto de datos al que siguen datos urgentes. Los datos urgentes se denominan datos fuera de bada. TCP no dice lo que hay que hacer con los datos urgentes. Depende de la implementación. Dicho de otro modo, sólo se indica el lugar donde empiezan los datos urgentes, no lo que hay que hacer con ellos.

El valor de este campo es un desplazamiento del número de secuencia y apunta al octeto a partir de cual siguen los datos urgentes.El campo de opciones está concebido para posibilitar futuras mejoras de TCP. Está diseñado de forma semejante al campo de opción de los datagramas de IP, en el sentido de que cada opción se especifica mediante un byte que especifica el número de opción, un campo que contiene la longitud de la opción y finalmente, los valores de la opción propiamente dichos. Actualmente el campo de opción tiene un uso bastante limitado, y el estándar TCP sólo especifica tres opciones: 0 : fin de lista de opciones 1 : no operación 2 : tamaño máximo de segmento Finalmente, el campo de relleno asegura que la cabecera TCP ocupa un múltiplo par de 32 bits.

Finalmente, como se muestra en la figura, siguen los datos de usuario. Los protocolos de Internet se han convertido en una de las familias de protocolos más ampliamente utilizada en el mundo. Están diseñados para facilitar la intercomunicación de redes de computadores. Los protocolos Internet constan de muchos protocolos diseñados para dar soporte a las operaciones de comunicación entre redes.. Además, los protocolos interred contienen una gran cantidad de protocolos de nivel de aplicación, como TELNET, el protocolo de transferencia de archivos (FTP) y el protocolo simple de transferencia de correo (SMTP)

Fuentes

Protocolo TCP
Características del Protocolo TCP
Especificaciones para el Protocolo TCP(en inglés)

Enlaces externos