3. 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 Comunicación, 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 el
aplicaciones que lo utilizan:

Transmisión de transferencia de datos:

Desde el punto de vista de la aplicación, TCP transfiere una 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 ha transmitido realmente al destino. Por eso, un empujón
se define la función. 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 el 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 su buffers de memoria internos. Se envía un ACK en forma indica el nro. secuencia más alta 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 el  sockets utilizados para  el envío y recepción.

Full duplex:

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