If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Protocolo de control de transmisión (TCP)

El Protocolo de control de transmisiones (TCP) es un protocolo de transporte que se usa sobre IP para asegurar transmisión confiable de paquetes.
TCP incluye mecanismos para resolver muchos de los problemas que surgen en la mensajería basada en paquetes, tales como paquetes perdidos, paquetes fuera de orden, paquetes duplicados y paquetes corruptos.
Dado que TCP es el protocolo usado más comúnmente sobre IP, la pila del protocolo de Internet a veces se denomina TCP/IP.

Formato de paquetes

Al enviar paquetes usando TCP/IP, la porción de datos de cada paquete IP está formateada como un segmento TCP.
Cada segmento TCP contiene un encabezado y datos. El encabezado TCP contiene muchos más campos que el encabezado UDP y puede variar en tamaño de 20 a 60 bytes, dependiendo del tamaño del campo de opciones.
El encabezado TCP comparte algunos campos con el encabezado UDP: número de puerto de origen, número de puerto de destino, y suma de control. Para recordar cómo se utilizan estos, revisa el artículo UDP.

De principio a fin

Vayamos paso a paso por el proceso de transmitir un paquete con TCP/IP.

Paso 1: establecer conexión

Cuando dos computadoras quieren enviar datos entre sí a través de TCP, necesitan establecer primero una conexión usando un apretón de manos de tres vías.
La primera computadora envía un paquete con el bit SYN en 1 (SYN = "sincronizar?"). La segunda computadora devuelve un paquete con el bit ACK en 1 (ACK = "recibido!" ) más el bit SYN en 1. La primera computadora responde con un ACK.
Los bits SYN y ACK son parte del encabezado TCP:
Los bits ACK y SYN están resaltados en la cuarta fila del encabezado.
De hecho, los tres paquetes involucrados en el apretón de manos de tres vías normalmente no incluyen ningún dato. Una vez que las computadoras completan el apretón de manos, están listas para recibir paquetes que contengan datos reales.

Paso 2: envío de paquetes de datos

Cuando un paquete de datos se envía sobre TCP, el destinatario siempre debe confirmar su recepción.
La primera computadora envía un paquete con datos y un número de secuencia. La segunda computadora confirma con el bit ACK encendido e incrementa el número de confirmación con la longitud de los datos recibidos.
Los números de secuencia y de confirmación son parte del encabezado de TCP:
El número de secuencia de 32 bits y el número de confirmación están resaltados.
Esos dos números le ayudan a las computadoras a dar seguimiento a los datos que han sido recibidos con éxito, a los que se perdieron y a los que se enviaron accidentalmente dos veces.

Paso 3: cerrar la conexión

Cualquiera de las dos computadoras puede cerrar la conexión cuando ya no quiere enviar o recibir más datos.
Una computadora inicia el cierre de la conexión enviando un paquete con el bit FIN en 1 (FIN = finalizar). La otra computadora responde con un ACK y otro FIN. Una vez que la computadora que inició el proceso envía otro ACK, la conexión se cierra.

Detección de paquetes perdidos

Las conexiones TCP pueden detectar paquetes perdidos usando un tiempo de espera.
Después de enviar un paquete, el remitente inicia un temporizador y coloca el paquete en una cola de retransmisión. Si el temporizador termina y el remitente aún no ha recibido un ACK del destinatario, entonces envía el paquete de nuevo.
La retransmisión puede hacer que el destinatario reciba paquetes duplicados, si un paquete no estaba realmente perdido pero solo muy retrasado en llegar o en ser confirmado. Si es así, el destinatario simplemente descarta los paquetes duplicados. ¡Es mejor tener datos duplicados que no tenerlos!

Manejo de paquetes fuera de orden

Las conexiones TCP pueden detectar paquetes fuera de orden usando los números de secuencia y de confirmación.
Cuando el destinatario ve un número de secuencia más alto que lo que ha confirmado hasta ahora, sabe que falta al menos un paquete. En la situación mostrada arriba, el destinatario ve un número de secuencia #73, pero esperaba un número de secuencia #37. El destinatario le indica al remitente que algo salió mal enviando un paquete con un número de confirmación igual al número de secuencia que esperaba.
A veces el paquete faltante simplemente tomó una ruta más lenta a través de Internet y llega un poco después.
Otras veces, el paquete faltante puede ser uno perdido y el remitente debe retransmitir el paquete.
En ambas situaciones, el destinatario tiene que manejar paquetes fuera de orden. Afortunadamente, el destinatario puede usar los números de secuencia para ensamblar de nuevo los datos en el orden correcto.
🙋🏽🙋🏻‍♀️🙋🏿‍♂️¿Tienes alguna pregunta sobre este tópico? Nos encantaría contestarte; ¡simplemente pregunta en el área de preguntas abajo!

¿Quieres unirte a la conversación?

  • Avatar starky ultimate style para el usuario David Máximo
    ¿Cuál es el propósito del «apretón de manos»? ¿No bastaría simplemente con iniciar la comunicación enviando los datos que se quieren transmitir?
    (1 voto)
    Avatar Default Khan Academy avatar para el usuario
  • Avatar sneak peak purple style para el usuario J.
    El TCP, es el protocolo usado en IP para la confirmación de datos enviados, en caso de que estos sean duplicados o que tardaron en llegar, lo hace conectándose usando una secuencia de alerta, la otra maquina afirma y ya hay conexión, si quieren cesar solo ponen la alerta de finalización. Hay otros casos donde un paquete tarde en llegar y se tiene que reenviar, haciendo un duplicado, también cuando un paquete esta perdido o llega uno diferente.
    (1 voto)
    Avatar Default Khan Academy avatar para el usuario
¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.