Continuamos nuestra travesía por Las tripas de Internet. Hasta ahora, hemos hablado de la dirección IP de los ordenadores. Como vimos anteriormente, es un número del tipo 123.123.123.123, que identifica a cada ordenador conectado a Internet. Pero seguro que tu estás acostumbrado a direcciones como ‘eltamiz.com’ o ‘google.com’, y puede que no hayas usado esos números nunca. ¿Qué son esos nombres? ¿Como encajan con las direcciones IP? Todo ello es el sistema denombres de dominio, que veremos en este artículo.
Al principio, cuando Internet estaba cocinándose en los laboratorios, era una red extremadamente pequeña. Era sencillo recordar los números de todos los ordenadores. Sin embargo, poco a poco se fueron añadiendo más y más ordenadores, y pronto se comprobó que recordar todas las direcciones IP era inviable. Aparecieron los nombres de red. A cada ordenador se le asignaba un nombre arbitrario (por ejemplo, ORD01 o LaboratorioFisica). Luego, alguien recopilaba todos los nombres de la red y su dirección IP real, y escribía esa relación en un archivo (por ejemplo, ORD01=192.168.1.1). Ese archivo se distribuía entre todos los ordenadores conectados a la red. De esta manera, era sencillo para un programa o un usuario acceder al ordenador LaboratorioFisica, un nombre sencillo de recordar. Solamente había que consultar en ese archivo de ordenadores cual era la dirección IP del ordenador solicitado.
Con el tiempo, ese sistema reveló su fallo: era muy difícil mantener ese archivo actualizado en todos los ordenadores, sobre todo teniendo en cuenta que cada vez se añadían más y más equipos a la red. Entonces se decidió formar un buen sistema, basado en la misma red, para solucionar de una vez por todas este problema. Es el sistema de los nombres de dominio.
Vista en árbol de algunos nombres de dominio. Se pueden ver www.example.com o www.wikipediaz.cz, entre otros.
Antes de nada, había que estandarizar la nomenclatura. Si cada uno puede poner el nombre que quiera, al final será tan complicado recordar los nombres como las direcciones IP. Se decidió usar unos nombres jerárquicos. Por ejemplo, en el nombre tenia que quedar claro que ordenador era, a que departamento pertenecía y a que edificio: ord-principal.dptofisica.edificionewton (cuanto mas a la derecha, mas alto es el rango jerárquico). Cada uno de esos nombres separados por puntos se denomina zona (también hablaremos de subzonas cuando queramos señalar que una zona es ‘hija’ de otra).
Es importante hacer un matiz. La dirección ord-principal.dptofisica.edificionewton puede corresponder a la dirección IP de un ordenador, y la zona dptofisica.edificionewton puede corresponder a otro. Es decir, un nombre puede pertenecer a un ordenador y a la vez ser el ‘padre’ de otra subzona.
Las zonas son delegadas. Esto quiere decir que el responsable de la zona ‘edificionewton’ le delega la responsabilidad de la zona ‘dptofisica’ a otra persona. Quien gestiona ‘dptofisiica’, a su vez, puede delegar la zona ‘ord-principal’ a un tercero. De esta manera, el responsable de la zona ‘dptofisica’ puede agregar nuevos nombres a su red (cuyo nombre sería <unnombre>.dpofisica) sin tener que molestar al responsable de la zona ‘edificionewton’. Este a su vez, puede crear las zonas ‘dptomatematicas’ sin molestar para nada a los equipos de ‘dptofisica’. En Internet, las zonas ‘padre’ o Generic Top Level Domain (gTLD) son las archiconocidas .com, .net, .edu… Además, existe una zona padre por cada país o región (en este caso llamada Country Code Top Level Domain, ccTLD), de manera que tenemos .es, .fr, .us… Las gTLD suelen estar gestionadas por la IANA (la misma organización que asigna direcciones IP). Las ccTLD suelen estar gestionadas por un organismo propio de cada región.
En el mundo real, todo esto se traduce en lo siguiente: cuando compramos un dominio (ejemplo, eltamiz.com) realmente estamos pagando para que IANA, la organización responsable de la zona ‘com’ cree una subzona llamada ‘eltamiz‘ y nos delegue su mantenimiento a nosotros. De esta manera, nosotros podremos crear nombres como www.eltamiz.com para nuestros ordenadores o crear subzonas como elcedazo.eltamiz.com y cederle a alguien su gestión.
Una vez que tenemos un sistema de nomenclatura, podemos atacar el siguiente punto: ¿cómo distribuimos la información de direcciones IPs y zonas para que todo el mundo la tenga actualizada? En lugar de distribuir un archivo a cada ordenador (algo que tenía sentido cuando había muy pocos en la red, pero no ahora que hay montañas de ellos), se guarda ese archivo en ordenadores que actúan de ‘guías telefónicas’ de los nombres de dominio, a los que se conectan los demás. Esos ordenadores tiene un programa que recibe peticiones a través de un puerto de red. El que quiera consultar los datos de una zona, solamente tiene que solicitar la información a ese ordenador central a través de la propia red. El protocolo para esas solicitudes se llama DNS, del inglés Domain Name System, o Sistema de Nombres de Dominio. Los ordenadores que actúan de ‘guía telefónica’ se suelen llamar ‘Servidores DNS‘. El puerto por defecto para un servidor DNS es el 53.
Por definición, no podemos acceder a ese servidor usando un nombre, puesto que necesitaríamos conocer la IP a la que está asociada ese nombre (a esto se le llama resolver un nombre). Y para poder resolver un nombre, antes necesitamos conectar a un servidor DNS, con lo que acabamos en un bucle sin fin. Por ello, cuando configuramos una conexión a Internet, tenemos que especificar la dirección IP del servidor DNS (normalmente asignado por nuestro proveedor) que queremos utilizar.
¿Recuerdas que al principio toda esta información se guardaba en un archivo propio del ordenador? Pues ese archivo sigue presente hoy en día en la mayoría de los ordenadores, y se llama archivo hosts (host es la palabra inglesa para referirse a un dispositivo conectado a una red). Aunque suele estar vacío, si tiene datos el ordenador hace más caso a este archivo que al servidor de nombres que hayamos designado. Ese archivo se encuentra en /etc/hosts en el caso de Linux, y enC:\WINDOWS\system32\drivers\etc\hosts en caso de utilizar Microsoft Windows.
Podemos hacer una pequeña prueba, pero no hagas esto si no tienes claro lo que estás haciendo, puedes cargarte algo y no quiero sentirme culpable por ello. Vamos a agregar la siguiente línea a nuestro archivo hosts:
212.51.32.201 www.google.com
Esa dirección IP pertenece a la página de R, un proveedor de Internet. Con esta línea, le indicamos al ordenador que cada vez que nos refiramos al nombre www.google.com, realmente queremos trabajar con la dirección IP 212.51.32.201. Para comprobar esto, podemos abrir un navegador e ir a la direcciónhttp://www.google.com/, y aparecerá en nuestro navegador la página de R. Para volver a recuperar el buscador, simplemente hay que borrar esa linea.
Nuestro ordenador no pregunta al servidor DNS cual es la IP de www.google.com, sino que se fía de lo que le hemos dicho en ese archivo. Si tenemos una pequeña red en nuestra casa, actualizando el archivo hosts podemos asignar un nombre a cada ordenador (por ejemplo, podemos llamarlos ordenadorpepe.lan, portatil.lan y router.lan). Yo suelo utilizar la zona ‘lan’ porque no existe en el resto de Internet, con lo cual es seguro que nunca interferirá con el nombre de dominio de una página real. Naturalmente, estos nombres solamente los conocerán nuestros ordenadores, ya que el resto de ordenadores del mundo no tienen esas lineas en su archivo hosts.
Un dato importante, una dirección IP puede tener varios nombres (por ejemplo, eltamiz.com y www.eltamiz.com corresponden a la IP 68.178.254.21). Es más, un mismo nombre puede corresponder a varias direcciones IPs. En estos casos, cuando consultamos el nombre (por ejemplo, googlemail.l.google.com) obtenemos varias direcciones, y nuestro ordenador selecciona una al azar para conectar con ella. Esto se usa principalmente como un balanceo de carga primitivo: si tenemos dos servidores con los mismos contenidos, le podemos poner el mismo nombre a los dos, de manera que los usuarios se repartirán más o menos por igual entre los dos servidores.
En el siguiente artículo veremos cómo está organizado un servidor DNS, y cómo es posible que cualquier ordenador pueda conocer al instante la dirección de una nueva subzona que hayamos creado.