Cómo funciona Internet

Comprender los pilares sobre los que funciona Internet es fundamental para entender el lado del servidor.

Introducción

Antes de empezar, definamos lo que es un protocolo.

Un protocolo de comunicaciones es un conjunto de reglas que dos o más entidades utilizan para comunicarse y transmitir información.

En lo que conocemos como Internet, se hacen uso de multitud de protocolos. Por ejemplo HTTP para navegar por la web, SMTP e IMAP/POP para enviar y recibir correo electrónico, RTSP para vídeo en tiempo real, etc.

Un servidor de correo es capaz de comunicarse y entenderse con nuestra aplicación de correo electrónico mediante el uso de protocolos como SMTP, IMAP o POP. Ppodría decirse que dos o más entidades hablan el mismo idioma al usar el mismo protocolo.

Familia de protocolos de Internet

La familia de protocolos de internet es un conjunto de protocolos de red que se utiliza en Internet y otras redes. Comúnmente se le conoce con el nombre de TCP/IP porque fueron los dos primeros protocolos. Esta suite especifica como van a ser empaquetados, procesados, enviados o recibidos los datos.

Fue creada en los años 70 por el Departamento de Defensa de los Estados Unidos para su utilización en ARPANET, la red precursora de la actual Internet.

Esta familia de protocolos se divide en 4 capas y es una implementación basada en el modelo conceptual de 7 capas llamado "modelo de interconexión de sistemas abiertos" (OSI). Un modelo es un documento que detalla una idea o concepto (en este caso el sistema de capas) para que podamos explicar y entender su funcionamiento. Así pues, la división en capas sirve para poder abstraer parte de la complejidad y así cada capa se ocupa de lo suyo.

Estas cuatro capas son: Aplicación (Application), Transporte (Transport), Internet (Internet) y Enlace (Link).

AplicaciónORIGENTransporteInternetEnlaceAplicaciónDESTINOTransporteInternetEnlaceROUTERInternetEnlaceROUTERInternetEnlace
Las cuatro capas sobre las que funciona Internet

Las capas de Aplicación y Transporte solo existen en los nodos de origen y destino mientras que las capas de Internet y Enlace existen también en los nodos intermedios, como pueden ser routers y otros dispositivos.

Capa de aplicación

En la capa de aplicación se manejan protocolos relacionados con la aplicación a través de la cual nos vamos a comunicar.

Como vimos anteriormente, un protocolo es una serie de reglas para que dos o más entidades se puedan comunicar y entender.

Por lo tanto, si estamos enviando un correo electrónico, nuestra aplicación de correo (la que envía) se comunicará con el servidor de correo (el que recibe) mediante una serie de reglas. Estas reglas forman el protocolo SMTP, que se utiliza para enviar correos electrónicos.

En cambio, si accedemos a páginas web mediante nuestro navegador, éste solicitará el contenido al servidor web mediante el protocolo HTTP o HTTPS.

De esta manera ambas aplicaciones hablan el mismo idioma y se entienden.

En esta capa únicamente se procesan los datos necesarios para que la aplicación de origen y la aplicación de destino se puedan comunicar.

DATAGET / HTTP/2.0HOST: example.com
El resultado de la capa de aplicación

La capa de aplicación interactúa con la capa de transporte mediante un puerto. Los protocolos tienen asociados unos puertos por defecto. Por ejemplo, el protocolo SMTP utiliza el puerto 25, mientras que el protocolo HTTP utiliza el puerto 80.

Capa de transporte

Mandar todos los datos de golpe sería de locos, sobre todo si esos datos corresponden a un vídeo de Youtube. Imagina recibir tantos megabytes de golpe en un solo mensaje. Si hubiera algún problema en la transmisión, habría que empezar desde cero una y otra vez.

Es por ello que la capa de transporte es la que se encarga de segmentar estos datos de aplicación en lo que se conoce como paquetes de datos. En el caso del destino, la capa de transporte se encarga de reconstruir los datos a través de estos paquetes.

A estos paquetes se le añade una cabecera (llamada header) que contiene cierta información dependiendo del protocolo de transporte utilizado.

HEADERSource Port: 23136Destination Port: 80DATAGET / HTTP/2.0HOST: example.com
Cada paquete segmentado por la capa de transporte

Por ejemplo, si los datos que van a enviarse corresponden al protocolo de aplicación HTTP (navegación web), el puerto 80 se añadirá a esta cabecera. Así, la capa de transporte de la máquina de destino sabrá a qué aplicación debe pasar los datos una vez los haya reconstruido a partir de los paquetes recibidos.

Los dos protocolos estrella en esta capa son TCP y UDP, aunque hay más.

Protocolo TCP

TCP (Transmission Control Protocol) es un protocolo confiable. Esto quiere decir que en origen, cuando el protocolo TCP parta nuestros datos en varios paquetes para su envío, también se va a ocupar de que todos los paquetes lleguen a su destino, reintentando el envío de los paquetes perdidos si fuese necesario.

Por otro lado, en destino, el protocolo TCP se encarga de reconstruir los datos de aplicación a partir de los paquetes que han llegado. No importa el orden en el que se hayan recibido los paquetes, ya que en la cabecera del procotolo TCP se añade la información necesaria para reordenarlos.

Protocolo UDP

UDP (User Datagram Protocol) es en cambio un protocolo que destaca por su rapidez. El precio a pagar es que no hay garantía de que los paquetes vayan a llegar a su destino ni tampoco que vayan a llegar en orden. Este protocolo suele utilizarse para transportar paquetes de voz o vídeo, donde la pérdida de unos cuantos paquetes es aceptable y no altera apenas el resultado.

Capa de internet

La capa de internet es la que se encarga del enrutamiento de los paquetes. Dicho de otra manera, es la capa que contiene información acerca del remitente y el destinatario de los datos.

Protocolo IP

El protocolo más común en esta capa se llama Internet Protocol (IP). De ahí lo de TCP/IP. Y sí, IPv4 y IPv6 son versiones de este protocolo.

En la capa de internet se añade una nueva cabecera al paquete (por delante de la cabecera de la capa de transporte). En esta cabecera se añade información como por ejemplo la versión del protocolo IP utilizado, la IP de origen y la IP de destino, el tamaño del paquete, etc.

HEADERHEADERSource Port: 23136Destination Port: 80DATAGET / HTTP/2.0HOST: example.comSource IP: 37.87.22.1Destination IP: 123.35.54.68
El resultado de los paquetes tras pasar por la capa de internet

Con estos datos el paquete ya esta listo para ser enviado por el cable, antena o cualquier otro medio.

Capa de enlace

Esta capa es la de más bajo nivel. Aquí al paquete que proviene de la capa de internet (en esta capa se le llama trama o frame) se le añade información tanto al principio (header) como al final (footer). Esta información contiene datos como la dirección física (MAC) del dispositivo que envía o recibe los datos. Esta información también depende del protocolo utilizado en esta capa. Generalmente se utiliza el protocolo MAC (Medium access control), que no tiene nada que ver con la dirección física (MAC también).

Source MAC: xx.yyDestination MAC: aa.bbHEADERHEADERSource Port: 23136Destination Port: 80DATAGET / HTTP/2.0HOST: example.comSource IP: 37.87.22.1Destination IP: 123.35.54.68HEADERFOOTER
El paquete (ahora llamado trama) tras pasar por la capa de enlace

Una vez procesado, el paquete se envía a través de la red.

¿Cómo llegan los paquetes a su destino?

Sin entrar en mayor detalle, los paquetes pasan a través de routers y otros dispositivos cuya función es enrutar (marcarles la ruta, el camino).

Cuando un paquete sale de un dispositivo lo hace en una dirección generalmente correcta (los paquetes se pueden perder o tomar rutas más largas de lo normal, de ahí la necesidad del protocolo TCP).

Después el paquete llega a un punto intermedio, por ejemplo, un router de algún proveedor de internet. Este router implementa únicamente las capas de enlace e internet.

Dicho dispositivo primero convierte la señal recibida en un paquete de datos a través de la capa de enlace.

Después consulta (mediante la capa de internet) la dirección IP de destino (recuerda que este dato lo añadió la capa de internet de origen en su cabecera). Como este dispositivo no es el destinatario del paquete (no coincide la IP de destino con la que tiene asignada), enruta el paquete en otra nueva dirección, generalmente también en la dirección correcta.

Los routers sacan estas indicaciones de unas tablas de enrutamiento que poseen y que actúan como mapas indicativos.

Tras unos cuantos saltos el paquete llega al dispositivo de destino y éste hace la misma comprobación mediante las dos capas inferiores. Ya que el paquete estaba dirigido a este dispositivo, la comprobación del destinatario coincide y la capa de internet procede a mandar el paquete a la capa de transporte.

La capa de transporte se encarga de recoger los paquetes recibidos y reconstruye los datos originales. En el caso del protocolo TCP se reordenan los paquetes correctamente. Si faltase algún paquete se comunicaría al emisor que vuelva a mandar ese paquete en concreto. Mediante la cabecera que añadió el protocolo TCP de origen se sabe si faltan paquetes o están todos (Paquetes recibidos / Total de paquetes).

Como el paquete contiene información acerca del puerto utilizado por la aplicación de destino, una vez reconstruídos, la capa de transporte cede los datos a dicha aplicación. Por ejemplo, si el destino era el puerto 80 (HTTP), el servidor web recibiría la petición y procedería a mandarle al usuario la página web que ha solicitado mediante un nuevo flujo de paquetes.

Gracias al uso de puertos se pueden tener varias aplicaciones abiertas comunicándose a través de internet sin que se mezclen los datos con otras aplicaciones. Cada paquete sabe a qué aplicación pertenece.

Conclusión

A grandes rasgos así es como funciona Internet.

Gracias a la separación mediante capas, entender este logro tecnológico resulta incluso fácil.

Puedes apoyarme para que pueda dedicar aún más tiempo a escribir artículos y tener recursos para crear nuevos proyectos. ¡Gracias!