Conjunto de protocolos de internet |
---|
Capa de aplicación |
Capa de transporte |
Capa de internet |
Capa de enlace |
|
El Gopher protocolo / ɡ oʊ f ər / es un protocolo de comunicación diseñado para la distribución, la búsqueda y recuperación de documentos en Internet Protocol redes. El diseño del protocolo Gopher y la interfaz de usuario se basa en menús y presentó una alternativa a la World Wide Web en sus primeras etapas , pero finalmente cayó en desgracia, cediendo a HTTP . El ecosistema Gopher se considera a menudo como el predecesor eficaz de la World Wide Web. [1] [2]
El protocolo fue inventado por un equipo dirigido por Mark P. McCahill [3] en la Universidad de Minnesota . Ofrece algunas funciones que la Web no admite de forma nativa e impone una jerarquía mucho más fuerte en los documentos que almacena. Su interfaz de menú de texto es adecuada para entornos informáticos que dependen en gran medida de terminales informáticos remotos orientados a texto , que todavía eran comunes en el momento de su creación en 1991, y la simplicidad de su protocolo facilitó una amplia variedad de implementaciones de clientes. Más reciente [ ¿cuándo? ] Las revisiones de Gopher y los clientes gráficos agregaron soporte para multimedia. [ cita requerida ]
La estructura jerárquica de Gopher proporcionó una plataforma para las primeras conexiones de bibliotecas electrónicas a gran escala. [4] El protocolo Gopher todavía está en uso por los entusiastas, y aunque ha sido reemplazado casi por completo por la Web, queda una pequeña población de servidores mantenidos activamente. [2]
El sistema Gopher fue lanzado a mediados de 1991 por Mark P. McCahill, Farhad Anklesaria, Paul Lindner, Daniel Torrey y Bob Alberti de la Universidad de Minnesota en los Estados Unidos. [5] Sus objetivos centrales fueron, como se indica en RFC 1436 :
Gopher combina jerarquías de documentos con colecciones de servicios, incluidos WAIS , los motores de búsqueda Archie y Veronica , y puertas de enlace a otros sistemas de información como File Transfer Protocol (FTP) y Usenet .
El interés general en los sistemas de información de todo el campus (CWIS) en la educación superior en ese momento, [6] y la facilidad de configuración de los servidores Gopher para crear un CWIS instantáneo con enlaces a los directorios y recursos en línea de otros sitios fueron los factores que contribuyeron a Adopción rápida de Gopher.
El nombre fue acuñado por Anklesaria como un juego de varios significados de la palabra "gopher". [7] La mascota de la Universidad de Minnesota es la ardilla, [8] un ardilla es un asistente que "busca" cosas, y una ardilla excava en el suelo para llegar a la ubicación deseada. [9]
La World Wide Web estaba en su infancia en 1991 y los servicios Gopher se establecieron rápidamente. A finales de la década de 1990, Gopher había dejado de expandirse. Varios factores contribuyeron al estancamiento de Gopher:
Gopher permanece en uso activo por parte de sus entusiastas, y ha habido intentos de revivir Gopher en plataformas y dispositivos móviles modernos. Un intento es The Overbite Project, [15] que aloja varias extensiones de navegador y clientes modernos.
La conceptualización del conocimiento en "espacio Gopher" o una "nube" como información específica en un archivo en particular, y la prominencia del FTP, influyeron en la tecnología y la funcionalidad resultante de Gopher.
Gopher está diseñado para funcionar y parecerse a un sistema de archivos de red global de solo lectura montable (y hay disponible software, como gopherfs , que realmente puede montar un servidor Gopher como un recurso FUSE ). Como mínimo, todo lo que se pueda hacer con archivos de datos en un CD-ROM , se puede hacer en Gopher.
Un sistema Gopher consta de una serie de menús hipervinculables jerárquicos. La elección de los elementos del menú y los títulos la controla el administrador del servidor.
Similar a un archivo en un servidor web, un archivo en un servidor Gopher se puede vincular como un elemento de menú desde cualquier otro servidor Gopher. Muchos servidores aprovechan esta vinculación entre servidores para proporcionar un directorio de otros servidores a los que el usuario puede acceder.
El protocolo Gopher se describió por primera vez en RFC 1436 . IANA ha asignado el puerto TCP 70 al protocolo Gopher.
El protocolo es simple de negociar, lo que permite navegar sin usar un cliente. Por lo tanto, una sesión estándar de gopher puede aparecer de la siguiente manera:
/Referencia 1CIA World Factbook /Archives/mirrors/textfiles.com/politics/CIA gopher.quux.org 70 0 Jargon 4.2.0 / Referencia / Jerga 4.2.0 gopher.quux.org 70 + 1Bibliotecas en línea / Referencia / Bibliotecas en línea gopher.quux.org 70 + 1RFC: Estándares de Internet / Computadoras / Estándares y especificaciones / RFC gopher.quux.org 70 1 EE. UU. Diccionario geográfico / Referencia / Diccionario geográfico de EE. UU. Gopher.quux.org 70 + Este archivo contiene información sobre la falsificación de Estados Unidos (NULL) 0 icidades, condados y áreas geográficas. Tiene falso (NULO) 0 latitud / longitud, población, superficie terrestre y acuática, falso (NULO) 0 iy códigos postales. falso (NULO) 0 falso (NULO) 0 iPara buscar una ciudad, ingrese el nombre de la ciudad. Para buscar falso (NULO) 0 si o un condado, use el nombre más el condado, por ejemplo, falso (NULO) 0 Condado de iDallas. falso (NULO) 0
Aquí, el cliente ha establecido una conexión TCP con el servidor en el puerto 70, el puerto estándar de Gopher. A continuación, el cliente envía una cadena seguida de un retorno de carro seguido de un avance de línea (una secuencia "CR + LF"). Este es el selector, que identifica el documento a recuperar. Si el selector de elementos fuera una línea vacía, se seleccionaría el directorio predeterminado. A continuación, el servidor responde con el elemento solicitado y cierra la conexión. Según el protocolo, antes de que se cierre la conexión, el servidor debe enviar un punto final (es decir, un carácter de punto) en una línea por sí mismo. Sin embargo, como es el caso aquí, no todos los servidores se ajustan a esta parte del protocolo y el servidor puede cerrar la conexión sin devolver el punto final.
En este ejemplo, el elemento devuelto es un menú de gopher, un directorio que consta de una secuencia de líneas, cada una de las cuales describe un elemento que se puede recuperar. La mayoría de los clientes los mostrarán como enlaces de hipertexto y, por lo tanto, permitirán al usuario navegar a través del gopherspace siguiendo los enlaces. [5]
Todas las líneas de un menú de gopher terminan con "CR + LF" y constan de cinco campos: el tipo de elemento como el primer carácter (ver más abajo), la cadena de visualización (es decir, el texto de descripción que se mostrará), un selector ( es decir, un nombre de ruta del sistema de archivos), nombre de host (es decir, el nombre de dominio del servidor en el que reside el elemento) y puerto (es decir, el número de puerto utilizado por ese servidor). El tipo de elemento y la cadena de visualización se unen sin espacio; los otros campos están separados por el carácter de tabulación.
Debido a la simplicidad del protocolo Gopher, herramientas como netcat permiten descargar contenido de Gopher fácilmente desde la línea de comandos:
echo jacks / jack.exe | nc gopher.example.org 70> jack.exe
El protocolo también es compatible con cURL a partir de 7.21.2-DEV. [21]
La cadena de selección en la solicitud puede ir seguida opcionalmente por un carácter de tabulación y una cadena de búsqueda. Este es utilizado por el tipo de artículo 7.
Los elementos del menú de Gopher se definen mediante líneas de valores separados por tabulaciones en un archivo de texto . Este archivo a veces se denomina mapa de gopher . Como código fuente de un menú de gopher, un mapa de gopher es aproximadamente análogo a un archivo HTML para una página web . Cada línea separada por tabulaciones (llamada línea de selección ) le da al software cliente una descripción del elemento del menú: qué es, cómo se llama y adónde conduce. El cliente muestra los elementos del menú en el orden en que aparecen en el mapa de gopher.
El primer carácter en una línea de selección indica el tipo de elemento , que le dice al cliente a qué tipo de archivo o protocolo apunta el elemento del menú. Esto ayuda al cliente a decidir qué hacer con él. Los tipos de elementos de Gopher son un precursor más básico del sistema de tipos de medios utilizado por la Web y los archivos adjuntos de correo electrónico .
El tipo de elemento va seguido de la cadena de visualización del usuario (una descripción o etiqueta que representa el elemento en el menú); el selector (una ruta u otra cadena para el recurso en el servidor); el nombre de host (el nombre de dominio o la dirección IP del servidor) y el puerto de red .
Por ejemplo: La siguiente línea de selección genera un enlace al directorio "/ home" en el subdominio gopher.floodgap.com, en el puerto 70. El tipo de elemento 1 indica que el recurso es un menú Gopher. La cadena "Floodgap Home" es lo que ve el usuario en el menú.
1Floodgap Inicio / inicio gopher.floodgap.com 70
Tipo de artículo | Cadena de visualización de usuario | Selector | Nombre de host | Puerto |
---|---|---|---|---|
1 | Casa Floodgap | /hogar | gopher.floodgap.com | 70 |
En el código fuente de un menú de Gopher, un código de un carácter indica qué tipo de contenido debe esperar el cliente. Este código puede ser un dígito o una letra del alfabeto; las letras distinguen entre mayúsculas y minúsculas .
La especificación técnica de Gopher, RFC 1436 , define 14 tipos de elementos. La posterior especificación gopher + definió 3 tipos adicionales. [22] Un código de un carácter indica qué tipo de contenido debe esperar el cliente. El tipo de elemento es un código de error para el manejo de excepciones . Los autores del cliente Gopher improvisaron tipos de elementos (HTML), (mensaje informativo) y ( archivo de sonido ) después de la publicación de RFC 1436. Los navegadores como Netscape Navigator y las primeras versiones de Microsoft Internet Explorer anteponían el código del tipo de elemento al selector como se describe en RFC 4266 3
h
i
s
, de modo que el tipo de elemento Gopher pueda ser determinado por la propia URL. La mayoría de los navegadores gopher todavía disponibles, utilizan estos prefijos en sus URL.
Tipos canónicos | |
---|---|
0 | Archivo de texto |
1 | Submenú Gopher |
2 | Servidor de nombres CCSO |
3 | Código de error devuelto por un servidor Gopher para indicar una falla |
4 | Archivo codificado con BinHex (principalmente para computadoras Macintosh ) |
5 | Archivo DOS |
6 | archivo uuencoded |
7 | Búsqueda de texto completo de Gopher |
8 | Telnet |
9 | Archivo binario |
+ | Servidor espejo o alternativo (para equilibrio de carga o en caso de tiempo de inactividad del servidor primario ) |
gramo | Archivo GIF |
I | Archivo de imagen |
T | Telnet 3270 |
tipos + de + gopher | |
: | Imagen de mapa de bits |
; | Archivo de película |
< | Archivo de sonido |
Tipos no canónicos | |
D | Doc. Visto junto con PDF y .DOC |
h | Archivo HTML |
I | Mensaje informativo, ampliamente utilizado. [23] |
s | Archivo de sonido (especialmente el formato WAV ) |
Históricamente, para crear un enlace a un servidor web, "GET /" se usaba como un pseudo-selector para emular una solicitud HTTP GET . [24] John Goerzen creó una adición [25] al protocolo Gopher, comúnmente conocido como " enlaces URL ", que permite enlaces a cualquier protocolo que admita URL. Por ejemplo, para crear un enlace a http://gopher.quux.org/ , el tipo de elemento es h
, la cadena de visualización es el título del enlace, el selector de elementos es "URL: http: //gopher.quux.org / ", y el dominio y el puerto son los del servidor Gopher de origen (de modo que los clientes que no admitan enlaces URL consultarán el servidor y recibirán una página de redirección HTML).
Gopher + es una mejora compatible con versiones posteriores del protocolo Gopher. Gopher + funciona enviando metadatos entre el cliente y el servidor. La mejora nunca fue ampliamente adoptada por los servidores Gopher. [26] [27] [28]
El cliente envía una pestaña seguida de un +. Un servidor Gopher + responderá con una línea de estado seguida del contenido solicitado por el cliente. Un elemento está marcado como compatible con Gopher + en la lista del directorio de Gopher mediante una pestaña + después del puerto.
Otras características de Gopher + incluyen:
El motor de búsqueda principal de Gopherspace es Veronica . Veronica ofrece una búsqueda por palabra clave de todos los títulos de menú del servidor Gopher de Internet público. Una búsqueda de Veronica produce un menú de elementos de Gopher, cada uno de los cuales es un puntero directo a una fuente de datos de Gopher. Los servidores Gopher individuales también pueden utilizar motores de búsqueda localizados específicos para su contenido, como Jughead y Jugtail .
Jugtail (anteriormente Jughead) es un sistema de motor de búsqueda para el protocolo Gopher. Se diferencia de Veronica en que busca en un solo servidor a la vez. [29]
GopherVR es una variante de realidad virtual 3D del sistema Gopher original.
Esta sección necesita expansión . Puede ayudar añadiéndole . ( Julio de 2021 ) |
Estos son clientes, bibliotecas y utilidades diseñadas principalmente para acceder a los recursos de Gopher.
Cliente | Desarrollado por | Ultima versión | Fecha de lanzamiento | Licencia | Escrito en | Notas |
---|---|---|---|---|---|---|
ÁCIDO | SSS8555 | 0,777 | Abril de 2021 | ? | C | Cliente GUI para Windows. Admite caché de página, TFTP y tiene extensión G6. |
Gophie | 1.0 | Abril de 2020 | GPLv3 | Java | Cliente GUI para Windows, MacOS y Linux. | |
Kristall | MasterQ32 | 0,3 | Junio de 2020 | GPLv3 | C ++ | Cliente GUI Gemini con soporte opcional (deshabilitado por defecto) para Gopher, Finger y www. |
Lagrange | skyjake | 1.7.1 | Octubre de 2021 | BSD de 2 cláusulas | C | Cliente GUI Gemini con Gopher y soporte para dedos. |
Navegador Gopher | Jaruzel | 1.2 | Agosto de 2019 | Fuente cerrada | VB.NET | Cliente GUI de Gopher solo para Windows. |
Los clientes web son navegadores, bibliotecas y utilidades diseñadas principalmente para acceder a los recursos de la red mundial, pero que mantienen la compatibilidad con gopher.
Navegador | Versión | Notas | |
---|---|---|---|
Primero apoyado | Último soportado | ||
Navegar | ? | Regalo | Este navegador es para RISC OS |
rizo | 7.21.2 (octubre de 2010) | Regalo | cURL es una utilidad de transferencia de archivos de línea de comandos |
Edbrowse | 3.7.3 | Regalo | Edbrowse es un editor y navegador orientado a líneas con una interfaz como la de ed (editor de texto) |
Dooble | 1,53 | Regalo | |
felinks | ? | Presente [30] | Ofrece soporte como opción de construcción. |
Falkon | 3.1.0, solo con complemento | Presente, solo con complemento | Requiere Falkon ≥ 3.1.0 con la extensión de integración de KDE Frameworks (enviada con Falkon ≥ 3.1.0) habilitada y el complemento kio_gopher (separado) [31] ≥ 0.1.99 (primera versión para KDE Frameworks 5) instalado |
Google Chrome | Solo con extensión [32] | N / A | Con extensión Madriguera [33] |
Konqueror | Solo con complemento | ? | Requiere el complemento kio_gopher [31] |
Lince | ? | Regalo | |
Mozilla Firefox | 0,1 | 3.6 | El soporte integrado cayó desde Firefox 4.0 en adelante; [34] se puede volver a agregar instalando una de las extensiones del Proyecto Overbite [15] |
NetSurf | N / A | N / A | En desarrollo, basado en el buscador de cURL |
Ópera | N / A | N / A | Opera 9.0 incluye una capacidad de proxy |
Pavuk | ? | Regalo | Pavuk es un programa de software web mirror (descarga recursiva) |
WebPositive | ? | Regalo | Navegador basado en WebKit utilizado en el sistema operativo Haiku |
Navegador | Versión | Notas | |
---|---|---|---|
Primero apoyado | Último soportado | ||
Camino | 1.0 | 2.1.2 | Siempre usa el puerto 70. |
Classilla | 9.0 | 9.3.4b 1 de marzo de 2021 | Codificado al puerto 70 de 9.0 a 9.2; puertos incluidos en la lista blanca de 9.2.1 |
ELinks | 0.10.0 [35] | 0.12pre6 de octubre de 2012 | Navegador sin mantenimiento con opción de compilación de gopher. |
Epifanía | ? | 2.26.3 | Deshabilitado después de cambiar a WebKit |
Galeón | ? | 2.0.7 | |
explorador de Internet | N / A | 6 | El soporte eliminado por MS02-047 de IE 6 SP1 se puede volver a habilitar en el Registro de Windows . [36] Siempre usa el puerto 70. |
Internet Explorer para Mac | ? | 5.2.3 | Solo PowerPC |
K-Meleon | ? | Abandonó | |
libwww | 1.0c (diciembre de 1992) | 5.4.1 Diciembre de 2006 | libwww es una API descontinuada para aplicaciones de Internet. Se mantiene una bifurcación moderna en Lynx |
Navegador de modo de línea | Regalo | ||
Mosaico | ? | Presente (3,0) | |
Netscape Navigator | ? | 9.0.0.6 | |
OmniWeb | 5.9.2 | Regalo | Primer navegador WebKit compatible con Gopher [37] [38] |
SeaMonkey | 1.0 | 2.0.14 | El soporte integrado cayó de SeaMonkey 2.1 en adelante; podría volver a agregarse a algunas versiones con el proyecto Overbite, [15] pero ya no es compatible. |
Los navegadores que no son compatibles con Gopher de forma nativa aún pueden acceder a los servidores mediante una de las puertas de enlace de Gopher a HTTP disponibles .
La compatibilidad con Gopher se desactivó en las versiones 5.xy 6 de Internet Explorer para Windows en agosto de 2002 mediante un parche destinado a corregir una vulnerabilidad de seguridad en el controlador del protocolo Gopher del navegador para reducir la superficie de ataque que se incluía en IE6 SP1; sin embargo, se puede volver a habilitar editando el registro de Windows . En Internet Explorer 7 , se eliminó la compatibilidad con Gopher en el nivel WinINET . [39]
Para Mozilla Firefox y SeaMonkey , las extensiones Overbite [15] amplían la navegación de Gopher y son compatibles con las versiones actuales de los navegadores (Firefox Quantum v ≥57 y versiones equivalentes de SeaMonkey):
gopher://
URL a un proxy;OverbiteWX incluye soporte para acceder a servidores Gopher que no están en el puerto 70 usando una lista blanca y para consultas CSO / ph . OverbiteFF siempre usa el puerto 70.
Para Chromium y Google Chrome , Burrow [33] está disponible. Redirige las gopher://
URL a un proxy. En el pasado, una extensión basada en proxy Overbite para estos navegadores estaba disponible, pero ya no se mantiene y no funciona con las versiones actuales (> 23). [15]
Para Konqueror , Kio gopher [40] está disponible.
Los usuarios de navegadores web que no tienen soporte para Gopher o no tienen soporte completo para Gopher pueden acceder al contenido de los servidores Gopher a través de una puerta de enlace del servidor o un servidor proxy que convierte los menús de Gopher en HTML ; Los proxies conocidos son el proxy Gopher público de Floodgap y el proxy Gopher. De manera similar, ciertos paquetes de servidor como GN y PyGopherd tienen interfaces Gopher a HTTP integradas. El software Squid Proxy pasa cualquier gopher://
URL al contenido HTTP, lo que permite que cualquier navegador o agente web acceda fácilmente al contenido de Gopher.
Algunos [ ¿quién? ] han sugerido que la interfaz simple de Gopher que ahorra ancho de banda sería una buena combinación para teléfonos móviles y asistentes digitales personales (PDA), [41] pero hasta ahora, las adaptaciones móviles de HTML y XML y otros contenidos simplificados han demostrado ser más populares. El servidor PyGopherd proporciona un front-end WML integrado para los sitios Gopher que se sirven con él.
A principios de la década de 2010 se produjo un renovado interés en los clientes nativos de Gopher para teléfonos inteligentes populares : Overbite, un cliente de código abierto para Android 1.5+ se lanzó en fase alfa en 2010. [42] PocketGopher también se lanzó en 2010, junto con su código fuente , para varios dispositivos compatibles con Java ME . Gopher Client se lanzó en 2016 como un cliente propietario para dispositivos iPhone y iPad y actualmente se mantiene. [43]
La popularidad de Gopher estaba en su apogeo en un momento en que todavía había muchas arquitecturas de computadora y sistemas operativos que competían por igual. Como resultado, hay varios clientes Gopher disponibles para Acorn RISC OS , AmigaOS , Atari MiNT , CMS , DOS , Mac OS clásico , MVS , NeXT , OS / 2 Warp , la mayoría de los sistemas operativos similares a UNIX , VMS , Windows 3.x y Windows 9x . GopherVR era un cliente diseñado para visualización 3D, e incluso hay un cliente Gopher en MOO .[44] [45] La mayoría de estos clientes están codificados para trabajar en el puerto TCP 70. [ cita requerida ]
Debido a que el protocolo es trivial de implementar de manera básica, todavía hay muchos paquetes de servidor disponibles y algunos aún se mantienen.
Servidor | Desarrollado por | Ultima versión | Fecha de lanzamiento | Licencia | Escrito en | Notas |
---|---|---|---|---|---|---|
Réplica | Rob Linwood | 1.0.1 | 22 de abril de 2004 | MIT | Java | |
Apache :: GopherHandler | Timm Murray | 0,1 | 26 de marzo de 2004 | GPLv2 o cualquier versión posterior | Perl | Complemento de Apache 2 para ejecutar Gopher-Server . |
Atua | Charles Childers | 2017.4 | 9 de octubre de 2017 | ISC | Adelante | |
Bucktooth (enlace de gopher) ( enlace de proxy ) | Cameron Kaiser | 0.2.9 | 1 de mayo de 2011 | Licencia de software libre Floodgap | Perl | |
Matraz-Gopher | Michael Lazar | 2.2.1 | 11 de abril de 2020 | GPLv3 | Pitón | |
geomido | Quinn Evans | 0.0.1 | 10 de agosto de 2015 | BSD de 2 cláusulas | Lisp común | |
geomyidae (enlace gopher) ( enlace proxy ) | Christoph Lohmann | 0,34 | 13 de marzo de 2019 | MIT | C | |
Ve pez | Sean MacLennan | 1.2 | 8 de octubre de 2010 | GPLv2 | C | |
Gopher-Server | Timm Murray | 0.1.1 | 26 de marzo de 2004 | GPLv2 | Perl | |
Gophernicus | Kim Holviala y otros | 3.1.1 | 3 de enero de 2021 | BSD de 2 cláusulas | C | |
gophrier | Guillaume Duhamel | 0.2.3 | 29 de marzo de 2012 | GPLv2 | C | |
Goscher | Aaron W. Hsu | 8.0 | 20 de junio de 2011 | ISC | Esquema | |
mgod | Mate Nagy | 1.1 | 29 de enero de 2018 | GPLv3 | C | |
Motsognir | Mateusz Viste | 1.0.13 | 8 de enero de 2021 | MIT | C | |
Pituofis | dotcomboom | 1.1 | 16 de mayo de 2020 | BSD de 2 cláusulas | Pitón | Biblioteca Gopher basada en Python con soporte tanto para servidor como para cliente |
PyGopherd | John Goerzen | 2.0.18.5 | 14 de febrero de 2017 | GPLv2 | Pitón | También es compatible con HTTP, WAP y Gopher + |
Redis | Salvatore Sanfilippo | 6.2.5 | 21 de julio de 2021 | BSD de 3 cláusulas | C | |
save_gopher_server | SSS8555 | 0,777 | 7 de julio de 2020 | ? | Perl | con extensión G6 y TFTP |
Spacecookie | Lukas Epple | 1.0.0.0 | 17 de marzo de 2021 | GPLv3 | Haskell | |
Xylophar | Nathaniel Leveck | 0.0.1 | 15 de enero de 2020 | GPLv3 | FreeBASIC |
OmniWeb 5.9.2 lanzado el 1 de abril de 2009: se implementó un soporte innovador para el revolucionario protocolo Gopher, ¡una novedad para los navegadores basados en WebKit!
Para obtener una lista de servidores Gopher, consulte la lista Floodgap.
¡Disfrutar!. El mismo texto aparece en la versión 5.10 del 27 de agosto de 2009 más abajo en la página, copiado de la rama inestable 5.9.2. La lista Floodgap a la que se hace referencia está en Floodgap: nuevos servidores Gopher y no se refiere en sí misma al Día de los Inocentes.
|journal=
( ayuda )