Saltar al contenido
Portada » Blog – Laprovittera Carlos » TryHackMe – Packets & Frames

TryHackMe – Packets & Frames

TCP vs UDP: Entendiendo la Fiabilidad y la Velocidad en la Red

Hola, hacketones! En este capítulo de TryHackMe – Packets & Frames veremos que: En la capa de transporte es donde se define uno de los dilemas más importantes de la comunicación en red: ¿priorizar integridad o velocidad? TCP y UDP representan dos enfoques completamente distintos para mover datos a través de Internet, y comprender sus diferencias permite interpretar comportamientos de servicios, analizar tráfico y detectar posibles vectores de ataque.

TCP es un protocolo orientado a conexión. Antes de intercambiar información, establece un canal confiable mediante el conocido apretón de manos de tres vías. Primero se envía un paquete SYN para iniciar la comunicación, luego el servidor responde con SYN/ACK confirmando la recepción y sincronizando secuencias, y finalmente el cliente envía un ACK para cerrar el acuerdo y comenzar la transmisión. Este proceso garantiza que ambas partes estén listas y que los datos lleguen íntegros y en el orden correcto. Además, TCP implementa control de flujo, control de congestión y retransmisión de paquetes perdidos, lo que lo convierte en la base de servicios donde la integridad es crítica, como la navegación web, la transferencia de archivos o conexiones remotas seguras.

UDP, en cambio, adopta un enfoque sin estado. No establece conexión previa ni verifica que los paquetes lleguen correctamente. Simplemente envía los datos y continúa. Esta simplicidad reduce la sobrecarga y mejora la velocidad, lo que lo hace ideal para aplicaciones que toleran cierta pérdida de información, como streaming de video, VoIP o videojuegos en línea. En estos escenarios, es preferible perder un fragmento de audio que detener la transmisión para retransmitirlo.

Ambos protocolos incorporan mecanismos como la checksum para verificar si los datos se corrompieron durante el tránsito, pero solo TCP actúa activamente cuando detecta errores, reenviando información hasta asegurar su entrega correcta. Esa diferencia marca el impacto en rendimiento y seguridad.

Desde la perspectiva del hacking y el pentesting, entender esta distinción es clave. Los escaneos de puertos TCP permiten detectar servicios activos gracias a respuestas claras del handshake, mientras que el análisis sobre UDP suele ser más complejo debido a la ausencia de confirmaciones consistentes. Además, ataques como SYN flood explotan precisamente la fase inicial de conexión de TCP, saturando recursos del servidor.

Puertos comunes como 22 para SSH, 80 y 443 para HTTP y HTTPS, o 3389 para RDP suelen operar sobre TCP por su necesidad de confiabilidad. Sin embargo, muchos servicios modernos combinan ambos protocolos para optimizar rendimiento y experiencia.

Comprender TCP y UDP no es solo memorizar diferencias técnicas, sino internalizar cómo afectan el comportamiento de la red, el análisis de tráfico y la superficie de ataque. En seguridad, cada protocolo cuenta una historia distinta sobre cómo se mueve la información y dónde pueden aparecer oportunidades o riesgos.

Protocolos de Red, Capas y Estándares de Comunicación

ProtocoloCapa del Modelo OSITipo de ConexiónPuertos EstándarCaracterísticas PrincipalesVentajasDesventajasUso Recomendado (Inferido)
TCP (Protocolo de Control de Transmisión)Capa de TransporteBasado en conexión0Utiliza un protocolo de enlace de tres vías (SYN, SYN/ACK, ACK) y garantiza que los datos se reciban mediante acuses de recibo y números de secuencia.– Garantiza la integridad de los datos.<br>- Sincroniza dispositivos para evitar inundación de datos.<br>- Mayor confiabilidad mediante procesos de verificación.– Más lento que UDP por la carga computacional.<br>- Requiere conexión confiable; si falta un fragmento, debe reenviarse todo.<br>- Puede causar cuellos de botella.Transferencia de archivos, navegación web (HTTP/HTTPS) y situaciones donde la integridad de los datos es crítica.
UDP (Protocolo de Datagramas de Usuario)Capa de TransporteSin estado0No requiere establecer una conexión previa ni realiza acuses de recibo. Es un protocolo simple con pocos encabezados.– Mucho más rápido que TCP.<br>- Menor latencia al no reservar conexiones continuas.<br>- Flexibilidad para que la aplicación controle la velocidad.– No garantiza la recepción de datos.<br>- No posee mecanismos de integridad o salvaguardas.<br>- Experiencia deficiente en conexiones inestables.Transmisión de video en vivo (streaming), chats de voz y videollamadas donde se tolera la pérdida de paquetes.
IP (Protocolo de Internet)Capa de RedSin estadoSin dato en fuenteManeja el direccionamiento de paquetes mediante encabezados de dirección de origen y destino, y utiliza un Tiempo de Vida (TTL).– Permite el enrutamiento global de datos.<br>- Eficiente para fragmentar mensajes grandes.– Por sí solo no garantiza la entrega (depende de capas superiores).Enrutamiento y direccionamiento de datos a través de redes interconectadas.
HTTPS (HTTP Seguro)Capa de AplicaciónBasado en conexión443Versión de HTTP que utiliza encriptación para la transmisión de datos.– Alta seguridad y privacidad de los datos del usuario.– Mayor consumo de recursos por el cifrado.Navegación web segura, transacciones bancarias y manejo de datos personales.
RDP (Protocolo de Escritorio Remoto)Capa de AplicaciónBasado en conexión3389Proporciona una interfaz visual de escritorio para el acceso remoto a sistemas.– Permite una experiencia de usuario completa (GUI) a distancia.– Requiere mayor ancho de banda que SSH.Soporte técnico remoto y administración visual de servidores Windows.
SMB (Bloque de Mensajes del Servidor)Capa de AplicaciónBasado en conexión445Permite compartir archivos y dispositivos como impresoras en una red.– Facilita el uso compartido de recursos de hardware en red.– Históricamente vulnerable a ciertos ataques si no está actualizado.Entornos de oficina para compartir impresoras y carpetas de red.
HTTP (Protocolo de Transferencia de Hipertexto)Capa de AplicaciónBasado en conexión80Protocolo base de la World Wide Web para descargar texto, imágenes y videos.– Estándar universal para la navegación web.– No utiliza cifrado de forma nativa.Acceso a contenido web público no sensible.
SSH (Secure Shell)Capa de AplicaciónBasado en conexión22Interfaz basada en texto para la gestión segura de sistemas remotos.– Proporciona una gestión segura y cifrada.– Limitado a interfaces de texto (CLI).Administración remota de servidores y dispositivos de red de forma segura.
FTP (Protocolo de Transferencia de Archivos)Capa de AplicaciónBasado en conexión21Basado en un modelo cliente-servidor para descargar archivos desde una ubicación central.– Especializado en transferencia de archivos masivos.– Menos seguro que alternativas cifradas si no se implementan extensiones.Transferencia y descarga de archivos en redes locales o servidores dedicados.

¿Qué son los paquetes y los marcos?

Los paquetes y las tramas son pequeños fragmentos de datos que, al unirse, forman un fragmento de información o mensaje más grande. Sin embargo, son dos cosas diferentes en el modelo OSI. 

Un paquete es un fragmento de datos de la Capa 3 (Capa de Red) del modelo OSI, que contiene información como el encabezado IP y la carga útil. Sin embargo, en la Capa 2 (Enlace de Datos) del modelo OSI se utiliza una trama , que encapsula el paquete y añade información adicional, como las direcciones MAC.

Este proceso es similar al envío de una carta por correo. El sobre es un marco que se utiliza para trasladar el contenido (en esta analogía, el paquete) a otro lugar. Una vez que el destinatario abre el sobre (marco), sabrá cómo reenviar la carta (paquete).

Este proceso se denomina encapsulación, y lo analizamos en la sala 3: el modelo OSI . En esta etapa, podemos asumir que, cuando hablamos de direcciones IP, nos referimos a paquetes. Cuando se elimina la información de encapsulación, nos referimos a la trama misma.

Los paquetes son una forma eficiente de comunicar datos a través de dispositivos en red, como los que se explicaron en la Tarea 1. Debido a que estos datos se intercambian en fragmentos pequeños, hay menos posibilidades de que se produzcan cuellos de botella en una red que si se envían mensajes grandes a la vez.

Por ejemplo, al cargar una imagen de un sitio web, esta no se envía a tu ordenador completa, sino en pequeños fragmentos que se reconstruyen en tu ordenador. La imagen a continuación ilustra este proceso. La imagen del gato se divide en tres paquetes, que se reconstruyen al llegar al ordenador para formar la imagen final.

Los paquetes tienen diferentes estructuras que dependen del tipo de paquete que se envía. Como veremos más adelante, las redes están repletas de estándares y protocolos que actúan como un conjunto de reglas que rigen el manejo de paquetes en un dispositivo. Con miles de millones de dispositivos conectados a internet, todo puede colapsar rápidamente si no existe una estandarización.

Continuemos con nuestro ejemplo del Protocolo de Internet. Un paquete que utiliza este protocolo tendrá un conjunto de encabezados que contienen información adicional a los datos que se envían a través de la red.

Algunos encabezados notables incluyen:

EncabezamientoDescripción
Tiempo de vivir¡Este campo establece un temporizador de expiración para que el paquete no obstruya su red si nunca logra llegar a un host o escapar!
Suma de comprobaciónEste campo permite comprobar la integridad de protocolos como TCP /IP. Si se modifica algún dato, este valor será diferente del esperado y, por lo tanto, estará corrupto.
Dirección de origenLa dirección IP del dispositivo desde  el que se envía el paquete para que los datos sepan a dónde regresar .
Dirección de destinoLa dirección IP del dispositivo al que se envía el paquete para que los datos sepan a dónde viajar a continuación.

 

Responda las preguntas a continuación

¿Cómo se llama un dato cuando contiene información de dirección IP?

Packet

¿Cómo se llama un dato cuando no tiene información de dirección IP?

Frame

TCP/IP (el protocolo de enlace de tres vías)

TCP  (o  Protocolo de Control  de Transmisión para  abreviar ) es otra de estas reglas utilizadas en redes.

Este protocolo es muy similar al modelo OSI que ya hemos analizado en la sala tres de este módulo. El protocolo TCP /IP consta de cuatro capas y podría decirse que es solo una versión resumida del modelo OSI. Estas capas son:

  • Solicitud
  • Transporte
  • Internet
  • Interfaz de red

De forma muy similar al funcionamiento del modelo OSI, la información se añade a cada capa del modelo TCP a medida que el dato (o paquete) la atraviesa. Como recordará, este proceso se conoce como encapsulación, mientras que su proceso inverso es la desencapsulación.

Una característica definitoria de TCP es que está  basado en conexión , lo que significa que TCP debe establecer una conexión entre un cliente y un dispositivo que actúa como servidor  antes de que  se envíen los datos.

Por ello, TCP garantiza que cualquier dato enviado se reciba en el otro extremo. Este proceso se denomina protocolo de enlace de tres vías, que abordaremos en breve.  A continuación, se incluye una tabla que compara las ventajas y desventajas de TCP :

Ventajas del TCPDesventajas del TCP
Garantiza la integridad de los datos.Requiere una conexión confiable entre ambos dispositivos. Si no se recibe un pequeño fragmento de datos, no se podrá utilizar todo el fragmento y deberá reenviarse.
Capaz de sincronizar dos dispositivos para evitar que cada uno de ellos se inunde con datos en el orden incorrecto.Una conexión lenta puede causar un cuello de botella en otro dispositivo, ya que la conexión estará reservada en el otro dispositivo todo el tiempo.
Realiza muchos más procesos para mayor confiabilidadTCP es significativamente más lento que UDP porque los dispositivos que utilizan este protocolo deben realizar más trabajo (computación).

Los paquetes TCP contienen varias secciones de información, conocidas como encabezados, que se añaden mediante la encapsulación. A continuación, se explican algunos de los encabezados cruciales:

EncabezamientoDescripción
Puerto de origenEste valor corresponde al puerto abierto por el remitente para enviar el paquete TCP . Este valor se elige aleatoriamente (entre los puertos 0-65535 que no estén en uso en ese momento).
Puerto de destinoEste valor es el número de puerto en el que una aplicación o servicio se ejecuta en el host remoto (el que recibe datos); por ejemplo, un servidor web que se ejecuta en el puerto 80. A diferencia del puerto de origen, este valor no se elige al azar.
IP de origenEsta es la dirección IP del dispositivo que envía el paquete.
IP de destinoEsta es la dirección IP del dispositivo al que está destinado el paquete.
Número de secuenciaCuando se establece una conexión, el primer dato transmitido recibe un número aleatorio. Explicaremos esto con más detalle más adelante.
Número de acuse de reciboDespués de que a un fragmento de datos se le ha asignado un número de secuencia, el número para el siguiente fragmento de datos tendrá el número de secuencia + 1. También explicaremos esto con más profundidad más adelante.
Suma de comprobaciónEste valor es lo que otorga integridad TCP . Se realiza un cálculo matemático donde se memoriza la salida. Cuando el dispositivo receptor realiza el cálculo matemático, los datos deben estar corruptos si la salida es diferente a la enviada.
DatosEste encabezado es donde se almacenan los datos, es decir, los bytes de un archivo que se está transmitiendo.
BanderaEste encabezado determina cómo debe gestionarse el paquete cada dispositivo durante el proceso de enlace. Indicadores específicos determinarán comportamientos específicos, que explicaremos a continuación.

A continuación, analizaremos el  protocolo de enlace de tres vías,  el término que se utiliza para establecer una conexión entre dos dispositivos.  Este protocolo se comunica mediante mensajes especiales; la tabla a continuación destaca los principales:

PasoMensajeDescripción
1SINÓNIMOUn mensaje SYN es el paquete inicial que envía un cliente durante el protocolo de enlace. Este paquete se utiliza para iniciar una conexión y sincronizar los dos dispositivos (lo explicaremos más adelante).
2SINCRONIZACIÓN/RECONOCIMIENTOEste paquete es enviado por el dispositivo receptor (servidor) para confirmar el intento de sincronización del cliente.
3Acuse de reciboEl paquete de reconocimiento puede ser utilizado tanto por el cliente como por el servidor para confirmar que se han recibido exitosamente una serie de mensajes/paquetes.
4DATOSUna vez establecida una conexión, los datos (como los bytes de un archivo) se envían a través del mensaje «DATA».
5ALETAEste paquete se utiliza para cerrar de forma limpia (adecuada) la conexión una vez que se ha completado.
#RSTEste paquete finaliza abruptamente toda comunicación. Es el último recurso e indica que hubo algún problema durante el proceso. Por ejemplo, si el servicio o la aplicación no funcionan correctamente, o si el sistema presenta fallos como recursos insuficientes. 

El diagrama a continuación muestra un proceso normal de protocolo de enlace de tres vías entre Alice y Bob. En la vida real, esto ocurriría entre dos dispositivos. A todos los datos enviados se les asigna una secuencia numérica aleatoria y se reconstruyen utilizando esta secuencia numérica, incrementándola en 1. Ambas computadoras deben acordar la misma secuencia numérica para que los datos se envíen en el orden correcto. Este orden se acuerda en tres pasos:

  1. SYN – Cliente: Aquí está mi Número de Secuencia Inicial (ISN) para  cronometrar SYN con (0)
  2. SYN/ACK – Servidor: Aquí está mi Número de Secuencia Inicial (ISN) para  sincronizar con SYN (5000) y  reconozco su secuencia numérica inicial (0)
  3. ACK – Cliente:  Reconozco su Número de Secuencia Inicial (ISN) de (5,000), aquí hay algunos datos que son mi ISN + 1 (0 + 1)
DispositivoSecuencia de números iniciales (ISN)        Secuencia numérica final        
Cliente (Remitente)        00 + 1 = 1
Cliente (Remitente)        1    1 + 1 = 2        
Cliente (Remitente)        22 + 1 = 3

TCP Cerrar una conexión:

Expliquemos brevemente el proceso por el cual TCP cierra una conexión. En primer lugar, TCP cierra la conexión una vez que un dispositivo determina que el otro dispositivo ha recibido correctamente todos los datos.

Debido a que TCP reserva recursos del sistema en un dispositivo, es recomendable cerrar las conexiones TCP lo antes posible.

Para iniciar el cierre de una conexión TCP , el dispositivo enviará un paquete «FIN» al otro dispositivo. Por supuesto, con TCP , el otro dispositivo también deberá confirmar la recepción de este paquete.

Demostremos este proceso usando a Alice y Bob como lo hicimos anteriormente.

En la ilustración, vemos que Alice le envió a Bob un paquete » FIN «. Como Bob lo recibió, le informará a Alice que lo recibió y que también desea cerrar la conexión (usando FIN). Alice ha escuchado a Bob alto y claro y le informará que lo reconoce.

Responda las preguntas a continuación

¿Cuál es el encabezado de un paquete TCP que garantiza la integridad de los datos?

Checksum

Proporcionar el orden de un protocolo de enlace de tres vías normal (con cada paso separado por una coma)

SYN,SYN/ACK,ACK

Práctico – Apretón de manos

¡Ayuda a Alice y Bob a comunicarse volviendo a ensamblar el protocolo de enlace TCP en el orden correcto en el laboratorio estático adjunto a esta tarea! Introduzca el valor de la bandera dada al final de la conversación en la pregunta a continuación.

Responda las preguntas a continuación

¿Cual es el valor de la bandera entregada al final de la conversación?

THM{TCP_CHATTER}

UDP/IP

El  Protocolo  de Datos de  Usuario ( UDP ) es otro protocolo que se utiliza para comunicar datos entre dispositivos.

A diferencia de su hermano TCP , UDP es un  protocolo sin estado  que no requiere una conexión constante entre dos dispositivos para el envío de datos. Por ejemplo, no se produce el protocolo de enlace de tres vías ni hay sincronización entre ambos dispositivos.

Recuerde algunas de las comparaciones realizadas entre estos dos protocolos en la Sala 3: «Modelo OSI». En concreto, UDP se utiliza en situaciones donde las aplicaciones pueden tolerar la pérdida de datos (como la transmisión de video o el chat de voz) o en escenarios donde una conexión inestable no es la solución definitiva. A continuación, se incluye una tabla que compara las ventajas y desventajas de UDP :

Ventajas de UDPDesventajas de UDP
UDP es mucho más rápido que TCP .A UDP no le importa si se reciben los datos o no.
UDP deja que la aplicación (software del usuario) decida si hay algún control sobre la velocidad con la que se envían los paquetes.Es bastante flexible para los desarrolladores de software en este sentido.
UDP no reserva una conexión continua en un dispositivo como lo hace TCP .Esto significa que las conexiones inestables resultan en una experiencia terrible para el usuario.

Como se mencionó, no se lleva a cabo ningún proceso al establecer una conexión entre dos dispositivos. Esto significa que no se tiene en cuenta si se reciben o no datos, ni existen salvaguardas como las que ofrece TCP , como la integridad de los datos.

Los paquetes UDP son mucho más simples que los paquetes TCP y tienen menos encabezados. Sin embargo, ambos protocolos comparten algunos encabezados estándar, que se detallan en la siguiente tabla:

EncabezamientoDescripción
Tiempo de vida ( TTL )Este campo establece un temporizador de expiración para el paquete, de modo que no congestione su red si nunca logra llegar a un host o escapar.
Dirección de origenLa dirección IP del dispositivo desde el que se envía el paquete, para que los datos sepan a dónde regresar.
Dirección de destinoLa dirección IP del dispositivo al que se envía el paquete para que los datos sepan a dónde viajar a continuación.
Puerto de origenEste valor corresponde al puerto que el remitente abre para enviar el paquete UDP . Este valor se elige aleatoriamente (de entre los puertos 0-65535 que no estén en uso en ese momento).
Puerto de destinoEste valor es el número de puerto en el que una aplicación o servicio se ejecuta en el host remoto (el que recibe los datos); por ejemplo, un servidor web que se ejecuta en el puerto 80. A diferencia del puerto de origen, este valor no se elige al azar.
DatosEste encabezado es donde se almacenan los datos, es decir, los bytes de un archivo que se está transmitiendo.

A continuación, analizaremos las diferencias entre el proceso de una conexión mediante UDP y el de un protocolo como TCP . Cabe recordar que UDP no tiene estado . No se envía ninguna confirmación durante la conexión.

El diagrama a continuación muestra una conexión UDP normal entre Alice y Bob. En la vida real, esto sería entre dos dispositivos.

Responda las preguntas a continuación

¿Qué significa el término «UDP»?

User Datagram Protocol

¿Qué tipo de conexión es «UDP»?

stateles

¿Qué protocolo utilizarías para transferir un archivo?

TCP

¿Qué protocolo utilizarías para realizar una videollamada?

UDP

Puertos 101 (Práctico)

Quizás su nombre lo defina acertadamente, los puertos son un punto esencial para el intercambio de datos. Piense en un puerto. Los barcos que deseen atracar en el puerto deberán dirigirse a un puerto compatible con las dimensiones y las instalaciones del buque. Cuando el barco atraque, conectará con un  puerto  en el puerto. Imaginemos, por ejemplo, que un crucero no puede atracar en un puerto destinado a un pesquero y viceversa.

Estos puertos determinan qué se puede estacionar y dónde; si no es compatible, no se puede estacionar aquí. Los dispositivos de red también usan puertos para aplicar reglas estrictas al comunicarse entre sí. Una vez establecida una conexión (recordando la sala del modelo OSI), cualquier dato enviado o recibido por un dispositivo se enviará a través de estos puertos. En informática, los puertos son un valor numérico entre   y  65535  (65,535).

Dado que los puertos pueden variar entre 0 y 65535, existe el riesgo de perder rápidamente la pista de qué aplicación está usando cada puerto. ¡Un puerto congestionado es un caos! Afortunadamente, asociamos aplicaciones, software y comportamientos con un conjunto estándar de reglas. Por ejemplo, al exigir que los datos de cualquier navegador web se envíen por el puerto 80, los desarrolladores de software pueden diseñar un navegador web como Google Chrome o Firefox para que interprete los datos de la misma manera.

Esto significa que todos los navegadores web ahora comparten una regla común: los datos se envían a través del puerto 80. La apariencia, el funcionamiento y la facilidad de uso de los navegadores dependen del diseñador o de la decisión del usuario.

Si bien la regla estándar para datos web es  el puerto 80 , a algunos otros protocolos se les ha asignado una regla estándar. Cualquier puerto entre  0  y  1024  (1024) se considera puerto común. Exploremos algunos de estos protocolos a continuación:

ProtocoloNúmero de puertoDescripción
Protocolo de transferencia de archivos ( FTP )21Este protocolo es utilizado por una aplicación de intercambio de archivos basada en un modelo cliente-servidor, lo que significa que puede descargar archivos desde una ubicación central.
Secure Shell ( SSH )​22Este protocolo se utiliza para iniciar sesión de forma segura en los sistemas a través de una interfaz basada en texto para la gestión.
Protocolo de transferencia de hipertexto ( HTTP )80Este protocolo impulsa la World Wide Web (WWW). Tu navegador lo utiliza para descargar texto, imágenes y vídeos de páginas web.
Protocolo seguro de transferencia  de hipertexto  ( HTTPS )        443Este protocolo hace exactamente lo mismo que el anterior; sin embargo, utiliza encriptación de forma segura.
Bloque de mensajes del servidor ( SMB )445Este protocolo es similar al Protocolo de transferencia de archivos ( FTP ); sin embargo, además de archivos, SMB permite compartir dispositivos como impresoras.
Protocolo de escritorio remoto ( RDP )​3389Este protocolo es un medio seguro de iniciar sesión en un sistema utilizando una interfaz de escritorio visual (a diferencia de las limitaciones basadas en texto del protocolo SSH ).

Hemos cubierto brevemente los protocolos más comunes en ciberseguridad. Puede consultar una tabla con los 1024 puertos comunes para obtener más información. Cabe destacar que estos protocolos solo cumplen con los estándares. Es decir, se pueden administrar aplicaciones que interactúan con estos protocolos en un puerto distinto al estándar (ejecutando un servidor web en el puerto 8080 en lugar del estándar 80). Sin embargo, tenga en cuenta que las aplicaciones asumirán que se cumple con el estándar, por lo que deberá proporcionar dos puntos (:)  junto con el número de puerto.

Desafío práctico:

Abra el sitio adjunto a esta tarea y conéctese a la dirección IP » 8.8.8.8 » en el puerto » 1234 «, y recibirá una bandera.

Responda las preguntas a continuación

¿Cuál es la bandera recibida del desafío?

THM{YOU_CONNECTED_TO_A_PORT}

Recuerden: el sistema siempre habla. Nos vemos en el próximo post hacketones!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *