Tras la introducción, ésta es la primera entrada de la serie ‘Las tripas de Internet’. En ella vamos a establecer algunos primeros conceptos generales de la informática; hablaremos sobre datos (qué es un bit o un byte y cosas parecidas), su transmisión entre ordenadores y qué es un protocolo, e introduciremos elprotocolo IP, del que seguro que has oído hablar alguna vez.
Los datos y su transmisión
Los ordenadores, además de trabajar en solitario, pueden comunicarse con otros ordenadores a traves de las redes informáticas. Probablemente ya estarás familiarizado con el concepto de “red”, puesto que en tu casa, en la universidad o en el trabajo seguramente usas una red. Internet es similar a esas redes domésticas, solo que mucho más grande. Una red doméstica típica suele tener 2, 10 o 500 ordenadores (por ejemplo), pero Internet tiene cientos de millones. Son tantos, que ni siquiera es facil determinar el orden de magnitud. Exceptuando el tamaño, funciona igual que cualquier red informática: ordenadores que se envían información unos a otros.
Seguro que has oído que los ordenadores trabajan con los números 1 y 0. Esto es cierto. Toda la información con la que trabaja un ordenador (desde las fotos de las vacaciones hasta el icono que representa la flecha del ratón) se puede describir mediante números. Pero los ordenadores no trabajan con los números del 0 al 9 (base 10, la que usamos los humanos), sino que los transforman en números binarios (base 2). También se usan otros números, como hexadecimales y octales, pero no viene al caso. Cada uno de los dígitos (1 y 0) se llama bit, que es por lo tanto la unidad de información más pequeña que existe.
Por comodidad, los bits se agrupan en bytes, que son grupos de ocho bits. Por ejemplo, 10100111 es un byte. La velocidad de la conexión de un ordenador a la red se mide en bytes por segundo. Existen los múltiplos kilobyte (1000 bytes), megabyte (1000 kilobytes), gigabyte (1000 megabytes)… ¡Ojo! en otros aspectos de la informática un kilobyte son 1024 bytes (210), pero en redes se utiliza el múltiplo 1000 (103). Sin embargo, los operadores suelen ofrecer la velocidad en bits, de manera que “20 megas” son 20 megabits/segundo, que corresponden a 2,5 megabytes/segundo.
Pero para enviar información de un ordenador a otro, hay que imponer cierto orden. No podemos enviar una ristra de bytes sin más. Supongamos que quieres enviar las fotos de tus vacaciones a otro ordenador. Sin un orden, el ordenador receptor no sabría a qué foto corresponde cada uno de los millones de bytes que recibe, lo que haría la comunicación imposible. La solución a esto son los protocolos: unas convenciones establecidas de antemano para que los ordenadores sepan qué hacer con los bytes que les llegan a través de su red. En Internet, los dos protocolos más utilizados son IP y TCP (aunque técnicamente son dos protocolos diferentes, en la práctica siempre se usan los dos juntos en una combinación llamada TCP/IP).
El protocolo IP
Supongamos que queremos enviar una información cualquiera a otro ordenador, información que tenemos codificada en formato binario. Internet es una red conmutadora de paquetes, lo cual quiere decir que la información que hay que transmitir hay que dividirla en bloques (llamados paquetes o datagramas). Cada paquete será tratado y enviado por el ordenador y los elementos de red (nuestro modem o router, los equipos que tiene nuestro proveedor de Internet…) por separado. En el caso de Internet, el tamaño del paquete es de 1500 bytes, de manera que si queremos enviar 5000 bytes, nuestro ordenador los divide en 4 paquetes (aunque el último sea más pequeño, no pasa nada).
Una analogía para entenderlo mejor (que usaremos a lo largo de las siguientes explicaciones): quiero enviar toda mi biblioteca a un amigo de otra ciudad, pero la agencia de transportes me dice que las cajas tienen que ser máximo de 5 kilogramos. Así, cojo todos mis libros (mis bytes) y los distribuyo en cajas de menos de 5 kg (los paquetes).
Un paquete se envía desde nuestro ordenador a nuestro router, quien a través del cableado de la calle lo manda al router correspondiente de mi proveedor de Internet. Éste, a su vez lo manda al router del proveedor de Internet del receptor del paquete. Y así sucesivamente, hasta que el paquete llega a su destino. Por esto se llama red conmutadora de paquetes, los datos se codifican en paquetes que los diversos aparatos de la red se van enviando unos a otros hasta que llegan a su destinatario.
Siguiendo con el ejemplo de la librería, la empresa de transporte local envía cada paquete de libros a la central provincial de Correos, quien a su vez se lo reenvía a una empresa de transporte nacional, quien a su vez se lo reenvía a la oficina de Correos local del destinatario… En mi caso, cada paquete de datos que envío (o recibo) al servidor de eltamiz.com, pasa por más de 20 nodos intermedios.
Internet en Febrero de 1982, pocos años después de su creación. Imagen de Wikimedia Commons.
Pero por esos nodos intermedios pasan millones de paquetes provenientes de otros ordenadores y con destinos muy distintos. ¿Como sabe el nodo a quien tiene que enviarle el paquete? Aquí aparece el concepto de dirección IP. Cada ordenador o nodo conectado a Internet (o en general, a cualquier red que use TCP/IP) tiene una dirección única, como si fuera un número de teléfono. Por ejemplo, la dirección del ordenador donde está la página de eltamiz.com es 68.178.254.21. Los paquetes, además de llevar los datos (también llamada la carga o payload) llevan una cabecera con la dirección IP del destinatario y la del remitente.
En nuestro ejemplo, cada caja de libros lleva una pegatina con la dirección postal del destinatario y del remitente. De ese modo, pase por donde pase, su destino final siempre va con ella y (salvo que se produzca algún percance) acabará llegando a su destino. De hecho, es posible que unas cajas vayan por un camino y otras por otro, pero al final van llegando todas al destino final.
Hoy en día utilizamos la versión 4 del protocolo, llamada IPv4. En IPv4, se pueden tener algo más de 4000 millones de direcciones (concretamente 232). Pueden parecer muchas, pero hoy en día estamos llegando al límite de direcciones. Algunas de las causas son que cuando este protocolo se diseñó, nadie pensó que Internet crecería tanto, y se asignaban alegremente bloques enteros de direcciones como si fueran infinitas (si te asignan un bloque de varios millones de IPs, nadie más podrá utilizarlas, aunque tu sólo uses una). Por otra parte, algunos bloques de direcciones están reservados para otros usos y no pueden usarse como una dirección IP de Internet. Se está trabajando en la siguiente versión, llamada IPv6, que soluciona ese problema. Se ha ampliado tanto el número de direcciones IP posibles, que cada milímetro cuadrado de la superficie terrestre podría tener más de 600.000 millones de direcciones. Esperemos que esta vez sí sean suficientes
Representación visual de los nodos de Internet en 2005. Pese a la complejidad, solamente están representados el 30% de los nodos. Imagen de Wikimedia Commons.
La clave para entender las redes de paquetes es la siguiente:
Cada nodo de la red sabe a que direcciones está conectado directamente, y también la lista de nodos a la que tiene que enviar los demás paquetes.
Cuando llega un paquete, mira su dirección IP de destino. Si está conectado directamente a ese ordenador, le entrega el paquete. Si no está conectado directamente, consulta en su lista de nodos buscando qué nodo puede estar conectado al ordenador destinatario. En mi caso, mi ordenador sabe que está conectado a los ordenadores cuya dirección empieza por 192.168.1., direcciones que corresponden a mis otros ordenadores. Si la dirección es otra, sabe que tiene que enviarlos al nodo que tiene la dirección 192.168.1.1 (mi router). A su vez, mi router sabe que esos paquetes los tiene que enviar al nodo 213.60.4.1, correspondiente a un router de mi proveedor de Internet.
En el ejemplo de los libros, la agencia de transporte local sabe a qué direcciones postales puede entregar los paquetes directamente, y en caso de que el destinatario esté fuera de esas direcciones, sabe la dirección de la agencia a la que tiene que enviar el paquete de libros para que se encarguen ellos (pueden ser una o varias, por ejemplo, puede saber la dirección de la oficina central para envíos nacionales, y la de la oficina en Francia para envíos al país galo).
En teoría, la red es redundante, lo que quiere decir que hay varias maneras de hacer llegar un paquete al mismo destino, de manera que si algunos nodos intermedios fallan, no pasa nada. Son los propios nodos los que se comunican entre sí, diciendo quien está operativo, quién esta saturado, a quién está conectado cada uno… de manera que el resto de nodos pueda buscar rutas alternativas. Por tanto, aunque un paquete determinado siga un camino entre los nodos, otro paquete distinto puede seguir otra ruta diferente, dado que los nodos pueden haber cambiado entre un envío y el siguiente. En la práctica, es muy costoso mantener una red así, y en algunos puntos muchos ordenadores dependen de un solo nodo. En el mapa de Internet, podéis apreciar estos puntos porque forman “estrellas” y grandes estructuras en forma de árbol: muchos nodos conectados únicamente a un nodo central.
En definitiva, nuestro ordenador no “sabe” como enviar datos a cada ordenador de Internet. Simplemente divide los datos a enviar en paquetes, los marca con la dirección IP correspondiente y los entrega a la estructura de Internet para que ella se encargue de hacérselo llegar al destinatario.
Pero, una vez que llega el paquete al ordenador… ¿cómo sabe que tiene que hacer con él? Por ejemplo, puede que estemos navegando a la vez que tenemos abierto algun programa de mensajeria. Si llega un paquete nuevo… ¿cuál de los dos programas se tiene que hacer cargo de él? Además, ¿como sabe el destinatario si no se ha perdido algún paquete por el camino, y si le han llegado todos en orden? Es donde aparece el siguiente protocolo: TCP.