Network Fundamentals IV: Paquetes y Frames

Paquetes y Frames

¿QUÉ SON LOS PAQUETES Y FRAMES?

Los paquetes y los frames (tramas) son pequeñas piezas de datos que, cuando las juntamos, forman una pieza más grande de información o un mensaje. Sea como sea, en el modelo OSI son dos cosas distintas. Los frames se dan en la capa 2 (la capa de enlace), lo que significa que no hay más información que las direcciones IP. Piensa en ello como envolver algo ya envuelto y enviarlo. El primer envoltorio será el paquete que mandas, pero una vez abierto, el envoltorio interior seguirá estando ahí y conteniendo los datos (eso es un frame).

Este proceso se conoce como encapsulación y ya hemos hablado de él en el capítulo del modelo OSI. A estas alturas, podemos asumir que, cuando estamos hablando algo referido a direcciones IP, estamos hablando de paquetes. Cuando eliminamos la información que encapsula, hablamos del propio frame.

Los paquetes son una forma eficiente de comunicar datos a través de dispositivos conectados en red. Debido a que estos datos son entregados en pequeñas piezas, hay menos posibilidades de que se produzcan cuellos de botella en la red que si se envían mensajes grandes a la vez.

Por ejemplo, cuando cargamos una imagen de una página web, esta imagen no se envía entera a tu ordenador, sino que se envían pequeños trozos que después se reconstruyen en tu máquina. Toma la imagen inferior como una ilustración de este proceso. La fotografía del perro se divide en tres paquetes, y es reconstruida cuando alcanza el ordenador para, así, formar la imagen final.

Paquetes y Frames 1

Los paquetes tienen distintas estructuras dependiendo del tipo de paquete que estemos enviando. El trabajo en red está lleno de protocolos y estándares que actúan como un conjunto de reglas sobre cómo el paquete ha de ser manejado en un dispositivo. Con la predicción de que haya aproximadamente 50 billones de dispositivos conectados en Internet a finales de 2020, las cosas se pueden ir de las manos rápidamente si no hay una estandarización.

Continuemos con nuestro ejemplo del Protocolo de Internet. Un paquete que utilice este protocolo tendrá un conjunto de cabeceras que contienen piezas de información adicionales a los datos que se envían por la red.

Algunas de estas cabeceras son:

CabeceraDescripción
Time to LiveEste campo establece un tiempo de caducidad para que el paquete no obstruya tu red si nunca consigue llegar a un host.
ChecksumEste campo proporciona una comprobación de integridad para protocolos como TCP/IP. Si cualquier dato es alterado, este valor será distinto de lo 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 dónde volver.
Dirección de DestinoLa dirección IP del dispositivo al que se envía el paquete para que los datos sepan hacia dónde viajar.

Contesta las preguntas

  • ¿Cuál es el nombre de la pieza de datos cuando contiene información de la dirección IP?
  • ¿Cuál es el nombre de la pieza de datos cuando no contiene información de la dirección IP?

TCP/IP (UN HANDSHAKE A TRES BANDAS)

TCP (abreviatura de Transmission Control Protocol) es otra de esas reglas usadas en networking.

Este protocolo es muy parecido al modelo OSI del que ya hemos hablado de forma extensa. El protocolo TCP/IP consiste en cuatro capas y podría decirse que es una versión resumida del modelo OSI. Estas capas son:

  • Aplicación
  • Transporte
  • Internet
  • Interfaz de red

Muy similar a como trabaja el modelo OSI, la información se añade a cada capa del modelo TCP como una pieza de datos (o paquete) que lo atraviesa. Como recordarás, este proceso se conoce como encapsulación, donde el proceso inverso es la descapsulación.

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

Debido a esto, TCP garantiza que cualquier dato enviado será recibido en el otro punto. Este proceso se conoce como Handshake a tres bandas, el cuál es algo de lo que hablaremos brevemente. A continuación podéis ver una tabla comparando las ventajas y desventajas de TCP:

Ventajas de TCPDesventajas de TCP
Garantiza la integridad de los datos.Requiere una conexión fiable entre los dos dispositivos. Si un pequeño fragmento de los datos no se recibe, entonces no podremos usar esos datos y deberán ser re-enviados.
Es capaz de sincronizar dos dispositivos para evitar que se inunden mutuamente con datos en el orden equivocado.Una conexión lenta puede crear un cuello de botella en el otro dispositivo, ya que la conexión estará reservada en ese dispositivo todo el tiempo.
Realiza muchos más procesos de confianza.TCP es significativamente más lento que UDP debido a que debe realizar más trabajo de cómputo por parte de los dispositivos que utilizan este protocolo.

Los paquetes TCP contienen varias secciones de información conocidas como cabeceras que se añaden a partir de la encapsulación. Explicaremos algunas de estas cabeceras en la siguiente tabla:

CabeceraDescripción
Puerto de origenEste valor representa el puerto abierto por el emisor para enviar el paquete TCP. Se elige de forma aleatoria (entre los puertos del 0 al 65535 que no se encuentren en uso en ese momento).
Puerto de destinoEste valor representa el número de puerto que una aplicación o servicio está corriendo en el host remoto (el receptor); por ejemplo, un servidor web en el puerto 80. A diferencia del puerto de origen, éste no se elige aleatoriamente.
IP origenEsta es la dirección IP del dispositivo que envía el paquete.
IP destinoEsta es la dirección IP del dispositivo al que está destinado el paquete.
Número de secuenciaCuando se establece una conexión, la primera pieza de datos transmitida recibe un número aleatorio. Hablaremos más profundamente de ello más adelante.
Número de confirmaciónDespués de que una pieza de datos reciba el número de secuencia, el número para la siguiente pieza de datos recibirá el número de secuencia + 1. También hablaremos de ello más adelante con más detenimiento.
ChecksumEste valor es lo que le otorga integridad al TCP. Aquí se realiza un cálculo matemático donde el resultado queda almacenado. Cuando el dispositivo receptor realiza el cálculo, los datos estarán corruptos en caso de que el resultado sea distinto del enviado.
DatosEn esta cabecera es dónde los datos, como por ejemplo los bytes de un archivo que está siendo enviado, se almacenan.
Flag (bandera)Esta cabecera determina cómo debería manejarse el paquete por parte de cualquiera de ambos dispositivos durante el proceso de handshake. Flags específicas determinarán comportamientos específicos, algo que explicaremos en breve.

A continuación, explicaremos el Handshake a tres bandas (término dado al proceso usado para establecer una conexión entre dos dispositivos). Este handshake se comunica mediante algunos mensajes especiales, los cuales podéis ver en la siguiente tabla:

PasoMensajeDescripción
1SYNEste mensaje SYN es el paquete inicial enviado por el cliente durante el handshake. Este paquete se utiliza para iniciar una conexión y sincronizar los dos dispositivos.
2SYN/ACKEste paquete se envía por parte del receptor (servidor) como acuse de recibo de la sincronización con el cliente.
3ACKEl paquete de acuse de recibo puede utilizarse tanto por el cliente como por el servidor para dar cuenta de que una serie de mensajes/paquetes han sido recibidos correctamente.
4DATAUna vez que se establece la conexión, los datos (como los bytes de un fichero) se envían mediante el mensaje “DATA”
5FINEste paquete se usa para cerrar de la forma correcta la conexión una vez se haya completado.
#RSTEste paquete cierra cualquier comunicación de forma abrupta. Es el último recurso e indica que ha habido algún problema durante el proceso. Por ejemplo, si el servicio o aplicación no está funcionando correctamente, o el sistema tiene problemas como la escasez de recursos.

El diagrama inferior muestra un proceso de Handshake a tres bandas normal entre Alice y Bob. En el mundo real, éste se daría entre dos dispositivos.

Cualquier dato enviado recibe una secuencia numérica aleatoria y se reconstruye utilizando esa secuencia numérica incrementada en 1. Ambos ordenadores 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í va mi secuencia numérica inicial (ISN) con la que SYNcronizar (0)
  2. SYN/ACK – Servidor: Aquí está mi secuencia numérica inicial (ISN) con la que SYNcronizar (5000), y hago ACKuse de recibo de tu secuencia numérica inicial (0)
  3. ACK – Cliente: Hago ACKuse de recibo de tu secuencia numérica inicial (ISN) de (5000), aquí van algunos datos con mi ISN+1 (5000 + 1)
DispositivoSecuencia Numérica Inicial (ISN)Secuencia Numérica Final
Cliente (emisor)00 + 1 = 1
Cliente (emisor)11 + 1 = 2
Cliente (emisor)22 + 1 = 3

TCP Cerrando una conexión:

Explicaremos de forma rápida el proceso que se esconde tras el cierre de una conexión TCP. Para empezar, TCP cerrará una conexión una vez el dispositivo ha determinado que los otros dispositivos han recibido los datos de forma satisfactoria.

Como TCP reserva algunos recursos del sistema en el dispositivo, la mejor práctica consiste en cerrar las conexiones TCP lo más pronto 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 hará acuse de recibo de este paquete.

Veamos este proceso utilizando a Alice y Bob, como hicimos antes:

En la ilustración, podemos ver cómo Alice envía el paquete “FIN” a Bob. Debido a que Bob lo ha recibido, se lo hará saber a Alice y también le hará saber que quiere cerrar la conexión (utilizando FIN). Alice ha escuchado el mensaje de Bob alto y claro y se lo hace saber a Bob.

Contesta las preguntas

  • ¿Cuál es la cabecera de un paquete TCP que garantiza la integridad de los datos?
  • Escribe el orden de un Handshake a tres bandas normal (separando los pasos con comas)

PRÁCTICA DE HANDSHAKE

¡Ayuda a Alice y Bob a comunicarse re-ensamblando el handshake TCP en el orden correcto en el laboratorio adjunto a esta tarea!

Introduce el valor de la flag que se te dará al final de la conversación en el cuestionario inferior.

Contesta las preguntas

  • ¿Cuál es el valor de la flag facilitada al final de la conversación?

UDP/IP

El User Datagram Protocol (UDP) es otro protocolo que se usa 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 que se envíen los datos. Por ejemplo, el Handshake a tres bandas no tiene lugar, ni hay sincronización entre ambos dispositivos.

Recuerda algunas de las comparaciones hechas acerca de estos dos protocolos en el capítulo del Modelo OSI. A saber: UDP se utiliza en situaciones donde las aplicaciones pueden tolerar que se pierdan datos (como streaming de vídeo o chat de voz) o en escenarios donde una conexión inestable no es el fin de todo. Aquí tenéis una tabla comparando las ventajas y desventajas de UDP:

Ventajas de UDPDesventajas de UDP
UDP es mucho más rápido que TCPUDP no le da importancia a si los datos son recibidos o no
UDP deja a la aplicación (software del usuario) decidir si hay algún control sobre cómo se envían los paquetesEn este sentido, es bastante flexible para los desarrolladores de software.
UDP no reserva una conexión continua en un dispositivo como hace TCPEsto significa que las conexiones inestables se convierten en una experiencia terrible para el usuario

Como ya se ha mencionado, ningún proceso se encarga de establecer una conexión entre dos dispositivos. Esto significa que no se tiene en cuenta si los datos se reciben o no, y no hay salvaguardas como las que ofrece TCP, como la integridad de datos.

Los paquetes de UDP son mucho más simples que los paquetes de TCP y tienen menos cabeceras. De todos modos, ambos protocolos comparten algunas cabeceras estándar, las cuales aparecen en la tabla inferior:

CabeceraDescripción
Tiempo de Vida (TTL)Este campo indica un tiempo de expiración para el paquete, para que no obstruya la red si nunca consigue llegar a un host o escapar
Dirección de OrigenLa dirección IP del dispositivo desde el que se envía el paquete, así los datos saben dónde han de volver
Dirección de DestinoLa dirección IP del dispositivo al que se envían los datos, así los datos saben hacia dónde han de ir
Puerto de OrigenEste valor es el puerto que se ha abierto por el emisor para enviar el paquete TCP. Este valor se elige aleatoriamente (de entre los puertos entre el 0 y el 65535 que no se están usando)
Puerto de DestinoEste valor es el número de puerto en el que corre una aplicación o servicio en la máquina host (la receptora); por ejemplo, un servidor web corriendo en el puerto 80. A diferencia del puerto de origen, este valor no se escoge al azar
DatosEsta cabecera es donde los datos, por ejemplo, los bytes de un fichero que está siendo transmitido, se almacenan

Después volveremos a hablar sobre cómo el proceso de una conexión UDP difiere de una TCP. Debemos recordar que UDP no tiene estado. No hay acuse de recibo durante la conexión.

El diagrama inferior muestra una conexión normal UDP entre Alice y Bob. En el mundo real, sería entre dos dispositivos.

Contesta las preguntas

  • ¿Qué significan las siglas “UDP”?
  • ¿Qué tipo de conexión es “UDP”?
  • ¿Qué protocolo utilizarías para transferir un fichero?
  • ¿Qué protocolo utilizarías para hacer una vídeo llamada?

PUERTOS 101 (PRÁCTICA)

Tal vez por su nombre, los puertos son un punto esencial en lo que a intercambio de datos se refiere. Piensa en ellos como en un puerto. Los barcos que quieran amarrar en el puerto tendrán que ir a un puerto compatible con las dimensiones y facilidades localizadas en el barco. Cuando el barco se alinee, se conectará a un muelle del puerto. Pensemos, por ejemplo, que un crucero no puede amarrar en un puerto construido para buques de pesca y viceversa.

Estos puertos indican quién puede amarrar y dónde, si no es compatible, no puede amarrar ahí. Los dispositivos de red también utilizan puertos para indicar reglas estrictas cuando se comunican con otro dispositivo. Cuando se establece una conexión (recordemos el modelo OSI), cualquier dato enviado o recibido por un dispositivo será enviado por estos puertos. En informática, los puertos poseen valores numéricos entre 0 y 65535.

Debido a que los puertos pueden estar dentro de ese rango de valores, rápidamente se pierde la pista de qué aplicación está usando cada puerto. ¡Un puerto ocupado es un caos! Afortunadamente, asociamos aplicaciones, software y comportamientos con un conjunto de reglas estándar. Por ejemplo, indicando que cualquier dato proveniente del navegador web sea enviado 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 forma que los demás.

Esto significa que todos los navegadores web ahora comparten una misma regla: los datos se envían por el puerto 80. El cómo se ve el navegador, el sentimiento que produce y su facilidad de uso es decisión del diseñador o del usuario.

Mientras que la norma estándar para los datos web es puerto 80, otros protocolos también han sido asignados a según una regla estándar. Cualquier puerto que esté entre 0 y 1024 es conoce como puerto común. Exploremos algunos de estos otros protocolos en la siguiente tabla:

ProtocoloNúmero de puertoDescripción
File Transfer Protocol (FTP)21Este protocolo se usa por una aplicación de compartición de archivos construida según un modelo de cliente-servidor, lo que significa que podemos descargar archivos de una localización central
Secure Shell (SSH)22Este protocolo se usa para securizar el acceso a sistemas a través de interfaces de gestión basadas en texto
HyperText Transfer Protocol (HTTP)80Este protocolo alimenta la World Wide Web (WWW). Nuestro navegador lo utiliza para descargar texto, imágenes y vídeos de páginas web
HyperText Transfer Protocol Secure (HTTPS)443Hace exactamente lo mismo que el anterior, pero utilizando una encriptación segura
Server Message Block (SMB)445Es similar al FTP, aunque en este caso, además de archivos, SMB permite compartir dispositivos, tales como las impresoras
Remote Desktop Protocol (RDP)3389Este protocolo es una forma segura de acceder a un sistema utilizando la interfaz visual del escritorio (en contraposición con las limitaciones basadas en texto de SSH)

Tan solo hemos cubierto brevemente los protocolos más comunes en ciberseguridad. Puedes encontrar una tabla con una lista de los 1024 puertos comunes para más información.

Lo que es importante recalcar aquí es que estos protocolos solo siguen un estándar. Por ejemplo, podemos administrar aplicaciones que interactúen con estos protocolos en puertos distintos a lo que indica el estándar (corriendo un servidor web en 8080 en lugar del puerto estándar 80). De todos modos, las aplicaciones presumirán de seguir los estándares, por lo que deberemos proporcionar un signo de dos puntos (:) antes del número de puerto.

Desafío práctico:

Abre el sitio adjunto a esta tarea y conéctate a la dirección IP “8.8.8.8” en el puerto “1234”, y recibirás una flag.

Contesta a las preguntas

  • ¿Cuál es la flag recibida en el desafío?

Esta room es solo para usuarios suscritos a la plataforma. Acceso al contenido original de TryHackMe: https://tryhackme.com/jr/packetsframes

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.