Gopher

Figura: Gopher

En pocas palabras, Gopher es un sistema distribuido de recuperación y búsqueda de documentos. Combina las mejores características de los buscadores a través de colecciones de información y bases de datos completamente indizadas. El protocolo y el software siguen un modelo cliente/servidor y permite a usuarios de distintos sistemas navegar, buscar y recuperar documentos que residen en múltiples servidores distribuidos.

El protocolo Gopher se desarrolló en la Universidad de Minesota y está disponible en el RFC 1436. Su estado es informativo.

La razón de desarrollar Gopher era la necesidad de una sistema de información de amplio alcance que permitiera a cualquiera poder publicar documentos o información incluso con un ordenador de sobremesa pequeño. El software del cliente Gopher presenta a los usuarios una jerarquía de artículos y directorios como un sistema de ficheros. De hecho, la interfaz del Gopher se diseñó para parecerse a un sistema de ficheros ya que un sistema de ficheros es un buen modelo para localizar documentos y servicios. Así que si se conecta a un servidor Gopher obtendrá una lista de artículos diferentes, similar al directorio raíz de un PC. Después de seleccionar un artículo del menú se obtendrán todos los artículos incluidos, similar a un subdirectorio. Si se selecciona un artículo del fichero, éste se transmite automáticamente y se muestra al cliente. No es necesario que el fichero resida en el mismo servidor Gopher de donde se obtuvo la información. Un menú de Gopher puede incluir los artículos de servidores Gopher diferentes y el usuario se conecta automáticamente al servidor donde obtuvo los puntos del artículo seleccionado y así sucesivamente. El usuario no sabe o no le importa que los artículos que selecció puedan residir en cualquier máquinas de Internet.

Un ejemplo simple:

Te gustaría tener una imagen del menú de tu restaurante.

  1. Arrancas tu cliente Gopher y conectas con el servidor Gopher principal
  2. Encuentras un artículo que podría incluir el menú y lo seleccionas. Por ejemplo: Facilidades
  3. Se muestran los sub-artículos de Facilidades
  4. Uno de los artículos puede ser "Menú de Hoy" que es un fichero que reside en el servidor Gopher de restaurantes
  5. Si lo seleccionas, tu cliente Gopher establece automáticamente una conexión al servidor apuntado en el artículo, lo recupera y lo muestra
La trayectoria hacia el fichero podría ser muy compleja y se podrían involucrar los servidores Gopher de todo el mundo.

Para implementar la jerarquía antes mencionada, el cliente Gopher necesita alguna información del tipo de objeto para mostrar un icono de fichero o de directorio, por ejemplo. El tipo Gopher se codifica con un único dígito al principio de cada línea. Se muestra una lista de tipos conocidos Gopher incluidos en el RFC:

ValorTipo
0El artículo es un fichero
1El artículo es un directorio
2El artículo es un servidor CSO (qi) phone-book
3Error
4El artículo es un fichero BinHexed Macintosh
5El artículo es un fichero DOS binario archive of some sort
6El artículo es un fichero UNIX uuencoded
7El artículo es un servidor Index-Search
8El artículo apunta a una sesión telnet basada en texto
9El artículo es un fichero binario
TTN3270 connection
sTipo sonido. El flujo de datos es un sonido mulaw
gTipo GIF
MEl artículo contiene datos MIME
hTipo HTML
ITipo Imagen
iTipo texto "inline"

Los párrafos siguientes describen la funcionalidad básica del protocolo Gopher.

En esencia, el protocolo Gopher consiste en un cliente conectado a un servidor que envía un selector (una línea de texto, que puede estar vacía) vía conexión TCP. El servidor responde con un bloque de texto que termina en un punto y cierra la conexión. El servidor no retiene estado alguno entre transacciones con un cliente. Asumimos que un servidor Gopher escucha por el puerto 70. La única información de configuración que el software del cliente retiene es el número de puerto y el nombre del servidor (en este ejemplo esta máquina es rawBits.micro.umn.edu y el puerto 70). En el ejemplo anterior el carácter F denota el carácter tabulador.

Cliente: {Abre la conexión a rawBits.micro.umn.edu por el puerto 70}
Servidor: {Acepta la conexión pero no dice nada}

Cliente: <CR><LF> {Envía una línea vacía: significa "lista que tienes"}
Servidor: {Envía una serie de líneas que terminan en CR LF}
0Sobre Gopher en Internet FStuff:About usFrawBits.micro.umn.eduF70
1Una vuelta por la Universidad de MinnesotaFZ,5692,AUMFunderdog.micro.umn.eduF70
1Precios y Noticias de MicrocomputadoresFPrices/Fpserver.bookstore.umn.eduF70
1Cursos, Agenda, CalendariosFFevents.ais.umn.eduF9120
1Directorios de Estudiantes-ProfesoresFFuinfo.ais.umn.eduF70
1Publicaciones de DepartamentosFStuff:DP:FrawBits.micro.umn.eduF70
                   {.....etc.....}
.                  {Un punto sobre la propia línea}
                   {El servidor cierra la conexión}

El primer carácter de cada línea describe el tipo Gopher como se muestra abajo. Los caracteres siguientes hasta el tabulador constituyen la ristra que se va a mostrar al usuario para que haga una selección. Los caracteres siguientes al tabulador, hasta el siguiente tabulador forman una ristra selectora que el software del cliente debe enviar al servidor para recuperar el documento (o lista de directorio). En la práctica, la ristra selectora es a menudo un nombre de trayectoria u otro fichero selector que utiliza el servidor para localizar el artículo deseado. Los dos siguientes campos separados por tabuladores denotan el nombre de dominio del host que tiene este documento (o directorio), y el puerto al que conectarse. Un CR/LF denota la terminación de un artículo. El cliente puede presentar el flujo de datos de arriba como sigue:

Sobre Gopher en Internet 
Una vuelta por la Universidad de Minnesota...
Precios y Noticias de Microcomputadores ...
Cursos, Agendas, Calendarios ...
Directorios de Estudiantes-Profesores ...
Publicaciones de Departamentos ...

En este caso, los directorios se muestran con una elipsis y los ficheros se muestran sin ella.

En el ejemplo, la línea 1 describe un documento que el usuario verá como "Acerca de Gopher de Internet". Para recuperar este documento, el software del cliente debe enviar la ristra recuperada: "Stuff:About us" to rawBits.micro.umn.edu en el puerto 70. Si el cliente hace esto, el servidor responderá con los contenidos del documento, acabado por un punto en una línea. Como se puede apreciar en este ejemplo el usuario no sabe o no es consciente de que los artículos a seleccionar pueden residir en muchas máquinas diferentes en cualquier parte de Internet. La conexión entre servidor y cliente sólo existe mientras se transfiere la información. Después de esto el cliente puede conectarse a diferentes servidores para obtener los contenidos de un directorio mostrado.

Para mayor información acerca del protocolo Gopher referirse al RFC 1436.

Implementaciones. Veronica

Algún día se podría necesitar recuperar información o un fichero de un servidor Gopher. El problema es cómo obtener los servidores correctos que proporcionan la información necesaria sin llamar a los menús Gopher interminables. Afortunadamente, hay una forma de hacer el uso de Gopher más fácil.

Esta herramienta se llama Veronica (Very Easy Rodent-Oriented Net-wide Index to Computerized Archives) y hace para Gopherspace lo que Archie hace para los sitios FTP.

Veronica es un sistema que descubre recursos que proporciona acceso a los recursos de información que se mantienen en la mayoría (99%+) de los servidores Gopher del mundo. Además de los datos Gopher nativos, Veronica incluye referencias a muchos recursos proporcionados por otros tipos de servidores de información, tales como servidores WWW, archivos usenet y servicios de información accesible por telnet.

Las peticiones de Veronica son búsquedas de palabras clave en títulos. Una consulta simple puede ser bastante potente porque incluye un gran número de servidores de información en el índice.

A Veronica se accede a través de software del cliente Gopher. Un usuario de Veronica pide una consulta (vía cliente Gopher) que puede contener expresiones de palabras clave booleana así como directivas Veronica especiales. El resultado de una búsqueda Veronica es un menú Gopher comprende artículos de información cuyos títulos contienen las palabras clave especificadas. Se puede navegar por el menú de resultados como si se tratara de cualquier otro menú Gopher.

En enero de 1995, se indizaron 5057 servidores Gopher. El índice también incluye artículo de otros 5000 servidores aproximádamente, en casos donde estos servidores se referencien en menús Gopher. Estos otros servidores incluyen 3905 servidores WWW y más o menos 1000 servicios de tipo TELNET.

En la mayoría de los servidores Gopher se puede encontrar Veronica seleccionando Otros Gopher y Servicios de Información en el menú principal y luego Buscar en el Gopherspace usando Veronica.

Acceso a Internet |  Tabla de Contenidos |  WWW