Búsqueda

jueves, abril 24, 2008

Explosiones en el espacio

Hace poco me leí Cita con Rama, de Arthur C. Clarke (que en paz descanse), todo un clásico de la ciencia ficción, y que recomiendo al que no lo haya leído, que lo haga ya. La novela es todo un ejemplo de buena ciencia, y trata sobre un enorme artefacto al que los científicos bautizan como Rama, que penetra en el sistema solar siguiendo una trayectoria hiperbólica alrededor del Sol, es decir, aparentemente sólo está de paso. Se envía una expedición a investigarlo, descubriendo un mundo cilíndrico y hueco, que rota para proporcionar una pseudogravedad en su interior (mediante la fuerza centrífuga).

Hubo una escena que me recordó un error bastante recurrente (que el libro no comete, por supuesto). Intentaré describirla sin destripar demasiado la trama: En un momeento dado, Rama es amenazado por un artefacto explosivo, con suficiente potencia como para destruirlo. Los personajes convienen en que la mejor forma de alejarse de Rama es siguiendo su eje longitudinal, ya que si el aparato explota, y Rama se fragmenta, la fuerza centrífuga de su rotación lanzaría los pedazos en todas las direcciones transversales el cilíndro. Se dice casi literalmente que el alcance de los fragmentos es ilimitado.

Y eso es cierto. En nuestro planeta, el alcance de la metralla de una explosión es limitado. Los fragmentos pierden velocidad debido a la resistencia del aire, y además, la gravedad los empuja hacia el suelo, donde el rozamiento es mayor. Tarde o temprano, la metralla que no ha colisionado con algo (o alguien) cae al suelo, y termina deteniéndose. En el espacio, sin embargo, no hay nada que frene los fragmentos. Una vez salen despedidos, seguirán en línea recta, y manteniendo la misma velocidad. Es decir, no importa si estamos cerca o si nos hemos alejado mucho. Si un fragmento nos golpea, lo hará con la misma fuerza que si estuviéramos al lado de la explosión. La única seguridad que proporciona la distancia, es que al viajar los fragmentos en todas direcciones desde el centro del la explosión, cuanto más lejos estemos, menor será la «concentración» de aquellos. Es decir, si nos alejamos, la probabilidad de que nos alcance un pedazo disminuye. Pero si choca con nosotros, el daño será el mismo, no importa lo lejos que estemos.

Fotograma de La venganza de los Sith, que muestra la batalla inicial sobre Coruscant

En las películas, es habitual que, en una batalla espacial, las naves se intercambien disparos a poca distancia. En algunos casos, como en El Retorno del Jedi, o en La Venganza de los Sith, enormes cruceros y destructores se disparan casi a bocajarro, flanco con flanco, como en las antiguas batallas navales. También es habitual que en plena batalla de «pesos pesados», diversos cazas se enfrenten entre ellos, o incluso contra los cruceros, con cientos de explosiones por todos lados. Pues bien, en realidad, cada explosión debería ser una amenaza terrible para cada nave involucrada en la batalla (a menos que otra le tape la línea de visión). No digamos ya cuando un caza destruye a otro a bocajarro, y atraviesa la explosión de su enemigo. Y sí, uno puede decir que las naves tienen escudos, campos de fuerza o similar. Pero eso sólo es aplicable en algunos casos, como en las sagas de Star Wars o Star Trek. En Galactica o en Babylon 5, las naves no tienen escudos (sólo un casco más o menos resistente).

jueves, abril 17, 2008

Un poco más sobre URLs

En el artículo anterior, uno de vosotros me animó a explicar el resto de cosas que puede tener una URL, y que no mencioné por no extenderme demasiado (con lo visto, ya era suficiente para ver la diferencia entre una URL y una dirección IP). Así que, vamos a ello.

Había explicado que una URL, en el caso más genérico, identifica un recurso en la red. Siendo más específicos, podemos decir que entre otras cosas, identifica un fichero en un ordenador. La URL nos dice también cómo acceder al recurso, es decir, qué protocolo utilizar. Nos quedamos con tres elementos básicos de la URL: el protocolo (lo que va antes de «://»), la máquina (identificada por su dirección IP o por su nombre de dominio), el puerto (tras «:», aparentemente opcional, aunque implícito si no aparece), y el recurso (tras el siguiente «/», también opcional, aunque se configura un recurso por defecto).

Fijaos que intento evitar la palabra «fichero» y referirme siempre a «recursos». Esto es porque no todos los recursos son ficheros. Pensemos en un buscador cualquiera (como Google, por ejemplo). Uno introduce sus palabras de búsqueda, y tras pulsar la tecla «Enter» o clicar el botón correspondiente, vamos a la siguiente página, que es una lista de resultados. Imagino que no pensaréis que dichas páginas existen en forma de ficheros en los servidores de Google, Yahoo, o el que sea, y que cientos de currantes han creado todas las páginas posibles, para todas las combinaciones de palabras posibles. Es obvio que algún programa genera en ese momento la página que vemos, y que ésta no tiene existencia real en ningún disco duro (salvo en alguna caché). Fijaos también que en este caso, en la página con la lista de resultados, la URL que vemos en la cajita de direcciones es muy larga, con símbolos «raros», y que aparecen las palabras que habéis tecleado.

Bien, eso es otro fragmento que puede aparecer en la URL, y que se denomina «query string» (que podríamos traducir como «cadena de consulta»). Esta «query string» aparece tras la ruta, precedida del símbolo de interrogación de cierre «?». Habitualmente (sobre todo en el caso de HTTP), consiste en parejas de tipo «nombre=valor» separados por el símbolo «&», donde «nombre» sería el nombre de un parámetro, y «valor» su valor. Si buscáis algo en Google, por ejemplo, veréis que la URL de la página de resultados comienza por «http://www.google.es/search» (si estáis en España, si no, el sufijo será diferente, como «.com», «.mx», «.ar», etc.), tras lo cual sigue la interrogación, y luego la «query string». En ella podemos observar un parámetro llamado «q», con los términos de búsqueda. Fijaos que los espacios en blanco han sido sustituidos por el símbolo de sumar «+», y que algunos caracteres (como eñes o vocales acentuadas) han sido sustituidos por una misteriosa secuencia de símbolos de porcentaje («%») seguidos de letras o números. Esto es porque en una URL no puede aparecer cualquier caracter, por lo que si queremos transmitir algún parámetro con uno de estos caracteres «prohibidos», hay que transformarlos (y el servidor, se ocupa de recuperarlos nuevamente).

Un recurso también puede ser un fragmento de otro recurso (por ejemplo, una sección en una página HTML). Para identificar un fragmento de un recurso, se coloca el caracter «#» al final de la URL (que identifica el recurso «padre»), seguido del identificador del fragmento. Si váis a cualquier artículo más o menos completo de la Wikipedia (por ejemplo, el relativo a URL), veréis que tras una breve introducción aparece una tabla de contenidos, consistente en varios enlaces. Estos enlaces llevan a secciones de la propia página, y si ponéis el puntero sobre ellos, veréis que la URL es la misma que la de la página, pero seguida del caracter «#» y un nombre. Si clicais sobre cualquiera de ellos, os desplazaréis por la página sin que ésta se recargue.

Finalmente, hay otro elemento que puede aparecer en una URL, pero esta vez, delante del identificador de la máquina (tras el «://»). Un recurso puede estar protegido, y sólo ser accesible a determinados usuarios, de forma que necesitamos autenticarnos. Si intentamos acceder a un recurso de este estilo mediante nuestro navegador, y la autenticación se realiza mediante nombre de usuario y contraseña, nos aparecerá una pequeña ventanita pidiendo dichos datos (ventanita que pinta el propio navegador, no la página, por lo que su apariencia varía de un navegador a otro, y es consistente con la de éste y la plataforma). En las aplicaciones web no es habitual, ya que la autenticación suele hacerse mediante un formulario HTML, integrado estéticamente en el diseño de la página. Sin embargo es algo que se puede hacer, y que sí es muy habitual en el caso de utilizar FTP. Si queremos, podemos evitar que aparezca la ventanita, añadiendo el nombre de usuario y la contraseña en la propia URL. Para ello, justo después del «://» se coloca el nombre de usuario, deguido del caracter de dos puntos («:»), la contraseña, el caracter arroba («@») y finalmente el resto de la URL (máquina, puerto, etc.). Así, nos quedaría algo de este tipo: «http://usuario:contraseña@dominio.com/recurso».

Como la contraseña aparecerá en la URL, y puede que no queramos que sea tan visible (y que quede guardada en algún registro de direcciones accedidas), podemos no ponerla, y utilizar sólo el nombre de usuario. En este caso, tras el nombre de usuario iría directamente la arroba, y luego el resto de la URL. El navegador nos mostrará igualmente la ventanita, pero con el nombre de usuario ya puesto, aunque esto ya depende del navegador: Opera lo hace así, Firefox muestra la ventana sin rellenar (al menos, en la versión 2), y Explorer, directamente no soporta añadir usuario y contraseña a la URL (al menos, en la versión 6).

Llegados a este punto, no puedo evitar mencionar una curiosidad sobre la arroba (que también es una antigua unidad de masa). Os habréis dado cuenta que la forma «usuario@dominio» es igual que la utilizada para una dirección de correo electrónico. Esta misma sintaxis se utiliza para otros protocolos y aplicaciones (como el telnet). Y es que en inglés, al simbolito en cuestión se le denomina «at», que dependiendo del contexto se puede traducir como «en» o «a». Por tanto, «fulanito@gmail.com» (por ejemplo), se puede leer como «fulanito en gmail.com». ¿A que ahora tiene más sentido lo de la arroba? Dejo a los filólogos e historiadores, el cómo surgió dicho simbolito, y cómo adquirió distintos significados.

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.

jueves, abril 03, 2008

Espejismos

Esta semana, pusieron un episodio de CSI (repetido, y del que comenté algo en otra ocasión), en el que los protas descubren un BMW en el desierto, y Grissom se permite hacer comentario jocoso sobre si sería un espejismo. Bueno, era una broma, pero eso me recordó muchas otras referencias a espejismos, confundiéndolos con alucinaciones. Así, en el cómic Tintín en el país del oro negro, los ineptos Hernández y Fernández se pierden en el desierto, y sufren varios «espejismos» en forma de oasis, palmeras y ciudades. Seguro que vosotros podréis aportar más referencias a historias en los que los protagonistas dicen ver un espejismo, cuando en realidad se trata de una alucinación.

Fotografía de un espejismo en una carretera

Y es que un espejismo no es ver una ciudad o un bosque inexistente. Se trata de un fenómeno óptico muy concreto, producido por la refracción de la luz, y que hace que veamos objetos reflejados en el suelo como si fuera un espejo (y de ahí, el nombre «espejismo»), proporcionando la ilusión de la existencia de agua en el terreno. Como he dicho, se trata de un fenómeno óptico, y por tanto, puede ser captado por las cámaras. No tiene nada que ver con que la excesiva insolación y deshidratación altere nuestra percepción de las cosas.

Para poder observar un espejismo, no es necesario estar en el desierto. Basta cualquier terreno más o menos llano y que retenga el calor, y un día caluroso. En estas condiciones, la temperatura del suelo es bastante superior a la del ambiente. El aire que está en contacto con el suelo, se toma calor de éste y eleva su temperatura. Este aire calienta a su vez al que tiene encima, y así sucesivamente, formándose una serie de capas de aire de distinta temperatura, siendo la más caliente la más cercana al suelo. El aire caliente es menos denso que el frío, y aunque esto hace que el aire caliente se eleve y el frío descienda, la constante cesión de calor del suelo al aire hace que el gradiente térmico se mantenga.

Dibujo que muestra cómo se dobla un rayo de luz procedente del cielo, al atravesar capas de aire de distinta temperatura, de forma que llega a un hombre desde el suelo

Así que tenemos varias capas de aire sobre el suelo, de distinta densidad. Resulta que el índice de refracción de la luz depende de la densidad del medio, por lo que a medida que la luz atraviesa las distintas capas de aire, se desvía. Si la luz incide con el ángulo adecuado, las sucesivas refracciones debidas a las distintas capas de aire, hace que el efecto global sea una reflexión. Y eso es lo que nosotros vemos: un reflejo. Además, debido a que el aire está en movimiento (el aire caliente sube y el frío baja), la densidad del aire oscila localmente, provocando que la imagen reflejada no sea perfecta, sino que parezca temblar y deformarse, como si se reflejara en una superficie líquida. Por eso parece que vemos agua.

Como he comentado antes, no hace falta irse al desierto para ver un espejismo. Cualquiera que haya viajado por carretera un día caluroso, habrá visto varios. El asfalto se calienta mucho con el sol, y es fácil ver espejismos, incluso en días de temperatura moderada. Parecen un gran charco en la carretera, que desaparece cuando nos acercamos.