CSI VI: Cómo funciona Internet
Vale, venga: hagamos una pregunta inocente: ¿cómo funciona Internet?. Por suerte, esta sí es una de las cosas que se estudian en Informática. Pero la pregunta no es tan sencillita, no. Primero: ¿qué significa Internet?. Según la Wikipedia:Internet es un método de interconexión descentralizada de redes de computadoras implementado en un conjunto de protocolos denominado TCP/IP y garantiza que redes físicas heterogéneas funcionen como una red lógica única, de alcance mundial.
Aquí hay jerga de esa que tanto nos gusta. Este párrafo quiere decir más o menos que Internet sirve para comunicar distintos dispositivos con otros ordenadores. Descentralizado hace referencia a que no existe un supercomputador gigantesco en Arizona haciéndolo funcionar. Implementado en un conjunto de protocolos nos dice simplemente que utilizamos ciertas formas de comunicarnos para entendernos unos a otros. Y garantiza que blablabla significa que los usuarios no tienen por qué conocer de qué manera se transmite la información. Eso para los Telecos.
Así que vayámonos haciendo a la idea. Internet no es la WWW. Internet no es el eMule. Internet no es Youtube. Internet no es la causa del bajo nivel del cine español, ni del cierre de los videoclubs, ni de que los niños no lean. Y por supuesto, no tiene nada que ver con el porno, por más que Tom Cruise quiera. Otra cosa es que se vea porno a través de Internet
Vale. Tenemos la vaga idea de que Internet es un canal para comunicar información a través de una o muchas redes, sean del tipo que sean. Pero ¿cómo funciona?. Pues a ver: hagamos una prueba y construyamos Internet. Supongamos que Aitor le quiere pedir a Bartolo una foto. Como le han dicho en PC City que los cables Ethernet sirven para transportar datos le tira una punta del cable a Bartolo (B). Pero no nos sirve gritarle al cable. De alguna manera hemos de codificar el "quiero una foto" para transportar la petición por el cable. Cuidado. No me refiero a transformar las palabras "quiero una foto" en secuencias de 0s y 1s. Eso también se hace y para ello hay tablas (ASCII es la mas conocida). Me refiero a que esos ceros y unos se codifican luego para enviarlos de cierta forma. Y con ciertos niveles de tensión. O transformándolos en ondas de cierta manera.
Maneras de codificar/transformar/modular la información hay muchas. Dependen, fundamentalmente del medio a través del cual vayamos a enviarla. Y de lo que queramos hacer con ella. Por eso se definen muchas maneras de hacerlo según el nivel físico por donde se va a enviar.
Vale. Ahora imaginemos que B se dedica a repartir fotos. Y que todos los Colegas de la oficina estamos conectados al mismo cable y pedimos fotos a B. A B le llegan mensajes del tipo "quiero una foto", pero... ¿Cómo sabe B quién le ha pedido una foto?. Pues añadimos información de quién somos y a quién pedimos algo. Porque al estar todos conectados al mismo cable, ¡los mensajes los recibimos todos!. Hace falta indicar no sólo qué queremos, sino quiénes somos y a quién se lo pedimos. De este modo sabremos cuándo las respuestas o peticiones son para nosotros. Esta información que se añade no tiene nada que ver con la información que se podía añadir en la codificación. Esto es importante notarlo porque...
Supongamos que en vez de un cable quiero transmitir la información de otra manera. A través de Wi-Fi, (para no gastar cables, por ejemplo). La información será de otro tipo (ondas electro-magnéticas)... y por tanto deberé codificar la información de la mejor manera para ese tipo de transmisión. Pero ¿por qué debería cambiar la manera que tenemos de identificarnos?. Mantendremos independientes esos dos niveles.
A esa idea tan buena y tan tonta se le llama estructurar en forma de pila. Internet funciona en forma de pila de protocolos: hay partes de la comunicación (niveles) que tienen unas tareas específicas. Puedo idear muchas maneras adecuadas de realizar esas tareas... pero no es necesario cambiar el resto de "niveles". Constituye así una arquitectura flexible.
Demos un paso más. Supongamos que queremos ofrecer ciertos servicios a otra oficina. Que ellos también quieren fotos. El problema es que ellos no tienen nombres como los nuestros (A, B, C): se llaman con números (1, 2, 3). Y... ¿le importa a B cómo se llamen ellos? Pues no. ¿Y si gastan telepatía para transmitirse entre ellos las imágenes? Tampoco nos importa. Lo único necesario es que existan unos nombres comunes a todos nosotros: de este modo alguien de la otra oficina puede hacer una petición a B incluyendo su supernombre y B sabrá a quién tiene que contestar.
Para encaminar bien los mensajes hacia otras oficinas existen unos elementos: se llaman routers. Un router debe encontrar al destinatario de un mensaje en la red donde opera. Y si no lo encuentra, redirigir ese mensaje a otro que quizá lo sepa. Un router opera en el nivel de red. Este nivel es el que es la clave de Internet. Las direcciones comunes a todos se llaman direcciones IP. IP significa Internet Protocol, en un dechado de imaginación.
Entonces hagamos un repaso: transformamos la información de cierta manera, añadimos información para encontrarnos dentro de una red, le sumamos información para transmitirlo a otras redes. Además, en cada nivel añadimos más cosas. Por ejemplo para controlar que no ha habido ningún error en el envío. O para dar pistas sobre lo que contiene el mensaje, o el tipo de red desde donde se envía... en fin: un montón de cosas. Pero resumiendo: llevamos tres niveles. Y se llaman nivel físico, nivel de enlace y nivel de red.
Pero hay más. Resulta que en Internet no se envían los datos todos juntitos. Se envían por paquetes. De este modo podemos aprovechar mucho más toda la amplitud de la red. Unos paquetes de un mensaje se intercalan con los de otro. Cada paquete se busca la vida para llegar a su destino. ¿Qué es lo que pasa con este modelo?. Pues que cuando nos salimos de nuestra red o cable podemos tener problemas. A veces se pueden perder fragmentos, o llegar desordenados, o que algunos lleguen corruptos...
Para controlar un poco todo este lío se añade un nivel o capa más: la capa contiene cierta información acerca de la comunicación que mantienen dos equipos. A esta capa se le llama de transporte. De este modo podemos proporcionar control de flujo, que no es más que cierta coherencia en la transmisión de la información. Podemos utilizar protocolos que garanticen mayor o menor control sobre la comunicación. En Internet se gasta un protocolo llamado TCP (Transmit Control Protocol). De ahí la definición anterior de la Wikipedia.
¡Pero aún no hemos terminado! Supongamos que B ofrece muchos servicios, además de enviar fotos. Supongamos que, encima, te dice la hora, repite lo que dices o cada día te cita una frase famosa1. Pues le pondremos un identificador a cada uno. Los servicios más conocidos tienen un identificador / número de puerto bien conocido (por todos). Además, cada servicio o aplicación requiere de un protocolo de transporte u otro, según la necesidad de control sobre la transmisión que precise. Lo que se hace es añadir el identificador del servicio junto con la información de la capa de transporte. Y luego añadimos la información referida únicamente al servicio.
Esta última capa se llama de aplicación. En Internet, el protocolo más conocido en esta capa es HTTP. HTTP definía básicamente una manera de transmitir letras y la manera en que queremos que un programa navegante las muestre. El resultado son las páginas html. Como la que vemos.
Resumen, tenemos 5 niveles: físico, enlace, red, transporte y aplicación. Cada nivel añade información al siguiente, empezando desde el de aplicación. Añade la información que aquí he contado... y mucha más. Y la comunicación es muuuucho más compleja. Pero qué mas quieren. Si pudiese contar cómo funciona Internet en un post... debería preguntarme dónde fue a parar el dinero que invertí en la carrera.
Posts relacionados
0 cosillas:
Publicar un comentario