Cómo funciona TCP
¿Y si una página de la carta que enviaste se perdiera por el camino, o la última llegara primero? Con los paquetes de internet pasa lo mismo: algunos se pierden y otros llegan desordenados. Que los mensajes lleguen intactos de todos modos es gracias a TCP.
Sin que falte nada, todo en su sitio
Como vimos, los datos se convierten en trozos pequeños llamados paquetes que cruzan por caminos distintos. Pero esos caminos no son perfectos. Un trozo puede perderse por el camino, o uno posterior puede llegar antes.
Aun así, quien recibe tiene que tener todos los trozos, y en orden. El acuerdo encargado de eso es TCP.
Toca las dos tarjetas para activar las dos promesas que cumple TCP: que no falte nada y que todo llegue en el orden en que se envió.
El objetivo está claro: que no falte nada y que todo llegue en orden. Es fácil de decir, pero con caminos imperfectos cuesta cumplirlo.
TCP lo consigue con tres costumbres: avisar de que algo llegó, volver a enviar cuando no hay respuesta y ordenar por número.
Por cierto, antes de enviar datos, TCP establece primero la conexión intercambiando con el otro lado un breve saludo en tres pasos.
Avisar de que llegó
La primera costumbre es el acuse de recibo. Cada vez que llega un trozo, quien recibe responde brevemente "recibido", y esa respuesta se llama acuse de recibo, o ACK.
Es como pulsar "recibido" cuando te entregan un paquete por mensajería. Solo cuando vuelve un ACK sabe el emisor que ese trozo llegó bien. Sin ACK, todavía no lo sabe.
Toca cada paquete que ha llegado y quien recibe devuelve un acuse de recibo (ACK). Cuando los cuatro tienen acuse, el emisor sabe que todo llegó.
Con un ACK de vuelta por cada trozo, el emisor supo qué había llegado. Un mensaje más por trozo puede hacer que todo parezca algo más lento.
Pero gracias a esa sola palabra se puede localizar con precisión el trozo que falta. Entonces, ¿qué hay que hacer con un trozo cuyo ACK nunca llegó? La respuesta es sencilla: volver a enviarlo.
Volver a enviar si no hay respuesta
La segunda costumbre es la retransmisión. Si el emisor espera un tiempo fijado y sigue sin recibir el ACK de algún trozo, da por hecho que se perdió por el camino y envía otra vez exactamente el mismo trozo.
Quien recibe obtiene el trozo reenviado y esta vez devuelve un ACK. Rellenando así los trozos que faltan, al final no falta ninguno.
Toca los dos huecos cuyo acuse de recibo (ACK) nunca volvió para reenviar esos trozos. Cuando llega un trozo reenviado, su hueco se rellena.
Gracias a la retransmisión ya no falta ningún trozo: todos están en manos de quien recibe.
Pero queda una cosa. Como los trozos cruzaron por caminos distintos, llegaron revueltos: el trozo 5 puede haber llegado antes que el 2. ¿Cómo se pone en orden?
Ordenar por número
La tercera costumbre es ordenar. TCP envía cada trozo con un número: 1, 2, 3, y así sucesivamente.
No importa que el orden de llegada esté revuelto, porque quien recibe mira los números y coloca los trozos empezando por el más pequeño. Aunque el 5 llegue primero, deja libre el sitio del 2 y espera, y cuando están todos los números, el mensaje original vuelve tal cual era.
El TCP real numera los datos por la posición de cada byte y no por trozo, pero la idea es la misma.
Toca los trozos revueltos en orden numérico (1, 2, 3, 4) para ponerlos en fila. Si tocas el que no toca, te indica que pulses el siguiente número; al acertarlos todos, vuelve el mensaje original.
Al ponerlos en fila por número, los trozos revueltos encajaron en el mensaje original. Lo que faltaba se recibió otra vez y se rellenó, y el orden se corrigió con los números.
A quien lo recibe le parece que ningún paquete se perdió ni se cambió de sitio. TCP hizo todo ese trabajo en silencio, entre bastidores.
En resumen
En una línea: los paquetes pueden perderse o llegar desordenados. TCP envía un acuse de recibo (ACK) cuando algo llega, vuelve a enviar cuando no hay respuesta (retransmisión) y ordena por número.
Así, quien recibe siempre lo tiene todo, sin que falte nada y en orden. Fiabilidad antes que velocidad: esa es la promesa de TCP.
Cada vez que pulsas el botón aparece un punto clave más. (pérdida/desorden → ACK al llegar → reenviar si no hay → ordenar por número) Cuando han salido los cuatro, el repaso termina.
Por seguridad, TCP confirma, reenvía y pone en fila, lo que significa esperar un poco más.
A veces esa espera es un desperdicio: en llamadas de voz o videojuegos, por ejemplo, importa más la rapidez que perder un poco. La próxima lección trata de una forma de enviar que se salta los acuses y va rápido.