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.
Diagrama de un segmento TCP dentro de un paquete IP. El paquete IP contiene secciones de encabezado y datos. La sección de datos IP es el segmento TCP, que a su vez contiene secciones de encabezado y datos.
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.
Diagrama de dos computadoras con flechas entre ellas.
  • Una flecha va de la Computadora 1 a la Computadora 2 etiquetada "SYN".
  • Otra flecha va de la Computadora 2 a la Computadora 1 etiquetada "ACK SYN".
  • Otra flecha va de la Computadora 1 a la Computadora 2 etiquetada "ACK".
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:
Un diagrama del encabezado de TCP con filas de campos. Cada fila tiene 32 bits de larga. La primera fila contiene un número de puerto de origen de 16 bits y uno de destino de 16 bits. La segunda fila contiene un número de secuencia de 32 bits. La tercera fila contiene un número de comprobación de 32 bits. La cuarta fila contiene un número de desplazamiento de datos de 4 bits, 6 bits que están marcados como reservados, 6 bits de control (URG, ACK, PSH, RST, SYN y FIN), y un número de tamaño de ventana de 16 bits. La quinta fila contiene una suma de control de 16 bits y un apuntador de urgencia de 16 bits. El encabezado termina con opciones y relleno que pueden ser de longitud variable.
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.
Diagrama de dos computadoras con flechas entre ellas.
  • Una flecha va de la Computadora 1 a la Computadora 2 y muestra una caja de datos binarios y la etiqueta "Sequence #1".
  • Una flecha va de la Computadora 2 a la Computadora 1 con la etiqueta "ACK".
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:
Un diagrama del encabezado de TCP con filas de campos. Cada fila tiene 32 bits de larga. La primera fila contiene un número de puerto de origen de 16 bits y uno de destino de 16 bits. La segunda fila contiene un número de secuencia de 32 bits. La tercera fila contiene un número de comprobación de 32 bits. La cuarta fila contiene un número de desplazamiento de datos de 4 bits, 6 bits que están marcados como reservados, 6 bits de control (URG, ACK, PSH, RST, SYN y FIN), y un número de tamaño de ventana de 16 bits. La quinta fila contiene una suma de control de 16 bits y un apuntador de urgencia de 16 bits. El encabezado termina con opciones y relleno que pueden ser de longitud variable.
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.
Diagrama de dos computadoras con flechas entre ellas.
  • Una flecha va de la computadora 1 a la computadora 2 con la etiqueta "FIN".
  • Otra flecha va de la computadora 2 a la computadora 1 con la etiqueta "ACK FIN".
  • Otra flecha va de la computadora 1 a la computadora 2 con la etiqueta "ACK".
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.
Diagrama que muestra la retransmisión de un paquete de una computadora a otra. Una flecha va de la primera computadora a la segunda etiquetada con "secuencia #1" y una cadena de datos binarios. Un cronómetro se muestra en varias etapas después de la flecha, primero en 0 tiempo, luego a la mitad del tiempo pasado, y luego cuando pasó todo el tiempo con la alarma encendida. La otra flecha va desde la primera computadora a la segunda, etiquetada igual que la primera flecha.
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.
Diagrama de dos computadoras con flechas entre ellas.
  • Una flecha va de la Computadora 1 a la Computadora 2 y muestra una caja de datos binarios con la etiqueta "Seq #1".
  • Otra flecha va de la Computadora 2 a la Computadora 1 con la etiqueta "Ack #37".
  • Otra flecha va de la Computadora 1 a la Computadora 2 y muestra una caja de datos binarios con la etiqueta "Seq #73".
  • Otra flecha va de la Computadora 2 a la Computadora 1 con la etiqueta "Ack #37".
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.
Diagrama de paquetes TCP que llegan fuera de orden. Se muestran dos computadoras con flechas de ida y vuelta cuya ubicación vertical indica el tiempo de envío y de llegada:
  • Una flecha etiquetada "Seq #1" sale de la Computadora 1 y termina poco después en la Computadora 2.
  • Una flecha etiquetada "Ack #37" sale de la Computadora 2 y termina poco después en la Computadora 1.
  • Una flecha etiquetada "Seq #37" sale de la Computadora 1 y termina antes de llegar a la Computadora 2, con una X indicando que se perdió.
  • Una flecha etiquetada "Seq #73" sale de la Computadora 1 y termina poco después en la Computadora 2.
  • Una flecha etiquetada "Ack #37" sale de la Computadora 2 y termina poco después en la Computadora 1 (antes de la flecha para "Seq #37).
Otras veces, el paquete faltante puede ser uno perdido y el remitente debe retransmitir el paquete.
Diagrama de paquetes TCP que llegan fuera de orden. Se muestran dos computadoras con flechas de ida y vuelta cuya ubicación vertical indica el tiempo de envío y de llegada:
  • Una flecha etiquetada "Seq #1" sale de la Computadora 1 y termina poco después en la Computadora 2.
  • Una flecha etiquetada "Ack #37" sale de la Computadora 2 y termina poco después de la Computadora 1.
  • Una flecha etiquetada "Seq #37" sale de la Computadora 1 y termina antes de llegar a la Computadora 2, con una X indicando que se perdió.
  • Una flecha etiquetada "Seq #73" sale de la Computadora 1 y termina poco después en la Computadora 2.
  • Una flecha etiquetada "Ack #37" sale de la Computadora 2 y termina poco después en la Computadora 1.
  • Una flecha etiquetada "Seq #37" sale de la Computadora 1 y termina poco después en la Computadora 2.
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.
Un diagrama de reensamblaje de datos en TCP.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️¿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.