Búsqueda

jueves, abril 10, 2008

URLs y direcciones IP

Hace varias semanas, recibí un correo electrónico comentándome un detalle de un episodio de la serie de TV Life, que trata de un policía reintegrado en el servicio, tras pasar 14 años en prisión por error. En el episodio en cuestión, los protagonistas deben localizar a una chica (víctima de una violación, y que no había denunciado a su agresor) que solía conectarse mucho a Internet. Entre ellos se produce el siguiente diálogo (gracias JM):

—Ojala las personas tuviesen GPS.

—Los ordenadores lo tienen.

—¿En serio?

—Sí. Se conectaba a estas páginas desde su ordenador. Si no se ha desecho de él, podemos averiguar cual era su URL y localizarlo.

Aquí hay un error de concepto importante, ya que parece que se está confundiendo una URL con una dirección IP. ¿El qué? Bueno, empezaremos explicando qué es una URL.

Una URL es literalmente un localizador uniforme de recursos (Uniform Resource Locator). ¡Ah! ¿Y eso qué es?. Pues se trata de una serie de caracteres que se utilizan como nombre de un recurso en Internet (como páginas, imágenes, vídeos) y que además nos proporciona su localización en la red. ¿Ein? Bueno, hablando llanamente, es lo que aparece en la «caja de direcciones» de vuestro navegador, lo que tecleáis para acceder a un sitio.

Cada «trozo» de la URL (sí, aunque sean siglas de «localizador...», en castellano se suele utilizar el género femenino) tiene un significado concreto. Las letras que hay antes del «://» identifican el protocolo a utilizar, normalmente «http» o «https» (para los protocolos HTTP y HTTPS), aunque podéis encontrar otras cosas, como «ftp» (para el viejo amigo FTP) o «file» (para acceder al sistema de ficheros local; si utilizáis Windows, teclead «file:///C:/» y veréis). Lo que viene después del «://» nos dice dónde está lo que queremos. En el caso de un protocolo de red como HTTP, lo que viene es el identificador de la máquina (o máquinas, ya que pueden ser varios ordenadores trabajando conjuntamente), que normalmente es el nombre de dominio de la misma, aunque también puede ponerse su dirección IP (ya iremos a lo que es). Por ejemplo, para acceder a este vuestro blog, ponéis en la barra de direcciones lo siguiente: http://www.malaciencia.info.

Opcionalmente, para protocolos de red, se pueden poner el caracter de dos puntos («:») seguido de un número, que identifica un puerto. ¿Un puerto? Sí. Veréis, un ordenador puede ofercer varios servicios simultaneamente, a través de distintos protocolos (o a través del mismo, pero en procesos diferentes). Para diferenciar las peticiones a uno u otro servicio, existe el concepto de puerto, que viene a ser un canal de comunicaciones identificado por un número. Así, para diferenciar las peticiones a uno u otro servicio en el mismo ordenador, se utiliza el número de puerto. De hecho, toda comunicación de red se realiza a través de un puerto, lo que ocurre es que cada protocolo tiene un puerto asociado por defecto, de forma que si no se pone, la aplicación asume que se usa dicho valor por defecto. En el caso del protocolo HTTP es el puerto 80, de forma que es lo mismo poner http://www.malaciencia.info que http://www.malaciencia.info:80.

Tras el servidor y el puerto, puede aparecer una ruta hacia un recurso concreto (una página HTML, una imagen...). Por ejemplo, si colocáis el puntero sobre el «enlace permanente» de este artículo (al final del mismo), veréis que tras «malaciencia.info» aparece una ruta similar a la de un sistema de ficheros. Esa ruta identifica un recurso concreto dentro del servicio (en este caso, un fichero HTML). Al igual que antes, siempre debería ser necesaria esta información, lo que ocurre es que la mayoría de los sitios web tienen configurado un recurso por defecto, de forma que si no se especifica uno concreto, se utiliza dicho recurso (normalmente, la página de inicio).

Opcionalmente, pueden ir más cosas detrás de la ruta, pero de momento nos quedaremos aquí. Lo importante es darse cuenta de que una URL identifica básicamente un documento en una máquina (o en varias), que los hace públicos mediante algún servicio. Y eso sólo ocurre en servidores. El usuario medio, rara vez configurará su ordenador como servidor (al menos, de forma consciente). Es decir, en un ordenador que sólo se utilice para navegar por Internet, y no tenga funcionando un servicio HTTP, FTP, o similar (por ejemplo, si queremos que nuestro sitio web se ejecute en nuestro propio ordenador, en vez de buscar un alojamiento), no tiene ningún sentido hablar de URLs.

Por el contrario, una dirección IP sí que identifica un ordenador (o más genéricamente, una máquina, como por ejemplo, un router o una impresora). Se trata simplemente de un número de 4 bytes, y se suele representar como cuatro números entre 0 y 255, separados por puntos («.»). Su función es muy parecida a la de un número de teléfono. Para establecer una comunicación, hay que conocer la dirección IP de la máquina destino, y generalmente, entre los datos que se intercambian, se encuentran las direcciones IP de ambos extremos.

Antes mencioné que en la URL, puede aparecer un nombre o una dirección IP. Para evitar que la gente deba memorizar listas de números, se utilizan los nombres de dominio. Esos nombres son lo que realmente utilizáis y memorizáis (por ejemplo, «malaciencia.info», «google.com», «wikipedia.org», etc). Pero como los protocolos de red sólo entienden de direcciones IP, existen unos servidores especiales llamados DNS que funcionan como bases de datos, y que nos dice qué dirección IP corresponde a cada nombre de dominio.

Vemos por tanto que a lo que realmente se referían los protagonistas, es a la dirección IP del ordenador de la chica, no a la URL, que no tiene sentido. Una dirección IP identifica una máquina, mientras que una URL identifica un recurso concreto (un fichero) en esa máquina.

Y hay más. Una única dirección IP, no se corresponde necesariamente con una única máquina. En el caso de un usuario normal, que se conecte a Internet mediante un proveedor, puede que cada vez se le asigne una IP diferente, y puede que su IP esté siendo utilizada por más clientes. En estos casos, hay que conocer la fecha y hora de la conexión, para que el proveedor de servicios nos proporcione la información deseada (mediante la orden judicial correspondiente). Además, lo único que puede hacer éste, es darnos los datos que el cliente le haya proporcionado, que puede que no se correspondan con la ubicación física real del ordenador. La dirección IP sólo es un identificador, como un DNI o un número de teléfono. En este aspecto, la analogía con el GPS es totalmente incorrecta. Si deseamos conocer la ubicación física del ordenador, habría que ir «más abajo», y pedir la información a la compañía que mantenga la infraestructura telefónica si el acceso es por modem o ADSL, o a la que mantenga la infraestructura de cable (y que no tiene por qué ser la misma que la compañía que nos da el servicio de acceso a Internet).

La identificación del proveedor es sencilla, ya que existen organismos públicos que gestionan quién tiene qué direcciones (porque nuestra dirección IP, pertenece al proveedor), y dependiendo de aquél, puede que podamos disponer de forma rápida de información geográfica limitada, como el país, provincia o incluso la ciudad, a la que corresponde la IP (depende de cómo administre las direcciones el proveedor). Hay incluso sitios en la red donde se puede consultar toda esta información, y «contadores de clicks» que hacen estadísticas con los orígenes de los mismos (así puedo saber, por ejemplo, que aunque la mayoría de vosotros estáis en España, hay visitantes de México, Argentina, e incluso de Japón).

Estamos dando por sentado que la dirección IP se puede obtener sin problemas. Bueno, es muy fácil saber qué dirección IP se está utilizando para conectarse a un servicio nuestro. Pero en el caso que nos ocupa, se trata de obtener la dirección IP de conexiones de hace tiempo. Para ello necesitamos que el proveedor de servicios de internet, o el administrador de la web a la que se haya accedido, guarde un registro con dicha información (hace poco, hubo polémica con una ley, o intento de ley, o similar, que obligada a guardar esta información varios años). Además, necesitamos saber las fechas y horas en las que la persona que buscamos haya accedido a determinados sitios (o bien, que la información guardada incluya cosas como datos de autenticación, cosa que también es controvertida).

Una dificultad añadida podría ser obtener la dirección IP real del ordenador. Veréis, en muchos casos, el acceso se realiza a través de lo que se denomina proxy (literalmente, «representante», en inglés), que consiste básicamente en un «intermediario». Dependiendo de la tecnología y sistema utilizado, una posible consecuencia es que la dirección IP que vea el otro extremo (el administrador de la web) no sea la que tenemos nosotros en realidad.

Lo gracioso de todo este asunto, es que según me cuentan en el correo, la chica que buscaban se había mudado, después de frecuentar la red. Y aquí, o la portera del antiguo domicilio sabe algo, o no hay nada que hacer.

16 comentarios:

  1. ademas hay que ver que lapersona en cuestion use su propio computador, ya que simplemente si se quiere evitar ser encontrado por la ip (si es que se puede) solo es cuestion de ir a un cibercafe

    ResponderEliminar
  2. Alf, has olvidado comentar que, si las personas tuviésemos todos un GPS personal, tampoco sería posible hallarnos. El Gran Hermano ya lo inventará, pero todavía falta.

    ResponderEliminar
  3. Estupendo blog al que he llegado de carambola. Por qué no un post de lo que pasa cuando "borras" un archivo?

    ResponderEliminar
  4. No creo que haya error de confundir la URL con la IP. Mi ordenador tiene una URL asociada con la IP. El fallo no está ahí. La crítica es exagerada.

    ResponderEliminar
  5. Anónimo, si que existe un error al confundir URL con IP, en primer lugar la asociación de la URL con la IP la hace un servidor DNS y encima hay que decírselo explícitamente (cosa que generalmente no se hace al menos que tengas un servidor), además si tienes IP dinámica cada vez que te conectas a internet lo primero que debes hacer es conectarte a tu servidor DNS y decirle que IP tienes esta vez.

    Por otro lado, Alf, realmente sí que hay algo que identifica a un ordenador en la red, y esto es la dirección MAC de la tarjeta de red, esta dirección es única y te la el fabricante. Mis conocimientos de redes están muy enterrados en la memória, pero creo que la dirección MAC se utiliza en un protocolo cuando te conectas antes de que te asignen una conexión IP (aunque puede ser la dirección MAC del router, no estoy seguro).

    S2

    Ranganok Schahzaman

    ResponderEliminar
  6. Mi conexión tiene URL (el ordenador tiene otra porque está en red, pero no importa), que esté indexada en los servidores DNS es una cuestión que no conozco, pero mi URL me la asignan tan automáticamente como la IP. Es un "string" formado con los números de la IP y lo que parece el nombre del servidor de datos de telefónica y con un .es al final.

    El fallo es menor. Una excelente serie como CSI tiene la tremenda inconsistencia de "comprimir" lo que no son sino investigaciones reales de semanas en un día o dos. Eso les obliga a tomarse licencias, a veces muy llamativas. No deja de ser una buena serie por eso. Lo que no hay que hacer es creerse las cosas por realistas que parezcan.

    ResponderEliminar
  7. Te animo a ampliar el artículo con el resto de información que se puede configurar en una URL, no sólo la parte del final (la de después del ?), sino también cómo es posible especificar el login y password en la propia URL para servicios que lo requieran (como servidor FTP o HTTP con autenticación).
    Aunque entiendo que es un artículo introductorio, sí creo conveniente aclarar que una URL no apunta necesariamente a un documento o fichero estático, si no que la propia página que estamos viendo es probable que no exista físicamente en un fichero, si no que realmente existe como fruto de una composición de información obtenida de diferentes recursos (BBDD, ficheros) y que es generada dinámicamente.
    Por último, ranganok, la dirección MAC efectivamente identifica físicamente a una máquina y es usada en el protocolo de nivel de enlace (que es inferior al nivel IP). Viene grabada físicamente en la tarjeta o interfaz de red, lo único es que es algo modificable por software según el modelo. Por ejemplo, en los adaptadores inalambricos Belkin es posible modificar la MAC en la propiedades de Windows del adaptador. No obstante esta información sólo circula por la red local a la que estés conectada, y no es visible desde el servidor.

    ResponderEliminar
  8. Como dijo Alf, una URL identifica un recurso dentro de una máquina (o incluso varias), lo que Fran tiene es un nombre de dominio (de tipo meta, formado por la IP con los bytes invertidos y un par de datos del servidor).

    La IP, en cambio, al igual que el nombre de dominio, designa una máquina. Para localizar una máquina es necesaria la IP, para localizar un recurso dentro de esa máquina, es necesaria la URL.

    Como final, la URL en castellano es femenino porque se considera "dirección URL".

    Y tal...

    ResponderEliminar
  9. si se quiere evitar ser encontrado por la ip (si es que se puede) solo es cuestion de ir a un cibercafe

    Efectivamente. Una solución muy simple, y que rara vez he visto en películas o series. Aunque si el cibercafé tiene cámaras de vigilancia...

    Alf, has olvidado comentar que, si las personas tuviésemos todos un GPS personal, tampoco sería posible hallarnos.

    Efectivamente, el GPS no es un sistema que localice nada. Simplemente proporciona información para que un receptor calcule su propia posición.

    Ya hablé de ello varias veces:

    http://www.malaciencia.info/2005/10/csi-miami-y-el-gps.html
    http://www.malaciencia.info/2005/11/fotografiando-con-luz-negra.html
    http://www.malaciencia.info/2005/12/el-sistema-galileo-ii.html

    Por qué no un post de lo que pasa cuando "borras" un archivo?

    También, también :-)

    http://www.malaciencia.info/2007/03/forzando-discos-duros.html


    Sobre si es un error importante o no, como ya han dicho otros (y yo mismo en el artículo), una dirección IP identifica una máquina, y una URL un recurso dentro de la máquina (incluso la forma de acceso, ya que no es lo mismo si empieza por http:// que por ftp://). Además, los registros de las aplicaciones, sólo almacenan la dirección IP (puesto que la URL del cliente, si existe, ni viaja en el protocolo de comunicaciones, ni aporta nada).

    Me apunto lo de profundizar en el resto de información que puede aparecer en una URL. Tal vez para el siguiente... ya veremos :-)

    Una curiosidad adicional sobre las MACs. Hay sitios, donde las redes internas se administran de forma que la dirección IP se asigna dinámicamente (mediante DHCP), pero utilizando la MAC para asociarlas, de forma que siempre se asigna la misma dirección IP al mismo ordenador (en realidad, se asigna a la tarjeta de red, de forma que si la cambias...). Así, parece que las direcciones IP son estáticas, aunque en realidad la asignación sea dinámica.

    ResponderEliminar
  10. —Sí. Se conectaba a estas páginas desde su ordenador. Si no se ha desecho de él, podemos averiguar cual era su URL y localizarlo.

    En el supuesto de que tuviese una IP dinámica, el proveedor le asigna una IP (que puede ser distinta) cada vez que se conecta.
    El tener o no el mismo ordenador es irrelevante.
    En el caso de tener una IP fija, tampoco depende del ordenador. Si el usuario cambia de ordenador y tiene una IP fija, será la misma. Cuando cambias de ordenador ni siqueira tienes que avisar a tu proveedor de Internet.

    ResponderEliminar
  11. Tienes razón. No me había fijado en eso de "Si no se ha deshecho de él".

    ResponderEliminar
  12. Hola, soy un lector del blog desde hace ya tiempo pero nunca me había decidido a comentar nada. Aprovechando que hablaba de informática quería matizar dos cosas.
    Para diferenciar las peticiones a uno u otro servicio, existe el concepto de puerto, ...
    Hasta ahí de acuerdo.
    ...que viene a ser un canal de comunicaciones identificado por un número.
    Bueno, no es que el puerto sea el canal, el puerto es el punto de acceso al servicio en la máquina. El canal sería el conjunto de recursos reservados o no a lo largo de la ruta que une la máquina origen y la máquina destino. Los puertos serían los extremos del canal.
    Así, para diferenciar las peticiones a uno u otro servicio en el mismo ordenador, se utiliza el número de puerto.
    De acuerdo.
    De hecho, toda comunicación de red se realiza a través de un puerto, lo que ocurre es que cada protocolo tiene un puerto asociado por defecto, de forma que si no se pone, la aplicación asume que se usa dicho valor por defecto.
    No es verdad que TODA comunicación se haga a través de un puerto, sólo aquellas que se hagan en la capa de transporte. Existen otros tipos de comunicaciones que no usan puertos porque se llevan a cabo en capas inferiores de la arquitectura de red. Por ejemplo un PING.

    Sólo eso. Felicidades por la web. La encuentro muy interesante. Saludos.

    ResponderEliminar
  13. Tienes razón.

    Lo de "viene a ser un canal de comunicaciones identificado por un número" era una forma de dar una idea sin entrar en detalles.

    Pero lo de generalizar el uso del puerto a toda comunicación, sí que ha sido un despiste imperdonable (soy teleco, y anda que no me machacaron en la universidad con lo de las dichosas capas). Debería haber caído y mencionar algo al respecto.

    ResponderEliminar
  14. PUES LA VERDAD YO SOY LA CONTRALORA ANGELES Y NO ME SIRVIO DE NADA SU EXPLICACION NECESITO MAS INFORMACION MENOS GUIRI GUIRI

    ResponderEliminar
    Respuestas
    1. PUES CONTRALORA MEJOR PONGASE A LEER BIEN PORQUE SI ESTA BIEN EXPLICADO O KIERE SE LE EXPLIQUEMOS CON MANZANAS? YA PARECE EL ALF QUE NUNKA ENTIENDEN NADA CHAMACOS DE KINDER

      Eliminar
  15. Es posible conocer la URL a partir de la direccion IP?, si es asi, como se haría?

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.