Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Протокол прикладного уровня TCP/IP
TCP/IP application layer protocol
Протокол Gopher (/ɡoʊ/f/ər/) — это коммуникационный протокол, разработанный для распространения, поиска и получения документов в сетях протокола Интернет. Конструкция протокола Gopher и пользовательского интерфейса основана на меню и представляла собой альтернативу Всемирной паутине на ранних этапах её развития, но в конечном итоге уступила место протоколу HTTP. Экосистема Gopher часто рассматривается как фактический предшественник Всемирной паутины, разработанный в Университете Миннесоты. Он предлагает некоторые функции, которых нет в Веб изначально, и накладывает более строгую иерархию на хранящиеся документы. Его текстовый меню-интерфейс хорошо подходит для вычислительных сред, активно использующих удалённые текстовые терминалы, которые были широко распространены во время его создания в 1991 году, а простота протокола способствовала созданию множества клиентских реализаций. В более поздних версиях Gopher и графических клиентах была добавлена поддержка мультимедиа. Иерархическая структура Gopher послужила платформой для первых масштабных подключений электронных библиотек. Протокол Gopher до сих пор используется энтузиастами, и хотя он почти полностью вытеснен Веб, небольшое количество активно поддерживаемых серверов всё ещё существует.
The Gopher protocol ('/ɡ//oʊ//f//ər/) is a communication protocol designed for distributing, searching, and retrieving documents in Internet Protocol networks. The design of the Gopher protocol and user interface is menu driven, and presented an alternative to the World Wide Web in its early stages, but ultimately fell into disfavor, yielding to HTTP. The Gopher ecosystem is often regarded as the effective predecessor of the World Wide Web. at the University of Minnesota. It offers some features not natively supported by the Web and imposes a much stronger hierarchy on the documents it stores. Its text menu interface is well suited to computing environments that rely heavily on remote text oriented computer terminals, which were still common at the time of its creation in 1991, and the simplicity of its protocol facilitated a wide variety of client implementations. More recent Gopher revisions and graphical clients added support for multimedia. Gopher's hierarchical structure provided a platform for the first large scale electronic library connections. The Gopher protocol is still in use by enthusiasts, and although it has been almost entirely supplanted by the Web, a small population of actively maintained servers remains.
Происхождение
Система Gopher была выпущена в середине 1991 года Марком П. Маккахилом, Фархадом Анклесарией, Полом Линднером, Дэниелом Торри и Бобом Альберти из Университета Миннесоты в Соединенных Штатах. Ее основными целями, как заявлялось, были:
The Gopher system was released in mid 1991 by Mark P. McCahill, Farhad Anklesaria, Paul Lindner, Daniel Torrey, and Bob Alberti of the University of Minnesota in the United States. Its central goals were, as stated in :
Иерархическая файловая структура, знакомая пользователям. Простой синтаксис. Система, которую можно быстро и недорого создать. Расширяемость файловой системы, например, возможность добавления поиска. Gopher объединяет иерархии документов с наборами сервисов, включая WAIS, поисковые системы Archie и Veronica, а также шлюзы к другим информационным системам, таким как протокол передачи файлов (FTP) и Usenet. Широкий интерес к системам информации для кампуса (CWIS) в высшем образовании в то время и простота настройки серверов Gopher для создания мгновенной CWIS со ссылками на онлайн-каталоги и ресурсы других сайтов стали факторами, способствовавшими быстрому распространению Gopher. Название было придумано Анклесарией как игра слов, основанная на различных значениях слова "gopher". Гофер является талисманом Университета Миннесоты, "gofer" – это помощник, который приносит вещи по запросу, а гофер роет норы в земле, чтобы добраться до нужного места.
A file like hierarchical arrangement that would be familiar to users. A simple syntax. A system that can be created quickly and inexpensively. Extensibility of the file system metaphor; allowing addition of searches for example. Gopher combines document hierarchies with collections of services, including WAIS, the Archie and Veronica search engines, and gateways to other information systems such as File Transfer Protocol (FTP) and Usenet. The general interest in campus wide information systems (CWISs) in higher education at the time, and the ease of setup of Gopher servers to create an instant CWIS with links to other sites' online directories and resources, were the factors contributing to Gopher's rapid adoption. The name was coined by Anklesaria as a play on several meanings of the word "gopher". The University of Minnesota mascot is the gopher, a gofer is an assistant who "goes for" things, and a gopher burrows through the ground to reach a desired location.
Запрос на поиск
В запросе за строкой селектора необязательно может следовать символ табуляции и строка поиска. Это используется типом элемента 7.
The selector string in the request can optionally be followed by a tab character and a search string. This is used by item type 7.
Исходный код меню
Элементы меню Gopher определяются строками, разделёнными табуляцией, в текстовом файле. Этот файл иногда называют gophermap. Как исходный код меню Gopher, gophermap приблизительно аналогичен HTML-файлу для веб-страницы. Каждая строка, разделённая табуляцией (называемая строкой выбора), предоставляет клиентскому программному обеспечению описание элемента меню: что это такое, как он называется и куда он ведёт. Клиент отображает элементы меню в том порядке, в котором они появляются в gophermap. Первый символ в строке выбора указывает тип элемента, который сообщает клиенту, на какой файл или протокол указывает элемент меню. Это помогает клиенту определить, что с ним делать. Типы элементов Gopher являются более простым предшественником системы типов медиа, используемой в Интернете и вложениях электронной почты. За типом элемента следует строка отображения для пользователя (описание или метка, представляющая элемент в меню); селектор (путь или другая строка для ресурса на сервере); имя хоста (доменное имя или IP-адрес сервера) и сетевой порт. Все строки в меню Gopher завершаются символами "CR + LF". Пример строки выбора в исходном коде меню: Следующая строка выбора генерирует ссылку на каталог "/home" на поддомене gopher.floodgap.com, на порту 70. Тип элемента "1" указывает, что связанный ресурс является меню Gopher. Строка "Floodgap Home" – это то, что клиент покажет пользователю при посещении данного меню. 1Floodgap Home /home gopher.floodgap.com 70
Gopher menu items are defined by lines of tab separated values in a text file. This file is sometimes called a gophermap. As the source code to a gopher menu, a gophermap is roughly analogous to an HTML file for a web page. Each tab separated line (called a selector line) gives the client software a description of the menu item: what it is, what it is called, and where it leads to. The client displays the menu items in the order that they appear in the gophermap. The first character in a selector line indicates the item type, which tells the client what kind of file or protocol the menu item points to. This helps the client decide what to do with it. Gopher's item types are a more basic precursor to the media type system used by the Web and email attachments. The item type is followed by the user display string (a description or label that represents the item in the menu); the selector (a path or other string for the resource on the server); the hostname (the domain name or IP address of the server), and the network port. All lines in a gopher menu are terminated by "CR + LF". Example of a selector line in a menu source: The following selector line generates a link to the "/home" directory at the subdomain gopher. floodgap. com, on port 70. The item type of indicates that the linked resource is a Gopher menu itself. The string "Floodgap Home" is what the client will show to the user when visiting the example menu. 1Floodgap Home /home gopher. floodgap. com 70
Тип элемента Строка отображения для пользователя Селектор Имя хоста Порт 1 Floodgap Home /home gopher.floodgap.com 70
Item type User display string Selector Hostname Port 1 Floodgap Home /home gopher. floodgap. com 70
Клиенты Гофера
Это клиенты, библиотеки и утилиты, предназначенные главным образом для доступа к ресурсам Gopher. Клиент Год лицензия Язык Тип Примечания ACID 2021 ? C GUI (Windows) Поддерживает кэш страниц, TFTP и имеет расширение G6. Bombadillo 2022 GPLv3 Go TUI (Linux, BSD, OSX) Поддерживает Gopher, Gemini, Finger. cURL 2022 C CLI elpher 2022 GPLv3 Emacs Lisp TUI/GUI Elpher: клиент для Gopher, Finger и Gemini для GNU Emacs. eva 2022 GPLv3 Rust GUI Eva (как внекорабельная деятельность, или выход в открытый космос) — браузер протоколов Gemini и Gopher в GTK 4. Gopher Browser 2019 Закрытый исходный код VB. NET GUI (Windows) Gopher Client 2018 App (iOS) Поддерживает перенос текста, закладки, историю и т. д. gophercle 2022 MIT Java App (Android) Поддерживает только основные функции, такие как закладки, историю сеансов, загрузки и т. д. Gopherus 2020 BSD 2 пункта C TUI (Linux, BSD, Windows, DOS) Имеет закладки и кэширование страниц. Gophie 2020 GPLv3 Java GUI (Windows, MacOS, Linux) Kristall 2020 GPLv3 C++ GUI (Linux) Gemini GUI клиент с поддержкой Gopher, Finger и www. Lagrange 2022 BSD 2 пункта C GUI Gemini GUI клиент с поддержкой Gopher и Finger. Переключается на запросы gophermap/type 1 при навигации по родительским/корневым каталогам. Little Gopher Client 2019 Pascal Linux, Mac, Windows Боковая панель с иерархическим представлением. ncgopher 2022 BSD 2 пункта Rust TUI ncgopher — клиент для Gopher и Gemini, использующий ncurses. Pocket Gopher 2019 Unlicense Java App (Android) Поддерживает закладки, историю, загрузки и т. д. sacc 2022 C TUI sacc(omys) — терминальный Gopher клиент. snarf 2020 GPL C CLI Простой Неинтерактивный Универсальный загрузчик ресурсов. w3m 2021 MIT C TUI w3m — текстовый веб-браузер.
These are clients, libraries, and utilities primarily designed to access gopher resources. Client Updated License Language Type Notes ACID 2021 ? C GUI (Windows) Supports page cache, TFTP and has G6 extension. Bombadillo 2022 GPLv3 Go TUI (Linux, BSD, OSX) Supports Gopher, Gemini, Finger cURL 2022 C CLI elpher 2022 GPLv3 Emacs Lisp TUI/GUI Elpher: a gopher, finger, and gemini client for GNU Emacs eva 2022 GPLv3 Rust GUI Eva (as in extra vehicular activity, or spacewalk) is a Gemini and Gopher protocol browser in GTK 4. Gopher Browser 2019 Closed Source VB. NET GUI (Windows) Gopher Client 2018 App (iOS) Supports text reflow, bookmarks, history, etc gophercle 2022 MIT Java App (Android) Supports only basic functionalities like bookmarks, session history, downloads, etc. Gopherus 2020 BSD 2 clause C TUI (Linux, BSD, Windows, DOS) Features bookmarks and page caching. Gophie 2020 GPLv3 Java GUI (Windows, MacOS, Linux) Kristall 2020 GPLv3 C++ GUI (Linux) Gemini GUI client with support for Gopher, Finger, and www. Lagrange 2022 BSD 2 clause C GUI Gemini GUI client with Gopher and finger support. Switches to gophermap/type 1 requests in parent/root navigation. Little Gopher Client 2019 Pascal Linux, Mac, Windows Sidebar with a hierarchical view ncgopher 2022 BSD 2 clause Rust TUI ncgopher is a gopher and gemini client using ncurses. Pocket Gopher 2019 Unlicense Java App (Android) Supports bookmarks, history, downloads, etc sacc 2022 C TUI sacc(omys) is a terminal gopher client. snarf 2020 GPL C CLI Simple Non interactive All purpose Resource Fetcher w3m 2021 MIT C TUI w3m is a text based web browser
Серверное программное обеспечение
Поскольку протокол тривиален в реализации в базовой форме, существует множество доступных серверных пакетов, и некоторые из них все еще поддерживаются. Сервер Разработчик Последняя версия Дата выпуска Лицензия Написан на Примечания Aftershock Роб Линвуд 1.0.1 MIT Java Apache::GopherHandler Тим Мюррей 0.1 GPLv2 или любая более поздняя версия Perl Плагин Apache 2 для запуска Gopher Server. Atua Чарльз Чайлдерс 2017.4 ISC Forth Bucktooth (ссылка Gopher) (прокси-ссылка) Cameron Kaiser 0.2.10 Floodgap Free Software License Perl Flask Gopher Майкл Лазар 2.2.1 GPLv3 Python geomyid Куинн Эванс 0.0.1 2-пунктная BSD Common Lisp geomyidae (ссылка Gopher) (прокси-ссылка) Christoph Lohmann 0.96 MIT CREST динамическое скриптирование, поддержка Gopher TLS, уровень совместимости для других gophermaps GoFish Шон МакЛеннан 1.2 GPLv2 C go gopher James Mills MIT Go Gopher Server Тим Мюррей 0.1.1 GPLv2 Perl Gophernicus Ким Хольвиала и другие 3.1.1 2-пунктная BSD C gophrier Гийом Дюамель 0.2.3 GPLv2 C Goscher Аарон В. Хсу 8.0 ISC Scheme mgod Мате Надь 1.1 GPLv3 C Motsognir Матеуш Висте 1.0.13 MIT C расширяемый с помощью пользовательских gophermaps, CGI и PHP скриптов Pituophis dotcomboom 1.1 2-пунктная BSD Python Python-основанная Gopher библиотека с поддержкой сервера и клиента PyGopherd Майкл Лазар 3.0.1 GPLv2 Python Также поддерживает HTTP, WAP и Gopher+ Redis Сальваторе Санфилиппо 6.2.5 3-пунктная BSD C Поддержка удалена в версии 7, сохраните gopher server SSS8555 0.777 Perl с расширением G6 и TFTP Spacecookie Лукас Эппле 1.0.0.0 GPLv3 Haskell Xylophar Nathaniel Leveck 0.0.1 GPLv3 FreeBASIC
Because the protocol is trivial to implement in a basic fashion, there are many server packages still available, and some are still maintained. Server Developed by Latest version Release date License Written in Notes Aftershock Rob Linwood 1.0.1 MIT Java Apache::GopherHandler Timm Murray 0.1 GPLv2 or any later version Perl Apache 2 plugin to run Gopher Server. Atua Charles Childers 2017.4 ISC Forth Bucktooth (gopher link) (proxied link) Cameron Kaiser 0.2.10 Floodgap Free Software License Perl Flask Gopher Michael Lazar 2.2.1 GPLv3 Python geomyid Quinn Evans 0.0.1 2 clause BSD Common Lisp geomyidae (gopher link) (proxied link) Christoph Lohmann 0.96 MIT CREST dynamic scripting, gopher TLS support, compatibility layer for other gophermaps GoFish Sean MacLennan 1.2 GPLv2 C go gopher James Mills MIT Go Gopher Server Timm Murray 0.1.1 GPLv2 Perl Gophernicus Kim Holviala and others 3.1.1 2 clause BSD C gophrier Guillaume Duhamel 0.2.3 GPLv2 C Goscher Aaron W. Hsu 8.0 ISC Scheme mgod Mate Nagy 1.1 GPLv3 C Motsognir Mateusz Viste 1.0.13 MIT C extensible through custom gophermaps, CGI and PHP scripts Pituophis dotcomboom 1.1 2 clause BSD Python Python based Gopher library with both server and client support PyGopherd Michael Lazar 3.0.1 GPLv2 Python Also supports HTTP, WAP, and Gopher+ Redis Salvatore Sanfilippo 6.2.5 3 clause BSD C Support removed in version 7 save gopher server SSS8555 0.777 Perl with G6 extension and TFTP Spacecookie Lukas Epple 1.0.0.0 GPLv3 Haskell Xylophar Nathaniel Leveck 0.0.1 GPLv3 FreeBASIC