Internet explicada para que cualquier persona pueda entender cómo funciona (y por qué a veces una parte queda fuera de combate)
Internet es un misterio. Uno enorme. O, al menos, lo parece. Muchas personas utilizamos esta red todos los días, y, además, lo hacemos durante muchas horas sin ser realmente conscientes de la complejidad que la hace posible. De todo lo que hay debajo. Hasta que algo falla y nos vemos obligados temporalmente a dejar de utilizar algunos de sus servicios, algo que ha sucedido durante los últimos meses con Amazon, Facebook, Instagram, Twitch, WhatsApp o Reddit, entre muchas otras plataformas.
Precisamente, la razón por la que de cuando en cuando algo se rompe en internet, algo con la suficiente entidad para que los usuarios nos demos cuenta, es que todos sus engranajes deben funcionar con la precisión del mecanismo de un reloj mecánico. Y el problema es que esta red es tan grande, involucra tanta tecnología, tantos equipos de red, tantas personas y tantos intereses que, inevitablemente, de vez en cuando algo falla. Y el origen del error puede ser humano o estrictamente técnico.
Todos sabemos que, en realidad, en internet no hay magia, pero sí mucha tecnología. Y en este artículo os proponemos indagar en ella con el propósito de que nos resulte más familiar y menos misteriosa. En un reportaje con una extensión limitada y una ambición didáctica como este no se puede recoger toda la complejidad de la innovación que hace posible que esta gigantesca red exista y funcione, por lo que inevitablemente tendremos que ceñirnos a algunas de sus tecnologías fundamentales.
Nuestra intención es que los lectores que estáis menos familiarizados con todo esto os sintáis un poco más cómodos cuando leáis u oigáis hablar acerca de protocolos, direcciones IP o algoritmos de control, entre otros elementos. Aun así, este artículo solo pretende ofreceros una mirada asequible y superficial de internet, por lo que en la última sección os propondremos algunas lecturas que os pueden ayudar a profundizar e ir mucho más allá si os apetece conocer con más detalle cómo funciona esta enorme y compleja red.
Todo tiene un nombre en internet: las direcciones IP
Todos los dispositivos que tienen la capacidad de conectarse a internet, bien sea a través de nuestra fibra óptica doméstica, bien utilizando una conexión 4G o 5G como las de nuestros teléfonos móviles, deben ser capaces de identificarse con un nombre único que no esté siendo utilizado por ningún otro dispositivo. De lo contrario, si dos o más equipos tuviesen el mismo nombre se produciría una incongruencia debido a que no sabríamos a cuál debemos entregar un paquete de datos determinado. Ese nombre único es, precisamente, la dirección IP.
IPv4 tiene algunas limitaciones importantes debido a que es la primera infraestructura de direccionamiento implementada en internet
Su función es esencialmente la misma de las direcciones postales que nos permiten recibir paquetes en nuestra casa, y que nos identifican con precisión para evitar que vayan a parar a un destino erróneo. Sin embargo, hay una diferencia importante entre las direcciones IP y las direcciones postales: las primeras pueden variar, y las segundas no (o no suelen hacerlo a menos que se cambie el nombre de la calle en la que residen). Las direcciones IP que no cambian se conocen como fijas, y las que varían son dinámicas precisamente debido a la posibilidad de que cambien en un plazo de tiempo determinado.
La mayor parte de los proveedores de acceso a internet nos proporciona una dirección IP dinámica, y, además, los dispositivos que tenemos en casa, y que se conectan a la red a través de nuestra conexión ADSL o de fibra óptica, también suelen tener una dirección IP dinámica. Sin embargo, estos dispositivos no tienen la capacidad de elegir qué dirección IP quieren tener; el responsable de asignársela es un equipo que forma parte de la red y que utiliza un protocolo conocido como DHCP (Dynamic Host Configuration Protocol) para decidir cuál debe entregar a cada dispositivo.
Ya tenemos una idea relativamente certera acerca de qué es una dirección IP, por lo que ahora nos interesa echar un vistazo a su aspecto. El protocolo que se responsabiliza de describir qué formato tienen y cuál es su significado se conoce como IPv4 (Internet Protocol version 4), pero tiene algunas limitaciones importantes debido a que es la primera infraestructura de direccionamiento implementada en internet, y esta red ha crecido una barbaridad durante las últimas dos décadas.
De hecho, ha crecido tanto, y crecerá aún mucho más en el futuro, que ha sido necesario diseñar una infraestructura de direccionamiento más avanzada que sea capaz de acoger la enorme cantidad de dispositivos que se conectarán a ella durante los próximos años. Esta nueva arquitectura se llama IPv6 (Internet Protocol version 6), y propone direcciones con un tamaño de 128 bits, por lo que son cuatro veces mayores que las direcciones de 32 bits de IPv4 precisamente con el objetivo de poner a nuestro alcance un mapa de direcciones IP mucho mayor que sea capaz de resolver nuestras necesidades a medio y largo plazo.
En el artículo que enlazo aquí mismo explicamos con bastante detalle cómo son las direcciones del protocolo IPv6 y en qué se diferencian de las IPv4, pero aquí van algunas pinceladas sobre ambas. No obstante, antes de que sigamos adelante nos interesa saber que las direcciones IP están incluidas en los campos de dirección de origen y dirección de destino de los paquetes de datos. Y es comprensible que sea así debido a que es necesario que cada uno de los paquetes que viajan a través de internet transporte consigo la dirección IP de la máquina que lo ha enviado y la del equipo que debe recibirlo para asegurar que llegará a su destino correctamente.
Las direcciones IP asignadas mediante el protocolo IPv4 son números de 32 bits y se escriben en notación decimal con puntos, por lo que tienen el formato 192.36.7.22. La menor dirección IP es 0.0.0.0, y la mayor es 255.255.255.255. Las direcciones asignadas por el protocolo IPv6, sin embargo, tienen una longitud de 128 bits, como hemos visto, y se escriben en ocho grupos de cuatro dígitos hexadecimales cada uno de ellos, por lo que tienen la forma 2001:0ab8:85b3:0000:0000:8a2e:0260:7224.
Utilizar muchos más bits permite a la arquitectura de direccionamiento IPv6 poner en nuestras manos un mapa de direcciones mucho más amplio que IPv4. Un último apunte: según Google actualmente algo menos del 38% de sus usuarios accede a este buscador a trav´es de IPv6.
Estos son el corazón y el cerebro de internet: el modelo TCP/IP y el protocolo IP
Los investigadores que dieron forma a la red que ha evolucionado hasta transformarse en la internet que todos conocemos hoy se dieron cuenta de que era imprescindible definir una arquitectura que describiese con precisión cómo debía ser esa red y de qué capas o niveles debía estar compuesta.
El modelo de referencia TCP/IP implementa cuatro capas: acceso a la red, interred, transporte y aplicación
Su propósito era delimitar el alcance de esos niveles, de manera que cada uno de ellos se encargase de resolver unos determinados problemas y evitar así que los niveles que tiene por encima deban esforzarse para solucionar esos mismos desafíos. De alguna forma es una estrategia similar a la filosofía «divide y vencerás» de la que posiblemente todos hemos oído hablar en alguna ocasión.
El modelo de referencia OSI (interconexión de sistemas abiertos) propuesto por la Organización Internacional de Normalización (ISO) no es realmente una arquitectura de red debido a que no describe los servicios y los protocolos que debe utilizar cada capa.
Es un modelo importante que describe siete capas o niveles diferentes (física, enlace, red, transporte, sesión, presentación y aplicación), pero su relevancia se ciñe sobre todo al ámbito académico, por lo que no indagaremos más en él para prestar toda nuestra atención al modelo de referencia TCP/IP, que es la arquitectura de red flexible que utiliza internet.
A diferencia del modelo OSI, esta arquitectura implementa solo cuatro capas y no siete. En la base y en contacto con el hardware de nuestros equipos reside la capa de acceso a la red. TCP/IP no establece con precisión cómo debe implementarse este nivel, por lo que solo estipula de una forma un tanto ambigua que el dispositivo debe poder conectarse a la red para permitir el envío de paquetes IP.
Justo encima reside el nivel de interred, que es considerado por muchos autores el auténtico corazón de esta arquitectura de red. Su función es permitir que nuestros dispositivos puedan entregar nuestros paquetes de datos a la red a la que están conectados.
La capa de interred tiene una peculiaridad muy interesante: debe garantizar que los paquetes de datos lleguen a su destino, aunque pueden hacerlo en un orden diferente a aquel en el que fueron enviados. Las capas superiores de la arquitectura son las responsables de ordenar los paquetes correctamente si es necesario.
Para Tanenbaum el protocolo IP es «el pegamento que mantiene unida internet»
Para llevar a cabo su cometido esta capa define con precisión qué estructura deben tener los paquetes de datos, y también utiliza un protocolo conocido como IP (Internet Protocol) que, acertadamente, el influyente y muy respetado Andrew S. Tanenbaum califica como «el pegamento que mantiene unida internet». Su descripción refleja claramente lo importante que es este protocolo.
De hecho, este protocolo implementa los recursos necesarios para que nuestros paquetes de datos lleguen a su destino. No importa si la máquina que los envía y la que debe recibirlos forman parte de dos redes diferentes, y tampoco si entre ambas hay muchas otras redes que deberán actuar como intermediarias.
Internet es un auténtico laberinto, por lo que podemos imaginar el protocolo IP como el mapa que utilizan los paquetes de datos de nuestros dispositivos para saber qué camino deben seguir para llegar a su destino. Y, por supuesto, los paquetes que deben recibir nuestros dispositivos procedentes de otras máquinas utilizan este mismo recurso para seguir el camino inverso.
Las dos capas de la arquitectura TCP/IP que aún no hemos visto son los niveles de transporte y aplicación. El primero de ellos está justo encima de la capa de interred, lo que significa que esta última tiene la responsabilidad de proporcionarle los servicios que necesita para llevar a cabo su cometido. De igual forma que el protocolo IP es el corazón de la capa de interred, el protocolo TCP es el cerebro de la capa de transporte. El cometido de este nivel es permitir que las dos máquinas involucradas en la conversación a trav´és de internet, la que envía los paquetes y la que los recibe, puedan mantener su diálogo.
El protocolo TCP fragmenta los datos y construye los paquetes en la máquina que los emite, mientras que en el equipo que los recibe se encarga de reconstruir el mensaje original a partir de los paquetes de datos que van llegando. La capa de transporte también utiliza otro protocolo conocido como UDP (User Datagram Protocol), que podemos traducir al español como protocolo de datagrama de usuario.
A diferencia de TCP, UDP permite enviar paquetes de datos a través de internet sin necesidad de haber establecido previamente una conexión. Tampoco se encarga de controlar el flujo de los paquetes, que pueden llegar al destino desordenados, y no estipula una confirmación de entrega. De alguna forma UDP es más anárquico que TCP, por lo que solo encaja en aquellas aplicaciones que implementan estas características por sí mismas.
Aún nos queda echar un vistazo a la última capa de la arquitectura TCP/IP: el nivel de aplicación. Esta capa está colocada encima del nivel de transporte, y contiene todos los protocolos de alto nivel, que son los que están más cerca de las aplicaciones que utilizamos los usuarios. Dos de los que repasaremos más adelante por su importancia son DNS y HTTP, aunque la capa de aplicación también contiene muchos otros (algunos están en desuso), como FTP o TELNET.
El viaje que siguen nuestros datos en internet es una auténtica aventura
Como hemos visto, la capa de interred se responsabiliza de transportar los paquetes de datos desde el origen hasta el destino, y para lograrlo con frecuencia deben pasar por muchos enrutadores intermedios. Estos dispositivos se encargan a grandes rasgos de actuar como intermediarios entre unas subredes y otras, y para hacerlo posible recogen los paquetes que reciben y se los envían al siguiente enrutador. Eso sí, esta decisión se lleva a cabo de una forma inteligente.
Esto quiere decir, sencillamente, que la capa de interred debe proporcionar a los enrutadores la información que necesitan conocer para elegir la trayectoria adecuada que debe seguir cada paquete de datos. Y, como podemos intuir, no es sencillo hacerlo debido a que el elevado volumen de datos que circula a través de internet de forma permanente requiere balancear el tráfico para evitar que unas líneas de comunicación se saturen mientras otras permanecen infrautilizadas.
Para resolver este desafío la capa de red cuenta con los algoritmos de encaminamiento, que se encargan de decidir qué ruta debe seguir cada paquete de datos teniendo en cuenta el tráfico y las condiciones en las que se encuentra cada subred en ese momento. Cabe la posibilidad de que dos paquetes que tienen un mismo destino y un único origen sigan caminos diferentes si las circunstancias de la red lo exigen para que sean transportados de la forma óptima.
Afortunadamente no es necesario que conozcamos con detalle qué propone cada algoritmo de encaminamiento, pero es interesante saber que hay unos cuantos, y cada uno de ellos pretende resolver el transporte de los paquetes de datos recurriendo a una estrategia diferente. La capa de interred también dispone de algoritmos de control de la congestión, que, como podemos intuir, pretenden evitar que una subred se sature.
Cuando aparece este problema el rendimiento de esa línea se degrada debido a que los enrutadores son incapaces de administrar todo el tráfico y comienzan a perder paquetes de datos. De alguna forma la gestión del tráfico en internet no es muy diferente de la administración del tráfico en las carreteras.
Los DNS nos permiten utilizar internet de una forma mucho más sencilla
Unos párrafos más arriba hemos visto que las direcciones IP nos permiten identificar con precisión todos los dispositivos y los equipos de red que intervienen en internet. Las asignadas mediante el protocolo IPv4 se escriben en notación decimal con cuatro grupos de tres dígitos, por lo que tienen, como hemos visto, esta forma: 192.36.7.22. Y las asignadas mediante IPv6 son aún más complicadas porque se escriben en ocho grupos de cuatro dígitos hexadecimales cada uno de ellos, adquiriendo la forma 2001:0ab8:85b3:0000:0000:8a2e:0260:7224.
Los DNS traducen las cadenas ASCII que nosotros podemos recordar en direcciones de red
Para una persona es muy complicado memorizar estas ristras de números y caracteres, por lo que sería un problema difícil de sortear que nos viésemos obligados a introducir en las aplicaciones que utilizamos habitualmente la dirección IP del equipo en el que se aloja la página web que queremos consultar, o la de la máquina destinataria del mensaje de correo electrónico que estamos a punto de enviar.
Afortunadamente, los DNS (Domain Name System), o sistema de nombres de dominio, nos lo ponen mucho más fácil. Y es que son el mecanismo que se encarga de traducir las cadenas ASCII que nosotros podemos recordar con relativa facilidad, como 'pepito.grillo@xataka.com' o 'www.xataka.com', en las direcciones de red que manejan los protocolos de internet.
Hasta aquí llega la parte sencilla, que es la realmente importante desde el punto de vista de un usuario y la que merece la pena conocer. A quien le apetezca saber algo más acerca de este recurso le interesará estar al tanto de que los DNS se implementan como un sistema de nombres jerárquico basado en dominio bajo la forma de una base de datos distribuida.
Para llevar a cabo la traducción de una cadena ASCII a una dirección de red las aplicaciones llaman a un procedimiento conocido como resolvedor y le pasan como parámetro la cadena que es necesario traducir. A continuación, el resolvedor envía un paquete UDP a un servidor DNS local, que localiza el nombre y le devuelve la dirección IP asignada a esa cadena ASCII. Por último, el resolvedor entrega la dirección de red a la aplicación que ha solicitado la traducción, que a partir de ahí podrá establecer una conexión TCP con la máquina destino o enviarle paquetes UDP.
Qué es en realidad la web y por qué el protocolo HTTP nos ha traído hasta aquí
La web ha sido un éxito monumental. De hecho, muchas personas creen que es lo mismo que internet, pero no lo es; tan solo es un servicio que nos permite acceder a un determinado tipo de contenido alojado en algunas de las máquinas que forman parte de esta gran red. Fue creada en 1989 por el físico Tim Berners-Lee mientras investigaba en el CERN con un propósito: facilitar el acceso a una colección de documentos vinculados y distribuidos por millones de máquinas en toda internet.
Cuando los usuarios utilizamos nuestro navegador para recorrer nuestras páginas web favoritas y vamos saltando de una a otra al hacer clic en los hiperenlaces, estamos empleando la web. Sin embargo, es importante que recordemos que este recurso forma parte de internet, pero no equivale a internet. Está contenido en esta gran red y es solo una parte de ella. En esencia utiliza una arquitectura cliente-servidor, de modo que lo que vemos los usuarios es una colección de documentos que pueden incorporar hipervínculos, que no son otra cosa que enlaces que vinculan dos documentos y nos permiten saltar de uno a otro con facilidad.
El otro ingrediente de esta ecuación es el servidor, que, sencillamente, es el programa que se encarga de entregar las páginas solicitadas por los clientes que se conectan a él. El diálogo entre el cliente y el servidor se establece utilizando un lenguaje conocido como protocolo HTTP (HyperText Transfer Protocol), o protocolo de transferencia de hipertexto. Este lenguaje está evolucionando constantemente para hacer posible la implementación de nuevas funcionalidades y mejorar la experiencia de los usuarios, y su última revisión estandarizada es la 5.2. Os hablamos de ella en el artículo que enlazo aquí mismo.
Por qué a veces una parte de internet se va al garete
La visión de internet que pretendemos ofreceros en este artículo es superficial y solo aspira a que los usuarios estemos mínimamente familiarizados con los protocolos y las tecnologías más relevantes que utilizamos casi a diario. Sin embargo, pese a su limitado alcance este reportaje nos permite intuir la complejidad que se esconde bajo una gigantesca red de ordenadores y equipos de comunicaciones que según la consultora Statista en enero de 2021 era utilizada por más de 4600 millones de personas en todo el planeta.
La arquitectura de internet y buena parte de los servicios que nos ofrece han sido diseñados para ser tolerantes a fallos con el propósito de que si algo se rompe los usuarios ni siquiera nos demos cuenta de que algo ha fallado. Uno de los ingredientes utilizados con frecuencia para implementar esta tolerancia a los errores es la redundancia, pero hay muchas otras estrategias que también persiguen mantener en pie los servicios que nos propone internet cuando vienen mal dadas. Sin embargo, pese a todos estos esfuerzos, de vez en cuando algo se rompe. Y los usuarios lo notamos.
Si las personas que utilizamos internet nos damos cuenta de que algo no va bien es porque se ha producido un error grave del que uno o varios servicios no han podido recuperarse de una forma transparente. La raíz del problema puede ser muy diversa, por lo que podemos ilustrar esta situación echando un vistazo a las dos grandes caídas que todos hemos presenciado durante los últimos meses. Una de ellas tuvo lugar a principios del pasado mes de junio, y provocó que Amazon, Twitch, Vimeo y Reddit, entre muchas otras redes sociales y servicios, quedasen fuera de combate durante una larga y tediosa hora.
En aquella ocasión el origen de la caída estuvo en Fastly, un CDN (Content Delivery Network) bastante popular que tiene una cartera de clientes envidiable (de ahí que tantos servicios importantes se viesen afectados). Un CDN es una infraestructura de hardware y software diseñada para acelerar el acceso a un conjunto determinado de servicios web, y para hacerlo posible almacena una parte de los datos que manejan esos servicios en un sistema de caché de alto rendimiento. Os lo explicamos todo con más detalle en el artículo que enlazo aquí mismo.
La otra gran caída en la que podemos fijarnos para ilustrar en qué medida una parte de internet puede quedar fuera de combate tuvo lugar hace solo unos días, y se llevó por delante a Facebook, Instagram y WhatsApp, que, literalmente, desaparecieron de la red. En esta ocasión el origen del problema fue el protocolo BGP (Border Gateway Protocol), o protocolo de pasarela exterior, que, a grandes rasgos, se encarga de optimizar el transporte de los paquetes de datos entre redes diferentes, ayudando a cada una de ellas a informar a las demás de su presencia. Si queréis indagar un poco más podéis echar un vistazo al artículo en el que lo explicamos con más detalle.
Algunas lecturas recomendadas si queréis indagar más en la arquitectura de internet
Afortunadamente, en la web podemos encontrar muchísima literatura que nos permite indagar mucho más en la arquitectura de internet y conocer mejor cómo están implementados sus servicios. Si os apetece profundizar y este artículo os ha dejado con ganas de más os sugerimos que echéis un vistazo a los artículos de Mozilla dedicados a la estructura de internet o al lenguaje HTML; al artículo de la Universidad de Stanford (disponible en inglés) que repasa el funcionamiento de esta gran red; o a la abundante documentación que ha publicado el W3C, que es la organización que promueve la adopción de los estándares utilizados por la World Wide Web.
Las lecturas que os acabamos de proponer son una pequeñísima selección de los casi innumerables recursos que internet pone a nuestro alcance. No obstante, también tenemos otra opción: los libros en papel. El abanico de opciones en este ámbito es muy amplio, pero no puedo resistirme a recomendaros como punto de partida dos de mis libros favoritos: 'Redes de computadoras', de Andrew S. Tanenbaum, y 'Comunicaciones y redes de computadores', de William Stallings. Ambas son publicaciones de carácter académico que lo explican todo con profundidad y un rigor indudable, lo que las ha colocado como dos auténticos clásicos que siguen siendo utilizados pese a su veteranía en muchas escuelas y facultades de informática.
Imagen de portada | Junior Teixeira
Imágenes | Wikimedia | Offnfopt
-
La noticia Internet explicada para que cualquier persona pueda entender cómo funciona (y por qué a veces una parte queda fuera de combate) fue publicada originalmente en Xataka por Juan Carlos López .
Fuente: Xataka
Enlace: Internet explicada para que cualquier persona pueda entender cómo funciona (y por qué a veces una parte queda fuera de combate)
Comentarios
Publicar un comentario