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 de nombres 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.
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 en C:\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ón http://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.
Referencias
- Wikipedia – Domain Name System
- RFC882, especificación inicial del protocolo (hoy en dia desfasado)
The Las Tripas de Internet – Los dominios: nombres de dominio by Sergio Cinos, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 Spain License.
{ 4 } Comentarios
Muy interesante, como siempre. Creo que deberías hacer un par de cosas (tal vez vas a hacerlas de todos modos y me estoy adelantando):
Puedes enlazar aquí desde la presentación de la serie (ya hay enlaces a los otros dos artículos, y se menciona éste).
También puedes enlazar desde el artículo anterior de la serie, el de TCP, para que alguien pueda ir leyendo toda la serie sin volver al índice.
En el artículo de TCP, creo que el modo de corregirlo, aunque haga más honor a quien te ha corregido, no es lo más conveniente para el lector. Yo no mencionaría la corrección al final, sino que reescribiría el artículo para que esté correcto. Si quieres agradecerlo a Aracem, lo puedes hacer en un comentario, pero creo que es mejor que un lector lo vea correcto desde el principio; esto no es un foro, y no hay problema porque lo cambies sin dejar rastro de la versión incorrecta
En el próximo artículo, le creamos página a la serie, que ya tiene peso.
Kent, que malo eres! como te has guardado una continuación del artículo ahora hay que esperar para criticarte (ejem, comentar)
De todas formas, lo del fichero hosts, es muy curioso/interesante.
Modificar este fichero puede servir para por ejemplo bloquear ciertas páginas que queramos, puesto que el DNS no podrá resolver sus ips correctamente.
Otra utilidad, es si tienes que acceder muchas veces a un mismo sitio y ves que tu navegador, cada vez busca la dirección, como si no se acordara de la útlima vez que lo hizo, pues se la dejas apuntada en el fichero hosts y ya no la volverá a buscar más.
Pero, esto también puede ser utilizado por algún virus (y seguro que lo hacen) que se cuele en tu ordena y modifique el archivo haciendo que algún banco apunte a otra dirección que tenga controlada. O mejor aún, que apunte a la propia máquina local: 127.0.0.1 y tenga un mini servidor web que te haga creer que estás en la web del banco, y se quede con tus datos de acceso. Y sinó algo tan sencillo como engañar al propio mesenger. (quizá ya no, pero antes seguro que sí se podía).
Por otro lado, no sé si lo dirás en la próxima entrada, o cuando llegues al protocolo http: si bien un nombre de dominio corresponde con una ip (por lo general), una ip puede tener varios dominios, y esto lo usan los servicios de hosting de páginas web.
Por esta razón, si tratamos de acceder a alguna de estas páginas sólo por la ip y no por el nombre del dominio, no encontraremos lo que esperábamos. O si con el fichero host hemos asociado a un dominio una ip que corresponde a varios dominios, tampoco lo conseguiremos. (por supuesto me estoy refiriendo a hacerlo desde el navegador).
Bueno, ánimo con la serie, y que sepas que aquí estamos siempre dispuestos a criticar (ejem, comentar).
@Pedro,
Si, la verdad es que me quedaban muchas cosas pendientes por hacer al publicar esta entrada . Últimamente estoy muy liado ya que estoy cambiando de trabajo y ciudad, y no tengo todo el tiempo que me gustaría. La terminé en el hueco entre viaje y viaje, y debido a la prisas, no quedó todo lo trabajada que me gustaría. De cualquier manera, ya he hecho algunos cambios y enlaces, a ver si esta tarde me puedo poner con la corrección buena del TCP
@joel,
Si, ya veo que esto esta lleno de informáticos a la espera para saltar De todas maneras, en la continuación tampoco voy a entrar de lleno en el protocolo DNS, sino que hablaré de los servidores maestros y exclavos, los registros de una zona…
La verdad que tocar el archivo hosts puede ser un arma peligrosa. Está al alcance de cualquiera cambiarlo (solo hay que editar un archivo), y los efectos pueden ser catastróficos, como en el ejemplo de la web del banco. Es el principal problema de estos protocolos: fueron desarrollados hace décadas, en un tiempo en que Internet era un paraíso de buenas intenciones, y no estaba asolada por las plagas de los robos o el SPAM que tenemos hoy en día. Supongo que en parte estas lacras se deberán a la capitalización de la red, verla como una tierra sin ley donde ganar dinero de cualquier manera.
Magnífica entrada!!!
Ya tenemos una serie con peso que seguro que ayudará a muchos para conocer este inmenso mundo de internet.
Sólo añadir al artículo, que como en todo esto, estos protocolos aunque muy bien pensados a veces tienen fallos. DNS era uno de ellos puesto que este mismo año se juntaron todas las empresas “gordas” en esto de los ordenadores para resolverlo (un poco de información aquí http://www.elotrolado.net/noticia_publicados-los-detalles-de-la-vulnerabilidad-dns_14943)
Ya estoy esperando la siguiente entrada
Escribe un comentario