2. TCP Transmission Control Protocol

  • TCP es un protocolo estándar con STD número 7.

TCP se describe en RFC 793 como Protocolo de Control de Transmisión. Específicamente incluye:

  • recuperación de errores.
  • control de flujo y confiabilidad.

TCP es un protocolo orientado a la conexión, a diferencia de UDP, que no tiene conexión.

La mayoría de los protocolos de aplicación de usuario, utilizan TCP. Los dos procesos a comunicarse entre sí a través de una conexión TCP (InterProcess Comunication, o IPC), como se muestra en la Figura:


En la figura, los procesos 1 y 2 se comunican a través de una conexión TCP transportada por datagramas IP. 

Como se señaló anteriormente, el propósito principal de TCP es proporcionar un circuito lógico confiable (Virtual) o servicio de conexión entre pares de procesos.

No asume confiabilidad de los protocolos de nivel inferior (como IP), por lo que TCP debe garantizar esto por sí mismo.

TCP se puede caracterizar por las siguientes facilidades que proporciona para las aplicaciones que lo utilizan:

Transmisión de transferencia de datos:

Desde el punto de vista de la aplicación, TCP transfiere un flujo contiguo de bytes a través de la red. La aplicación no tiene  que molestarse en cortar los datos en bloques básicos o datagramas. TCP hace esto agrupando los bytes en segmentos TCP, que se pasan a la Capa IP para la transmisión al destino. Además, el propio TCP decide cómo segmentar los datos, y puede reenviarlos a su propia conveniencia.

A veces, una aplicación necesita asegurarse de que todos los datos pasados ​​a TCP
se han transmitido realmente al destino. Por eso, define la función la función Push la cual empujará (Push) todos los segmentos TCP restantes aún en almacenamiento para el anfitrión de destino. La función de conexión cerrada normal también empuja los datos al destino.

Confiabilidad:

TCP asigna un número de secuencia a cada byte transmitido, y espera un  reconocimiento positivo (ACK) de la capa TCP receptora. Si el ACK no se recibe dentro de un intervalo de tiempo de espera, los datos se retransmiten.
Debido a que los datos se transmiten en bloques (segmentos TCP), solo la secuencia del número del primer byte de datos en el segmento se envía al host de destino.

El TCP receptor usa los números de secuencia para reorganizar los segmentos cuando llegan fuera de orden, y para eliminar segmentos duplicados.

Control de flujo:

El TCP receptor, al enviar un ACK al remitente, también indica al remitente el número de bytes que puede recibir (más allá del último segmento TCP recibido) sin causar overrun y overflow en sus buffers de memoria internos. Se envía un ACK en forma que se indica el nro. secuencia más alta que puede recibir sin problemas, sin llenar su buffer. Este mecanismo también se conoce como un mecanismo de ventana deslizante (visto en control de flujo).

Multiplexación:

Se logra mediante el uso de puertos, al igual que con UDP.

Conexiones lógicas:

la confiabilidad y los mecanismos de control de flujo descritos aquí requieren que TCP inicialice y mantenga cierta información de estado para cada flujo de datos. La combinación de este estado, incluidos los sockets, números de secuencia y tamaños de ventana, se denomina conexión lógica. Cada conexión se identifica de forma única por los sockets utilizados para el envío y recepción.

Full duplex:

TCP provee un vínculo en ambas direcciones para el flujo de datos.