El protocolo TCP

El fin de TCP es proveer un flujo de bytes confiable de extremo a extremo sobre una internet no confiable. TCP puede adaptarse dinámicamente a las propiedades de la internet y manejar fallas de muchas clases.
La entidad de transporte de TCP puede estar en un proceso de usuario o en el kernel. Parte un flujo de bytes en trozos y los mande como datagramas de IP.
Para obtener servicio de TCP, el emisor y el recibidor tienen que crear los puntos terminales de la conexión (los sockets).
La dirección de un socket es la dirección de IP del host y un número de 16 bits que es local al host (la puerta). Se identifica una conexión con las direcciones de socket de cada extremo; se puede usar un socket para conexiones múltiples a la vez.

Los números de puerta bajo 256 son puertas bien conocidas para servicios comunes (como FTP).
Las conexiones de TCP son punto-a-punto y full dúplex. No preservan los límites de mensajes.
Cuando una aplicación manda datos a TCP, TCP puede mandarlos inmediatamente o almacenarlos (para acumular más). Una aplicación puede solicitar que TCP manda los datos inmediatamente a través del flag de PUSH (empujar).
TCP también apoya los datos urgentes. TCP manda datos con el flag URGENT inmediatamente. En el destino TCP interrumpe la aplicación (la manda una señal), que permite que la aplicación pueda encontrar los datos urgentes.

Implementación del protocolo

Cada byte en una conexión de TCP tiene su propio número de secuencia de 32 bits.

En TCP se mandan datos en segmentos. Un segmento tiene un encabezamiento de 20 bytes (más opciones) y datos de cero o más bytes. Hay dos límites en el tamaño de segmentos: el tamaño máximo de un paquete de IP (64K bytes) y la unidad de transferencia máxima (MTU, maximum transfer unit) de cada red.

Si un segmento es demasiado grande para una red, los ruteadores lo puede dividir en segmentos nuevos (cada segmento nuevo añade un overhead de 40 bytes).

TCP usa un protocolo de ventana deslizante. Cuando un emisor manda un segmento, inicia un reloj. El destino responde con un segmento que contiene un acuse de recibo con un número de acuse igual al próximo número de secuencia que espera. Si el reloj termina antes de que llegue el acuse, el emisor manda el segmento de nuevo.

Problemas:

Se puede generar un acuse para un fragmento de un segmento, pero se puede perder el resto.

Los segmentos pueden llegar fuera de orden.

Con fragmentación y retransmisión, es posible que fragmentos de una transmisión y una retransmisión lleguen a la vez.

La red puede tener congestión.

Nivel de Transporte/El protocolo TCP

 

Cantidad de palabras de 32 bits contenidas en la cabecera. Sin uso en la actualidad