Buscar en este blog

miércoles, 13 de julio de 2011

Cómo funciona Internet?

Después de haber hablado brevemente sobre "Qué es Internet?", se pretende dar un pequeña explicación de cómo funciona, que no es poca cosa. Para ello, primero de todo, se debe conocer el modelo en que está estructurado, que se corresponde con el modelo OSI.  

El Modelo OSI fue creado en 1984 por la ISO (International Organization for Standardization) con la intención de ser el marco de referencia para la conexión de equipos de comunicaciones y para estimular la compatibilidad entre diferentes tipos de redes.  Así, se definieron 7 capas a las que se atribuyen unas funciones determinadas y que hacen referencia a los procesos que atraviesan los datos desde su origen hasta su destino.

Capa física (L1): Describe las características físicas de los datos, esto abarca desde los conectores que se deben utilizar hasta la temporización de los datos, pasando por los niveles de potencia, etc.

Capa de enlace (L2): Prepara los datos para que puedan ser enviados a lo largo de los medios utilizados (a esta unidad de de datos se les llama tramas), lo que puede significar que los prepara para un medio inalámbrico (Wi-Fi, UMTS/HSPA, etc.) o bien para ser enviados a lo largo de una conexión cableada (Ethernet, ATM). Los dispositivos que realizan esta función son generalmente los switch, que trabajan con direcciones MAC (cada dispositivo de red posee una de estas, que es única en todo el mundo).

Capa de red (L3): Proporciona el direccionamiento y enrutamiento, es decir, gestiona como los datos (en este nivel, paquetes) se transportan de una parte de la red a otra. Es la responsable de configurar el paquete a un estándar de transmisión apropiada (por ejemplo, IP). El dispositivo que se encarga de esta tarea en Internet es el router, que trabaja con direcciones IP (aunque también con MAC).

Capa de transporte (L4): Establece una conexión extremo a extremo entre el punto de origen y destino asegurando que los paquetes se reúnen en el orden correcto. A estas unidades de datos se les llama datagrama y aquí es dónde se especifica el número de puerto donde conectarse una vez alcanzada la máquina a la que accedemos (por ejemplo, para navegación web se utiliza el puerto 80). Un puerto no es más que un número que se emplea a nivel software en los dispositivos para saber qué hacer con la información. Los firewall suelen analizar esta capa de la información.

Capa de sesión (L5): Crea, administra y termina sesiones de comunicaciones entre el remitente y el destinatario de tráfico de datos.  Como sesión podemos entender un proceso de intercambio de datos.

Capa de presentación (L6): Tiene que ver con el formato en que los datos se presentan. Esta capa también funciona como la capa que cifra y comprime los datos. 

Capa de aplicación (L7): Esta capa interactúa con el programa que está haciendo una petición de datos y es dónde se definen los protocolos que se van a utilizar.


Cuando se hace una petición de comunicación, los datos se van encapsulando en las diferentes capas y cada una de ellas aporta una cierta información sobre qué protocolo y características está utilizando, esto se conoce como cabecera.  Este encapsulado se produce desde el L7 hasta el L2, hasta que se envia a la red. En la recepción se des-encapsula en el sentido contrario.


Se ha hablado del modelo OSI, pero Internet se basa en el modelo TCP/IP. A grandes rasgos son muy similares pero con la diferencia de que en TCP/IP se integran los niveles del modelo OSI L6 y L5 en su L7 (aplicación). Esto es debido a que Internet no tiene un nivel de sesión unificado sobre el que los niveles superiores se sostengan, estas funciones son típicamente desempeñadas (o ignoradas) por las aplicaciones de usuario. El modelo OSI es posterior a la definición del modelo TCP/IP (1972), aunque es interesante describirlo porque las funcionalidades son prácticamente las mismas.  En cualquier caso, el modelo OSI no es más que un modelo teórico, y como todos sabemos la aplicación práctica suele distar bastante de la teoría, pudiendo mezclarse conceptos a la hora de aplicar algunos protocolos.

Aclarado esto, ya podemos hablar de como se transfieren los datos. Cuando un usuario hace una petición, sucede algo así:
  1. Los datos son encapsulados por el nivel de aplicación, que guarda la información de que programa está solicitando datos. Esto lo hace nuestro PC o dispositivo cualquiera.
  2. Esta información a su vez se encapsula en un datagrama TCP (Transfer Control Protocol) o UDP (User Data Protocol), que contiene la información de a qué puerto se va a pedir la conexión, además del orden en que están distribuidos los datos.
  3. Estos datagramas se fragmentan en paquetes IP, que son los que se irán distribuyendo por la red. En primer lugar irán desde nuestro router al router del ISP. En ese punto, el router del ISP consulta la dirección IP de destino que lleva escrita nuestro paquete, y según unas tablas internas lo redirigirá a otro router para que este a su vez haga lo mismo, hasta que el paquete alcance el destino. Dependiendo de la página accedida, en número de saltos puede variar, pero para dar una idea suele ser de varias unidades o decenas. (Existe una aplicación bastante interesante llamada traceroute que nos da esta información).
  4. En el destino se procederá de forma inversa para acceder a los datos.

En la descripción del proceso se ha obviado la función del nivel de enlace. Cada router asocia la dirección MAC que corresponde a la IP a la que se deba acceder, y envía los datos a esa dirección. Cuando se recibe en el siguiente router o salto, se quita la cabecera L2 y se analiza la L3, se consultan las tablas de este nuevo router, se añade cabecera L2 y se envía al siguiente punto.


Un router como tal tan solo debería consultar dirección IP de destino y de origen para determinar hacia donde enviar los datos.  No obstante, la realidad es que se suele consultar esto mas los puertos origen y destino y el protocolo de datos (esta información corresponde al L4, y no es específica de un router, sino más bien de un firewall). A esta combinación de datos se la conoce como 5-tuple, y se emplea para determinar si algún paquete no debe seguir por la red si está intentando acceder algún puerto prohibido o si el protocolo no es el pertinente.

Existe un principio sobre el diseño de Internet que dice que una red óptima debe tener la inteligencia en los extremos  esto es el principio end-to-end. Esto significa que si un paquete se pierde por el camino, no será el router quien se encargue de tomar las medidas pertinentes, si no que será el destinatario quien se encargue de pedir la retransmisión (esto sucede en el L4). Este modo de funcionamiento no aprovisiona un QoS (Quality of Service) mínima y se corresponde con lo que se denomina un servicio 'best effort' (mejor esfuerzo) y que como su nombre indica hace las tareas lo mejor que puede. Este modo de funcionamiento es totalmente contrario a los servicios de comunicación a los que estamos acostumbrados (la red telefónica conmutada o RTC) dónde una llamada no es cursada si no se puede establecer un mínimo QoS.

Habiendo simplificado mucho y con ánimo de dar tan solo una visión orientativa, así es como se mueven los datos por Internet. Se ha prescindido de comentar protocolos de seguridad, protocolos de control, medidas para evitar congestión y errores y varias cosas más, que poco a poco iré desgranando.

Para más información y detalles del funcionamiento de Internet ver "Cómo funciona Internet? (II)", además del resto de entradas del blog.



Os dejo un par de vídeos bastante amigables (y antiguos) que explican el proceso (están en inglés, aunque hay versión en castellano): "Warriors of the Net", "How the Internet works".


5 comentarios:

  1. Interesante... pero muy complicado jejeje. Al menos para los que vamos pez en estos temas.
    Entonces una pregunta, los paquetes con la información se transmiten simultáneamente desde las capas para que lleguen a la vez? o se sigue un orden de capas por las que se va acumulando y transmitiendo los paquetes? (no se si me explico):p

    ResponderEliminar
  2. Pongamos el ejemplo de un e-mail. Los datos son el mensaje en sí. Estos datos los encapsula tu aplicación de correo, ajustándolos a un protocolo de comunicación concreto para que el destinatario sepa como des-encapsular a su llegada. A este bloque se le añadirá una cabecera TCP (o UDP) que contiene la información de "por dónde tiene que entrar al destinatario" y que se encargará de que los paquetes IP se reciban re-ensamblen en orden. Esto es porque en el nivel L3 inferior todo esta capa de aplicación y transporte (TCP) se fragmenta en trozos (paquetes IP) que se envían independientemente y que llegan cada uno a su ritmo y quizá siguiendo rutas diferentes (aunque se envíen en orden pueden llegar desordenados. De hecho, este es uno de los problemas que se está dando ahora en Internet debido a que esta configuración funciona bien para navegación web y correo, por ejemplo, pero no para VoIP (Skype, Viber, etc.) ya que ahí si que es crítico que un paquete tarde más de la cuenta (se notaría en la conversación).

    Espero haberlo aclarado un poco...

    Un saludo.

    ResponderEliminar
  3. Oks, ahora entiendo porque cuando he utilizado Skype me llegan los mensajes cuando le da la gana... Supongo que a Whatsapp le pasa lo mismo porque el sistema debe ser similar no?

    ResponderEliminar
  4. Este retardo entre paquetes no es apreciable para aplicaciones de mensajería. El motivo de estos fallos que comentas deben ser debidos a caídas en los servidores (algún fallo en su central de datos, o algo así). Dónde es crítico es en aplicaciones multimedia en tiempo real (vídeo, voz, etc.) ya que ahí un retardo fracciones de segundo sí que es apreciable.

    Un saludo!

    ResponderEliminar
  5. hola! saludos!
    tu información me fue de gran ayuda. me gustaría que me ayudaras con otro ejemplo de como opera el modelo OSI! por favor!
    espero me contestes. gracias!

    ResponderEliminar