TCP
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 las 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.
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.