Conjunto de protocolos de Internet |
---|
Capa de aplicación |
Capa de transporte |
Capa de Internet |
Capa de enlace |
Cronología de la historia de Internet |
Investigación y desarrollo tempranos:
Fusionando las redes y creando Internet:
La comercialización, la privatización y el acceso más amplio conducen a la Internet moderna:
Ejemplos de servicios de Internet:
|
El protocolo Gopher ( / ˈ ɡ oʊ f ər / ) es unprotocolo de comunicacióndiseñado para distribuir, buscar y recuperar documentos ende protocolo de Internet. El diseño del protocolo Gopher y la interfaz de usuario están basados en menús y presentaron una alternativa a laWorld Wide Webensus primeras etapas, pero finalmente cayeron en desgracia y dieron paso al Protocolo de transferencia de hipertexto (HTTP). El ecosistema Gopher se considera a menudo como el predecesor efectivo de la World Wide Web.[1][2]
El protocolo Gopher fue inventado por un equipo dirigido por Mark P. McCahill [3] en la Universidad de Minnesota . Ofrece algunas características que no son compatibles de forma nativa con la Web e impone una jerarquía mucho más estricta en los documentos que almacena. Su interfaz de menú de texto es adecuada para entornos informáticos que dependen en gran medida de terminales de computadora remotas orientadas 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. Las revisiones más recientes 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 es utilizado por entusiastas y, aunque ha sido reemplazado casi por completo por la Web, aún queda una pequeña población de servidores que se mantienen 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 eran, como se indica en el 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 el Protocolo de transferencia de archivos (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 la rápida adopción de Gopher.
Anklesaria acuñó el nombre como un juego de palabras con varios significados de la palabra "gopher". [7] La mascota de la Universidad de Minnesota es el gopher , [8] un gofer es un asistente que "va por" cosas, y un gopher excava en el suelo para llegar a un lugar deseado. [9]
En 1991, la World Wide Web estaba en pañales y los servicios de Gopher se consolidaron rápidamente. [10] A finales de los años 1990, Gopher había dejado de expandirse. Varios factores contribuyeron a su estancamiento:
Gopher sigue siendo utilizado activamente por sus entusiastas y ha habido intentos de revivirlo en plataformas modernas y dispositivos móviles. Uno de ellos es The Overbite Project, [17] que alberga varias extensiones de navegador y clientes modernos.
La conceptualización del conocimiento en un “espacio Gopher” o una “nube” como información específica en un archivo 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 mucho a un sistema de archivos de red global de solo lectura montable (y hay software disponible, como gopherfs, que puede montar un servidor Gopher como un recurso FUSE ). Como mínimo, todo lo que se puede hacer con archivos de datos en un CD-ROM se puede hacer en Gopher.
Un sistema Gopher consta de una serie de menús jerárquicos que se pueden enlazar entre sí. La elección de los elementos y títulos del menú está controlada por el administrador del servidor.
De manera similar a un archivo en un servidor web, un archivo en un servidor Gopher puede vincularse 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. La Autoridad de Números Asignados de Internet (IANA) ha asignado el puerto 70 del Protocolo de Control de Transmisión (TCP) al protocolo Gopher. El protocolo es fácil de negociar, lo que permite navegar sin utilizar un cliente.
En primer lugar, el cliente establece 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 salto de línea (una secuencia "CR + LF"). Este es el selector, que identifica el documento que se va a recuperar. Si el selector de elementos fuera una línea vacía, se seleccionaría el directorio predeterminado.
El servidor responde con el elemento solicitado y cierra la conexión. Según el protocolo, antes de cerrar la conexión, el servidor debe enviar un punto (es decir, un carácter de punto) en una línea por sí mismo. Sin embargo, no todos los servidores cumplen con esta parte del protocolo y el servidor puede cerrar una conexión sin devolver un punto final. El principal tipo de respuesta del servidor es un recurso de texto o binario. Alternativamente, el recurso puede ser un menú: una forma de recurso de texto estructurado que proporciona referencias a otros recursos.
Debido a la simplicidad del protocolo Gopher, herramientas como netcat permiten descargar contenido de Gopher fácilmente desde una 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 la versión 7.21.2-DEV. [23]
La cadena de selección en la solicitud puede ir seguida opcionalmente de un carácter de tabulación y una cadena de búsqueda. Esto lo utiliza el tipo de elemento 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 gophermap . Como código fuente de un menú de Gopher, un gophermap es aproximadamente análogo a un archivo HTML para una página web . Cada línea separada por tabulaciones (llamada línea de selector ) proporciona al software cliente una descripción del elemento del menú: qué es, cómo se llama y a dónde conduce. El cliente muestra los elementos del menú en el orden en que aparecen en el gophermap.
El primer carácter de una línea de selección indica el tipo de elemento , que le indica 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 los archivos adjuntos de correo electrónico y la Web .
Al tipo de elemento le sigue 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 .
Todas las líneas de un menú gopher terminan con "CR + LF".
Ejemplo de una línea de selección en una fuente de menú: La siguiente línea de selección genera un vínculo al directorio "/home" en el subdominio gopher.floodgap.com, en el puerto 70. El tipo de elemento 1 indica que el recurso vinculado es un menú de Gopher. La cadena "Floodgap Home" es lo que el cliente mostrará al usuario cuando visite el menú de ejemplo.
1Inicio de Floodgap /inicio gopher.floodgap.com 70
Tipo de artículo | Cadena de visualización del usuario | Selector | Nombre de host | Puerto |
---|---|---|---|---|
1 | Casa en 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 especificación posterior gopher+ definió 3 tipos adicionales. [24] 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 de tipo de elemento al selector como se describe en RFC 4266, de modo que el tipo de elemento de Gopher pudiera determinarse por la propia URL. La mayoría de los navegadores Gopher aún disponibles utilizan estos prefijos en sus URL.3
h
i
s
Tipos canónicos | |
---|---|
0 | Archivo de texto |
1 | Submenú de Gopher |
2 | Servidor de nombres CCSO |
3 | Código de error devuelto por un servidor Gopher para indicar una falla |
4 | Archivo codificado en BinHex (principalmente para computadoras Macintosh ) |
5 | Archivo DOS |
6 | archivo uuencoded |
7 | Búsqueda de texto completo en Gopher |
8 | Telnet |
9 | Archivo binario |
+ | Servidor espejo o alternativo (para equilibrar la carga o en caso de inactividad del servidor principal ) |
gramo | Archivo GIF |
I | Archivo de imagen |
yo | Telnet 3270 |
tipos de gopher+ | |
: | Imagen de mapa de bits |
; | Archivo de película |
< | Archivo de sonido |
Tipos no canónicos | |
d | Doc. Se utiliza junto con archivos PDF y .doc |
yo | Archivo HTML |
i | Mensaje informativo, ampliamente utilizado. [25] |
pag | archivo de imagen "(especialmente el formato PNG )" |
a | Documento en formato RTF (" Formato de texto enriquecido ") |
s | Archivo de sonido (especialmente el formato WAV ) |
PAG | Archivo PDF (formato de documento portátil) |
incógnita | Archivo XML (lenguaje de marcado extensible) |
A continuación se muestra un ejemplo de una sesión de gopher donde el usuario requiere un menú de gopher ( /Reference
en la primera línea):
/Referencia1CIA World Factbook /Archivos/mirrors/textfiles.com/politics/CIA gopher.quux.org 700Jargon 4.2.0 /Referencia/Jargon 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 701Diccionario geográfico de EE. UU. /Referencia/Diccionario geográfico de EE. UU. gopher.quux.org 70 +Este archivo contiene información sobre Estados Unidos falso (NULL) 0icidades, condados y áreas geográficas. Tiene falsos (NULL) 0latitud/longitud, población, superficie terrestre y acuática, falso (NULL) 0y códigos postales. falso (NULL) 0yo finjo (NULL) 0Para buscar una ciudad, ingrese el nombre de la ciudad. Para buscar una ciudad falsa (NULL) 0Si se trata de un condado, utilice el nombre más Condado; por ejemplo, falso (NULL) 0Condado de iDallas. falso (NULL) 0
El menú de Gopher enviado desde el servidor es 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 así permitirán al usuario navegar por el espacio de Gopher siguiendo los enlaces. [5]
Este menú incluye un recurso de texto (itemtype 0
en la tercera línea), múltiples enlaces a submenús (itemtype 1
, en la segunda línea, así como en las líneas 4 a 6) y un mensaje de información no estándar (a partir de la línea 7), dividido en varias líneas al proporcionar valores ficticios para selector, host y puerto.
Históricamente, para crear un enlace a un servidor web, se utilizaba "GET /" como pseudoselector para emular una petición HTTP GET . [26] John Goerzen creó una adición [27] al protocolo Gopher, comúnmente denominada " 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 , 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 admiten enlaces URL consultarán al servidor y recibirán una página de redirección HTML).h
Gopher+ es una mejora compatible con el futuro del protocolo Gopher. Gopher+ funciona enviando metadatos entre el cliente y el servidor. La mejora nunca fue ampliamente adoptada por los servidores Gopher. [28] [29] [30] El cliente envía una tabulación seguida de un +. Un servidor Gopher+ responderá con una línea de estado seguida del contenido solicitado por el cliente. Un elemento se marca como compatible con Gopher+ en la lista de directorios de Gopher mediante una tabulación + después del puerto (este es el caso de algunos de los elementos en el ejemplo anterior).
Otras características de Gopher+ incluyen:
Se trata de clientes, bibliotecas y utilidades diseñadas principalmente para acceder a los recursos de Gopher.
Cliente | Actualizado | Licencia | Idioma | Tipo | Notas |
---|---|---|---|---|---|
ÁCIDO | 2021 | ? | do | Interfaz gráfica de usuario (Windows) | Admite caché de página, TFTP y tiene extensión G6. |
Bombadillo | 2022 | Licencia GPL versión 3 | Ir | Interfaz de usuario de usuario (Linux, BSD, macOS ) | Compatible con Gopher, Gemini y Finger. |
rizo | 2024 | do | CLI | ||
Elefante | 2022 | Licencia GPL versión 3 | Emacs Lisp | UIS/GUI | Elpher: un cliente gopher, finger y gemini para GNU Emacs |
Eva | 2022 | Licencia GPL versión 3 | Óxido | Interfaz gráfica de usuario | Eva (como en actividad extravehicular o caminata espacial) es un navegador de protocolo Gemini y Gopher en GTK 4. |
Navegador Gopher | 2019 | Código cerrado | VB.NET | Interfaz gráfica de usuario (Windows) | |
Cliente Gopher | 2018 | Aplicación (iOS) [31] | Admite reflujo de texto, marcadores, historial, etc. | ||
tuza | 2022 | Instituto Tecnológico de Massachusetts (MIT) | Java | Aplicación (Android) | Admite únicamente funcionalidades básicas como marcadores, historial de sesiones, descargas, etc. |
tuza | 2020 | BSD de 2 cláusulas | do | TUI (Linux, BSD, Windows, DOS) | Incluye marcadores y almacenamiento en caché de páginas. |
Gofio | 2020 | Licencia GPL versión 3 | Java | Interfaz gráfica de usuario (Windows, MacOS, Linux) | |
Cristal | 2020 | Licencia GPL versión 3 | C++ | Interfaz gráfica de usuario (Linux) | Cliente GUI Gemini con soporte para Gopher, Finger y www. |
Lagrange | 2022 | BSD de 2 cláusulas | do | Interfaz gráfica de usuario | Cliente GUI de Gemini con compatibilidad con Gopher y Finger. Cambia a solicitudes de tipo 1/gophermap en la navegación principal/raíz. [32] |
Cliente de Little Gopher | 2019 | Pascal | Linux, Mac, Windows | Barra lateral con vista jerárquica | |
ncgopher | 2022 | BSD de 2 cláusulas | Óxido | TUI | ncgopher es un cliente gopher y gemini que utiliza ncurses. |
Tuza de bolsillo | 2019 | Sin licencia | Java | Aplicación (Android) | Admite marcadores, historial, descargas, etc. |
saco | 2022 | do | TUI | sacc(omys) es un cliente gopher de terminal. | |
snarf | 2020 | Licencia pública general (GPL) | do | CLI | Buscador de recursos multipropósito, sencillo y no interactivo |
m3m | 2021 | Instituto Tecnológico de Massachusetts (MIT) | do | TUI | w3m es un navegador web basado en texto |
Clientes como navegadores web, bibliotecas y utilidades diseñadas principalmente para acceder a recursos de la World Wide Web, pero que mantienen (o mantenían) soporte para gopher.
Los navegadores que no tienen compatibilidad nativa con Gopher pueden acceder a los servidores utilizando una de las puertas de enlace de Gopher a HTTP disponibles o un servidor proxy que convierte los menús de Gopher en HTML ; los proxies conocidos son el proxy Gopher público 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 convierte cualquier gopher://
URL en contenido HTTP, lo que permite que cualquier navegador o agente web acceda fácilmente al contenido de Gopher.
Para Mozilla Firefox y SeaMonkey , las extensiones Overbite [17] amplían la navegación Gopher y admiten las versiones actuales de los navegadores (Firefox Quantum v ≥57 y versiones equivalentes de SeaMonkey):
gopher://
las 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 , está disponible Burrow [38] . Redirecciona gopher://
las URL a un proxy. En el pasado, estaba disponible una extensión basada en proxy de Overbite para estos navegadores, pero ya no se mantiene y no funciona con las versiones actuales (>23). [17]
Para Konqueror , está disponible Kio gopher [43] .
Como la interfaz simple de ahorro de ancho de banda de Gopher puede ser una buena opción para teléfonos móviles y asistentes digitales personales (PDA), [44] a principios de la década de 2010 se vio un renovado interés en los clientes nativos de Gopher para los teléfonos inteligentes más populares .
La popularidad de Gopher alcanzó su punto máximo en una época en la que todavía había muchas arquitecturas informáticas y sistemas operativos que competían por igual. Como resultado, hay varios clientes Gopher disponibles para Acorn RISC OS , AmigaOS , Atari MiNT , Conversational Monitor System (CMS), DOS , Mac OS clásico , MVS , NeXT , OS/2 Warp , la mayoría de los sistemas operativos tipo Unix , VMS , Windows 3.x y Windows 9x . GopherVR era un cliente diseñado para la visualización 3D, e incluso hay un cliente Gopher en MOO . [45] [46] La mayoría de estos clientes están codificados para funcionar en el puerto 70 del Protocolo de control de transmisión (TCP). [47]
Dado que el protocolo es fácil de implementar de manera básica, todavía hay muchos paquetes de servidor disponibles y algunos aún se mantienen.
Servidor | Desarrollado por | Última versión | Fecha de lanzamiento | Licencia | Escrito en | Notas |
---|---|---|---|---|---|---|
Réplica | Rob Linwood | 1.0.1 | 22 de abril de 2004 | Instituto Tecnológico de Massachusetts (MIT) | Java | |
Apache::Manejador de Gopher | Tim Murray | 0,1 | 26 de marzo de 2004 | GPLv2 o cualquier versión posterior | Perl | Complemento de Apache 2 para ejecutar Gopher-Server. |
En realidad | Charles Childers | 2017.4 | 9 de octubre de 2017 | CSI | Adelante | |
Bucktooth (enlace de gopher) (enlace proxy) | Cameron Kaiser | 0.2.10 | 10 de febrero de 2024 | Licencia de software libre Floodgap | Perl | |
Matraz-Gopher | Michael Lazar | 2.2.1 | 11 de abril de 2020 | Licencia GPL versión 3 | Pitón | |
geomido | Quinn Evans | 0.0.1 | 10 de agosto de 2015 | BSD de 2 cláusulas | Ceceo común | |
geomyidae (enlace de tuza) (enlace proxy) | Cristoph Lohmann | 0,96 | 26 de agosto de 2022 | Instituto Tecnológico de Massachusetts (MIT) | do | Scripts dinámicos REST, compatibilidad con TLS de Gopher, capa de compatibilidad para otros mapas de Gopher |
Ir a pescar | Sean MacLennan | 1.2 | 8 de octubre de 2010 | Licencia GPL versión 2 | do | |
go-gopher | James Mills | 31 de marzo de 2022 | Instituto Tecnológico de Massachusetts (MIT) | Ir | ||
Servidor Gopher | Tim Murray | 0.1.1 | 26 de marzo de 2004 | Licencia GPL versión 2 | Perl | |
Gophernicus | Kim Holviala y otros | 3.1.1 | 3 de enero de 2021 | BSD de 2 cláusulas | do | |
gophrier | Guillermo Duhamel | 0.2.3 | 29 de marzo de 2012 | Licencia GPL versión 2 | do | |
Goscher | Aaron W. Hsu | 8.0 | 20 de junio de 2011 | CSI | Esquema | |
dios mio | Compañero Nagy | 1.1 | 29 de enero de 2018 | Licencia GPL versión 3 | do | |
Motsognir | Mateusz Viste | 1.0.13 | 8 de enero de 2021 | Instituto Tecnológico de Massachusetts (MIT) | do | Extensible a través de mapas Gopher personalizados, scripts CGI y PHP |
Pituophis | puntocomboom | 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 | Michael Lazar | 3.0.1 | 25 de febrero de 2024 | Licencia GPL versión 2 | 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 | do | Soporte eliminado en la versión 7 [48] |
guardar_servidor_gopher | SSS8555 | 0,777 | 7 de julio de 2020 | ? | Perl | con extensión G6 y TFTP |
Galleta espacial | Lucas Epple | 1.0.0.0 | 17 de marzo de 2021 | Licencia GPL versión 3 | Haskell | |
Xilofar | Nathaniel Leveck | 0.0.1 | 15 de enero de 2020 | Licencia GPL versión 3 | LibreBASIC |
OmniWeb 5.9.2 Publicado el 1 de abril de 2009: Se implementó un soporte innovador para el protocolo Gopher revolucionario, ¡una novedad para los navegadores basados en WebKit! Para obtener una lista de servidores Gopher, consulte la lista Floodgap. ¡Disfrute!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 de Floodgap a la que se hace referencia se encuentra en Floodgap: nuevos servidores Gopher y no hace referencia al Día de los Inocentes.