1.6. Protocolos TCP y UDP



Ejercicio inicio de conexión, #ACK, #SEQ y terminación de la conexión TCP




Recuperación de errores y congestión en TCP e introducción UDP




Creación de segmentos y datagramas en TCP y UDP




Protocolos de la capa de Aplicación que utilizan TCP y UDP




3-WAY Handshake con Wireshark



El contenido completo solo está disponible para miembros. Suscríbete y continúa tu aprendizaje sin interrupciones.
Suscribirme
CCNA 200-301 1. Fundamentos de Redes Protocolos TCP y UDP

Protocolos TCP y UDP en la capa de Transporte

En toda red de computadoras, dos aplicaciones que se comunican entre dispositivos diferentes necesitan ponerse de acuerdo en cómo viajan los datos: si cada paquete tiene que llegar sí o sí, o si es más importante enviar rápido la información aunque algo se pierda en el camino. Esa decisión recae sobre dos protocolos de la capa de Transporte: TCP y UDP. La elección entre uno y otro nunca es al azar, y entender cuándo conviene cada uno es de los conceptos más importantes del examen CCNA.

¿Qué lograrás con esta clase?

  • Identificar el rol de la capa de Transporte en el modelo TCP/IP.
  • Distinguir cuándo una aplicación necesita TCP y cuándo le conviene UDP.
  • Interpretar los campos del header TCP y entender qué función cumple cada uno.
  • Analizar el proceso de establecimiento y cierre de conexión TCP sobre capturas reales.
  • Diferenciar números de secuencia y números de ACK, y su rol en la confiabilidad.
  • Identificar la clasificación de los puertos: Well-known, Registered, Dynamic/Private.
  • Reconocer cómo la multiplexación permite múltiples conexiones simultáneas entre dos dispositivos.

La capa de Transporte y la elección entre TCP y UDP

La capa de Transporte se encarga de gestionar la comunicación entre los procesos de aplicación que se ejecutan en dispositivos diferentes, ofreciéndoles servicios diferenciados según lo que cada aplicación necesite. En la clase repasaremos por qué una página web necesita un servicio/protocolo diferente al de una videollamada, y veremos qué decisiones técnicas hay detrás de esa elección que casi nunca es evidente para el usuario final.

Tanto TCP como UDP operan en esta misma capa, pero ofrecen transporte de datos con operaciones completamente diferentes. Uno está pensado para garantizar que toda la información llegue correctamente, y el otro para entregar de manera más rápida la información aceptando ciertas pérdidas de datos. Analizaremos las características que hacen de cada uno la opción adecuada para escenarios concretos y por qué ambos siguen siendo indispensables en las redes actuales.

Protocolo TCP: confiabilidad y control

El protocolo TCP se caracteriza por ser confiable y orientado a la conexión. Estudiaremos su header campo por campo para entender cómo implementa funciones esenciales como la confiabilidad en la transmisión, la recuperación de errores y el control de flujo. Cada uno de esos campos tiene un propósito específico que tiene sentido únicamente cuando se ve en acción.

Una vez clara la estructura, abordaremos el 3-Way Handshake, el proceso que permite que dos dispositivos establezcan una conexión antes de intercambiar datos reales. Lo veremos primero en teoría y luego sobre capturas en Wireshark. Después profundizaremos en los números de secuencia y los números de ACK, que son la base sobre la que TCP construye toda su confiabilidad.

Para cerrar el análisis de TCP veremos también el proceso de finalización de conexión, el concepto de Maximum Segment Size (MSS) y cómo funcionan la multiplexación y demultiplexación mediante números de puertos, que son las que permiten que un mismo dispositivo mantenga varias conexiones simultáneas sin que se mezclen los datos. Si quieren ir más allá del examen CCNA en este tema, también pueden complementarlo con el curso TCP Básico – Intermedio.

Protocolo UDP: rapidez y eficiencia

A diferencia de TCP, el protocolo UDP se clasifica como best-effort. No garantiza entrega, no establece ni cierra conexiones, y no se preocupa por la congestión ni el control de flujo. Lo que parece una desventaja se convierte en su mayor virtud cuando lo que importa es la velocidad: transmisiones en vivo, videollamadas o juegos en línea son los escenarios donde UDP es más adecuado.

Estudiaremos su header, mucho más simple que el de TCP, veremos cómo gestiona los puertos al igual que su contraparte, y lo analizaremos sobre Wireshark para identificar las diferencias prácticas con el tráfico TCP en una captura real. Al final de la clase tendrán claro cómo se elige el protocolo de transporte adecuado para cada escenario y por qué esa elección es una de las preguntas más recurrentes en el examen CCNA.



Si quieren dominar de verdad los protocolos sobre los que se apoya prácticamente toda la comunicación en Internet, accedan al desarrollo completo de la clase donde combinamos la teoría con capturas reales en Wireshark para que vean los protocolos en acción. ¿Qué esperas? ¡Suscríbete!

❓ Preguntas Frecuentes

¿Cuál es la principal diferencia entre TCP y UDP?

TCP es confiable y orientado a la conexión, lo que significa que garantiza la entrega y el orden de los datos, mientras que UDP es best-effort y prioriza la velocidad sobre la confiabilidad. Cada uno se adapta a tipos de aplicaciones distintos, y entender cuándo conviene cada cual es lo que desarrollamos en profundidad durante la clase.

¿Qué es el 3-Way Handshake de TCP?

Es el proceso por el cual dos dispositivos establecen una conexión TCP antes de intercambiar datos reales. Involucra el envío de mensajes específicos en un orden definido que garantiza que ambos extremos están listos para comunicarse. Cómo se ve este proceso sobre una captura real en Wireshark y qué información intercambian los dispositivos lo analizamos paso a paso durante la lección.

¿Por qué existen diferentes tipos de puertos en TCP y UDP?

Porque los puertos cumplen distintos roles según quién los utilice: hay rangos reservados para servicios estándar, otros para aplicaciones registradas y otros que se asignan dinámicamente. Cuáles son esos rangos, por qué importan y cómo participan en la multiplexación es algo que vemos sobre ejemplos concretos durante la sesión.

 
logo
SI QUIERES DISFRUTAR DE ESTE CONTENIDO, TE INVITAMOS A QUE TE SUSCRIBAS.

PREGUNTAS

Las preguntas que encontraras en esta sección, son similares a las que te encontraras en el examen de certificación.

Paso 1 de 5

  • Este campo está oculto cuando se visualiza el formulario

¡PARTICIPEMOS!

Si te quedaron dudas de la lección, escríbela a continuación y así todos podemos participar y ayudarte.
¿Quieres participar en los debates?… por favor suscríbete

NUESTROS CURSOS Foros Protocolos TCP y UDP

Viendo 15 entradas - de la 16 a la 30 (de un total de 79)
  • Autor
    Entradas
  • #16688
    AlvaroM
    Superadministrador

    Hola Nicolás!

    Si un dispositivo envía un número de secuencia de 1000, el número de secuencia ya representa el primer byte datos…si solamente se envía 1 byte, esto quiere decir que el dispositivo de destino está recibiendo el byte número 1000, por lo tanto esperará recibir en el siguiente segmento los datos a partir del byte número 1001, y este valor de 1001 se envía como número ACK.

    Respecto a la pregunta del test, si el número de secuencia es 1000 y se envían 20 bytes de datos, el número de secuencia 1000 representa el primer de datos que es enviado (de los 20), el segundo byte sería el 1001, el tercer byte el 1002, cuarto byte el 1003 y así sucesivamente…, por lo tanto el último byte que se envía (el 20) debería ser el 1019 no es cierto?… esto quiere decir que el byte que se esperará recibir en el próximo segmento será el byte número 1020 que se detallará en el número de ACK.

    Espero que haya quedado claro con esto. Atento a tus consultas!

    Saludos!

    #16721
    Luis Hernández
    Participante

    En la pregunta 19 no el mss son los datos encapsulados por el segmento? ya que el tamaño de un datagrama se mide por la aplicación?

    #16724
    AlvaroM
    Superadministrador

    Hola Luis y bienvenido al foro!

    Tienes que tener en cuenta que Segmento = TCP y Datagrama = UDP, el MSS es un término utilizado en TCP y representa el tamaño máximo de los datos que van ser encapsulados un segmento, los datos encapsulados son los datos de las aplicaciones. El MSS se obtiene en base al MTU de la capa 2… Si tenemos un MTU de 1500 bytes (tecnología Ethernet en la capa 2), el MSS se obtiene eliminando el header de capa 3 y el header de capa 4 (40 bytes), lo que da como resultado un MSS de 1460 bytes.

    En UDP no existe un MSS, el tamaño del datagrama es definido por los bloques de datos entregados por las aplicaciones que utilizan UDP.

    Dicho esto, en la pregunta 19 la respuesta correcta es: Conformado por los datos de aplicación encapsulados en el segmento

    Estoy atento a tus comentarios! =)

    #16755
    Jose Manrique
    Participante

    Hola Alvaro, saludos.

    Con respecto a la pregunta 19: ¿Qué afirmación es cierta respecto al MSS?
    La respuesta es: Conformado por los datos de aplicación encapsulados en el segmento

    Pero según lo que entendi de la explicación, se puede afirmar que el MSS tambien está conformado por el header de capa 4, capa 3, capa 2 y datos de aplicación.

    Quisieras saber como despejar esta duda.

    #16767
    AlvaroM
    Superadministrador

    Hola Jose!

    En la explicación se indica que el MSS está conformado por los DATOS DE APLICACIÓN. El MSS se obtiene restando el tamaño del header TCP y el tamaño del header IP al MTU de la trama. Si la trama está viajando por un enlace Ethernet, esto significa que el MTU tiene un tamaño de 1500 bytes, a esos 1500 bytes le restamos el tamaño del header TCP (20 bytes), le restamos el tamaño del header IP (20 bytes) y obtenemos el MSS que sería equivalente a 1460 Bytes, estos bytes representan solamente a los datos de APLICACIÓN.

    Acá tenemos una entrada del blog donde hablamos a más detalle de estos datos:

    Opciones TCP – Tamaño Máximo del Segmento (MSS)

    NO es necesario que estudies lo que se menciona en esa entrada de blog, va más alla del nivel de CCNA pero puede servirte para aclarar conceptos.

    Atento a tus comentarios! =D

    #16794
    Jose Manrique
    Participante

    Hola Alvaro,

    Muchas gracias por tu pronta respuesta. Aclarada la duda.

    Saludos.

    #17584
    Elias Gonzalez Varas
    Participante

    Hola profe!

    Consulta. Cuál sería el SN, en el header de un segmento ACK?, no sería igual a 0?

    #17600
    Elias Gonzalez Varas
    Participante

    Otra duda, cómo se define la cantidad y el tamaño de los segmentos que tendrá una ventana TCP?

    #17671
    AlvaroM
    Superadministrador

    Hola Elias!

    Con SN me imagino que te refieres al valor de Sequence Number?… si es así, la respuesta es «depende», depende si es un segmento SYN+ACK en respuesta a un segmento SYN, o si es un segmento ACK que lleva datos de aplicación, en el caso que sea un segmento SYN+ACK en respuesta a un segmento SYN, el valor del SN (ISN) es generado de manera aleatoria. En el ejercicio teórico hemos colocado un valor de ISN = 0 por simplicidad, sin embargo en la realidad no es así.

    Recuerda que en el establecimiento de la conexión se definen los números de secuencia que van a utilizar los 2 extremos de la comunicación y no solo uno (valores aleatorios).

    Respecto a tu segunda consulta, no existe una respuesta absoluta, esto depende de la implementación de TCP en el sistema operativo del dispositivo, a veces se utiliza el mecanismo de «slow start» que comienza con un tamaño de ventana «pequeño» generalmente del tamaño del MSS o 4*MSS, y a medida que se reciben los ACKs este tamaño va incrementándose exponencialmente. En otras situaciones el tamaño de ventana es igual a la máxima cantidad de segmentos que se pueden enviar de acuerdo al tamaño de ventana máximo de 65535, por ejemplo al navegar en una página web en mi computadora, se define un tamaño de ventana de 64240, este valor se obtiene al multiplicar el MSS «normal» de un segmento TCP (al enviarse por una red Ethernet) de 1460 bytes*44, el resultado es 64240.

    Sin embargo como te digo la respuesta es «depende», influye el MSS, el TCP Timestamp, influye si se tiene implementada la característica de Windows Scaling, y también otros valores que son utilizados a nivel de programación, lastimosamente no existe una respuesta simple y clara, tendríamos que analizar otros conceptos que no son estudiados en este curso. Si quieres darle una mirada a los RFCs oficiales que hablan sobre este tema, puedes ingresar a estos enlaces: https://www.ietf.org/rfc/rfc3390.txt y https://tools.ietf.org/html/rfc1323#page-8, como verás no es una lectura simple y toma en cuenta muchos otros términos no aprendidos en estas clases, y además te darás cuenta que en muchos casos, los documentos son «sugerencias» para implementar el tamaño de ventana de una forma determinada, la decisión final de cómo implementar el tamaño de ventana en un dispositivo en particular es del fabricante.

    Espero haberte ayudado con mi respuesta.

    Saludos cordiales.

    • Esta respuesta fue modificada hace 6 años por AlvaroM.
    #17677
    Elias Gonzalez Varas
    Participante

    Muchas gracias por su respuesta maestro!.. me quedó clarísimo.

    #18940
    Ricardo Casillas
    Participante

    Hola Alvaro, tengo una duda respecto al vídeo # 2, ya la habían comentado en el foro pero no logra quedarme claro el por que del lado de la PC durante la transferencia de datos el ACK # siempre es 1, y del lado de servidor el Seq# siempre es 1, me podrías explicar un poco mas detallado el porque el numero no cambia?

    Saludos.

    #18943
    AlvaroM
    Superadministrador

    Hola Ricardo!

    Lo que pasa, es que en el ejemplo estamos ASUMIENDO que el servidor no envía datos a la PC.

    Trabajemos con un ejemplo «CASI REAL» para que este concepto quede más claro. Vamos a trabajar con la interacción que ocurre entre una computadora que accede a una página web “segura” que utiliza el protocolo HTTPS.

    Supongamos que yo me conecto a una página web «prueba.com», YO voy a iniciar el establecimiento de la conexión con el servidor, ¿no es cierto?, asumamos que estamos utilizando valores de ISN de cero en ambos extremos para simplicidad. Recuerda que en la vida real estos valores son generados de manera aleatoria.

    Vayamos paso a paso.

    Establecimiento de la Conexión

    – Yo le envío al servidor mi Número de Secuencia Inicial de 0 (byte fantasma) y mi valor de Ack también de 0 a través del mensaje TCP SYN.
    – El servidor devuelve su respuesta con su propio Número de Secuencia Inicial de 0 (byte fantasma), y devuelve un valor de Ack de 1 (ISN recibido+1 en el establecimiento de la conexión). Estos datos son enviados en el mensaje TCP SYN+ACK.
    – Yo le envío al servidor el valor de número de Ack 1 [ISN del mensaje (SYN+ACK)+1]. Estos datos se envían a través del mensaje ACK.

    Entonces mi computadora tiene su #SEQ = 1, #ACK = 1 y el servidor también tiene los mismos valores #SEQ = 1 y #ACK = 1.

    Hasta acá ya se ha establecido la conexión con el servidor. Esto es lo mismo que analizamos en las clases… ahora sí debe darse el intercambio de datos.

    Intercambio de datos

    Cuando nosotros visitamos una página web con el protocolo HTTPS, existe un intercambio de datos a nivel de Aplicación entre el servidor y el cliente que es relevante para la privacidad de la página web (navegación segura). En este proceso, tanto el servidor como la computadora intercambian bytes, y acá sí veríamos una variación en los números de Secuencia y Ack de ambas partes.

    – Mi computadora va enviar un mensaje del protocolo TLS (seguridad de la página web) que va tener supongamos 400 bytes de datos de Aplicación. El número de Secuencia llegaría a ser 1 y el Ack también sería 1… no existe variación en este momento.

    – El servidor recibe ese mensaje con datos de Aplicación, y debe devolver un mensaje de reconocimiento ACK a mi computadora argumentando de que efectivamente recibió el mensaje enviado.

    – El servidor enviara un segmento ACK con el número de Secuencia de 1 y el número de Ack de 401, ¿porque este número de Ack?… esto porque ya ha recibido por parte de mi computadora los bytes del 1 al 400, y ahora espera recibir el byte 401. Este mensaje no lleva datos de Aplicación, Ok…

    – El servidor en este tipo de aplicación, a continuación también enviará un mensaje del protocolo TLS (seguridad de la página web) que va tener supongamos 600 bytes de datos de Aplicación. El número de Secuencia llegaría a ser 1, y el Ack sería 401. El número de ACK todavía no cambia ya que no se han recibido más mensajes que tengan bytes de datos de Aplicación por parte del cliente.

    – El cliente recibe ese mensaje con datos de Aplicación, y debe devolver un mensaje de reconocimiento ACK al servidor, argumentando de que efectivamente recibió el mensaje enviado.

    – El cliente enviara un segmento ACK con el número de secuencia 401, ¿por qué 401?… esto porque el cliente ya envió los datos del 1 al 400, le toca enviar los datos comenzando desde el byte 401, en este mensaje NO está enviando datos de Aplicación. El número de Ack, llegaría a ser igual a 601, ¿por qué 601?… porque el servidor le ha enviado los bytes desde el 1 al 600, entonces el cliente le indica al servidor con este mensaje, que ya ha recibido esos bytes y que espera en su próximo mensaje al byte número 601.

    – En el siguiente mensaje del servidor al cliente, se tendría un número de Secuencia de 601 y un número de ACK de 401. Y seguramente se enviaran otros datos de Aplicación de acuerdo al funcionamiento de TLS.

    Como puedes ver en esta interacción, AMBOS dispositivos están enviando datos de Aplicación, y esto provoca que los valores de Ack y Seq cambien en los 2 extremos.

    En el ejemplo de la clase, estamos asumiendo POR SIMPLICIDAD, que SOLAMENTE LA PC envía datos de Aplicación, y que el servidor solamente se encarga de RECONOCER la recepción de esos mensajes a través del segmento ACK. El servidor NO LE ENVÍA datos de Aplicación al cliente y es por eso que el número de ACK no cambia desde el cliente al servidor y el número de Secuencia tampoco cambia desde el servidor al cliente.

    Espero que con esta explicación quede más claro!

    Atento a tus comentarios.

    Saludos cordiales.

    • Esta respuesta fue modificada hace 5 años, 11 meses por AlvaroM.
    #18953
    Ricardo Casillas
    Participante

    Muchas gracias por la explicación Alvaro, ya pude comprender mejor la duda que tenia.
    Solo me gustaría saber si en esta parte donde describes que el servidor envía el segmento ACK que seria la respuesta al mensaje del cliente, también mencionas que envía un mensaje del protocolo TLS, que este ya es generado por el servidor hacia el cliente (entiendo que este mensaje es el que hace que el cliente cambie valor de ACK), estos mensajes los envía el servidor de manera separada? o los dos van dentro del mismo mensaje y son enviados al mismo tiempo?
    Copio el texto donde mencionas dicha situación.

    El servidor enviara un segmento ACK con el número de Secuencia de 1 y el número de Ack de 401, ¿porque este número de Ack?… esto porque ya ha recibido por parte de mi computadora los bytes del 1 al 400, y ahora espera recibir el byte 401. Este mensaje no lleva datos de Aplicación, Ok…

    – El servidor en este tipo de aplicación, a continuación también enviará un mensaje del protocolo TLS (seguridad de la página web) que va tener supongamos 600 bytes de datos de Aplicación. El número de Secuencia llegaría a ser 1, y el Ack sería 401. El número de ACK todavía no cambia ya que no se han recibido más mensajes que tengan bytes de datos de Aplicación por parte del cliente.

    Quedo al pendiente
    Agradezco nuevamente tus atenciones.

    #18960
    epmunoz3
    Participante

    Hola que tal la pregunta 3 (el protocolo HTTP), 7 y 19 no le comprendo podrías explicarme, saludos

    #18961
    AlvaroM
    Superadministrador

    Hola Ricardo!

    En este caso, los 2 mensajes son SEPARADOS. Primero se envía el mensaje ACK, y después se envía el mensaje con los datos de Aplicación. A veces se puede enviar directamente el mensaje ACK conjuntamente con los datos de Aplicación, esto ya depende de la manera en que se implementa TCP en el dispositivo. Cuando se envía un segmento ACK conjuntamente con datos de Aplicación se denomina «piggybacked ACK».

    Espero que mi respuesta te ayude!

    Atento a tus comentarios! =)

    Saludos cordiales

Viendo 15 entradas - de la 16 a la 30 (de un total de 79)
  • Debes estar registrado para responder a este debate.