Протокол Gopher - это протокол связи, разработанный для распространения, поиска и извлечения документов в сетях Интернет-протокола. Дизайн протокола Gopher и пользовательского интерфейса управляется меню и представляет собой альтернативу World Wide Web на его ранних стадиях, но в конечном итоге попал в немилость, уступив место Протокол передачи гипертекста (HTTP). Экосистему Gopher часто считают эффективным предшественником Всемирной паутины.
Протокол был изобретен командой под руководством Марка П. МакКахилла из Университета Миннесоты. Он предлагает некоторые функции, которые изначально не поддерживаются Интернетом, и налагает гораздо более строгую иерархию на документы, которые он хранит. Его интерфейс текстового меню хорошо подходит для вычислительных сред, которые в значительной степени зависят от удаленных текстовых компьютерных терминалов, которые все еще были распространены во время его создания в 1991 году, а простота его протокола способствовала широкому использованию разнообразие клиентских реализаций. Более поздние версии Gopher и графические клиенты добавили поддержку мультимедиа. Многие сетевые администраторы предпочитали Gopher из-за использования меньшего количества сетевых ресурсов, чем веб-сервисы.
Иерархическая структура Gopher обеспечила платформу для первых крупномасштабных подключений к электронным библиотекам. Протокол Gopher все еще используется энтузиастами, и, хотя он почти полностью вытеснен Интернетом, остается небольшая группа активно обслуживаемых серверов.
Система Gopher была выпущена в середине 1991 года Марком П. МакКахиллом, Фархадом Анклесарией, Полом Линднером, Дэниелом Торри и Бобом Альберти из Университета Миннесоты в США. Его основными целями были, как указано в RFC 1436 :
Gopher объединяет иерархии документов с наборами сервисов, включая WAIS, Archie и Veronica поисковые системы и шлюзы к другим информационным системам, таким как File Transfer Protocol (FTP) и Usenet.
Общий интерес к университетскому городку Широкие информационные системы (CWIS) в высшем образовании в то время и простота настройки серверов Gopher для создания мгновенного CWIS со ссылками на онлайн-каталоги и ресурсы других сайтов были факторами, способствовавшими быстрому внедрению Gopher.
Название было придумано Анклесарией как игра нескольких значений слова «суслик». Талисман Университета Миннесоты - суслик, гофер - помощник, который «занимается» вещами, а суслик роется в земле, чтобы достичь желаемого. местоположение.
World Wide Web находился в зачаточном состоянии в 1991 году, и сервисы Gopher быстро стали популярными. К концу 1990-х Gopher прекратил расширяться. Несколько факторов способствовали стагнации Gopher:
Gopher по-прежнему активно используется энтузиастами, и были попытки возродить Gopher на современных платформах и мобильных устройствах. Одна из попыток - проект Overbite, в котором размещены различные расширения для браузеров и современные клиенты.
Концептуализация знаний в «пространстве Gopher» или «облаке» как конкретной информации в определенном файле, а также известность FTP повлияли на технологию и функциональные возможности Gopher.
Gopher спроектирован так, чтобы функционировать и выглядеть как монтируемая глобальная сетевая файловая система, доступная только для чтения, (и доступно программное обеспечение, которое может фактически смонтировать сервер Gopher как ресурс FUSE ). Как минимум, все, что человек может делать с файлами данных на CD-ROM, он может делать на Gopher.
Система Gopher состоит из ряда иерархических меню с гиперссылками. Выбор пунктов меню и заголовков контролируется администратором сервера.
Подобно файлу на веб-сервере, файл на сервере Gopher может быть связаны как элемент меню с любого другого сервера Gopher. Многие серверы используют эту межсерверную связь, чтобы предоставить каталог других серверов, к которым пользователь может получить доступ.
Протокол Gopher был впервые описан в RFC 1436. IANA назначил TCP порт 70 протоколу Gopher.
Протокол легко согласовать, что позволяет просматривать без использования клиента. Таким образом, стандартный сеанс суслика может выглядеть следующим образом:
/ Ссылка 1CIA World Factbook /Archives/mirrors/textfiles.com/politics/CIA gopher.quux.org 70 0Jargon 4.2.0 / Reference / Jargon 4.2.0 gopher.quux.org 70 + 1Онлайн-библиотеки / Справочные материалы / Онлайн-библиотеки gopher.quux.org 70 + 1RFC: Интернет-стандарты / Компьютеры / Стандарты и спецификации / RFC gopher.quux.org 70 1U.S. Географический справочник / Ссылка / США. Gazetteer gopher.quux.org 70 + i Этот файл содержит информацию о поддельных (NULL) 0 городах США, округах и географических регионах. Он имеет поддельные (NULL) 0, широту / долготу, население, территорию и акваторию, поддельные (NULL) 0 iи почтовые индексы. fake (NULL) 0 i fake (NULL) 0 Для поиска города введите название города. Для поиска поддельного (NULL) 0 ifor округа используйте имя плюс County - например, поддельный (NULL) 0 iDallas County. fake (NULL) 0
Здесь клиент установил TCP-соединение с сервером через порт 70, стандартный порт gopher. Затем клиент отправляет строку, за которой следует возврат каретки, за которым следует перевод строки (последовательность «CR + LF»). Это селектор, который определяет документ, который необходимо получить. Если бы селектор элементов был пустой строкой, был бы выбран каталог по умолчанию. Затем сервер отвечает запрошенным элементом и закрывает соединение. Согласно протоколу, прежде чем соединение будет закрыто, сервер должен сам послать точку (то есть символ точки) в строке. Однако, как и здесь, не все серверы соответствуют этой части протокола, и сервер может закрыть соединение, не возвращая окончательную точку.
В этом примере возвращаемый элемент представляет собой меню суслика, каталог, состоящий из последовательности строк, каждая из которых описывает элемент, который можно получить. Большинство клиентов будут отображать их как гипертекстовые ссылки, что позволит пользователю перемещаться по гофер-пространству, переходя по ссылкам.
Все строки в гофер-меню заканчиваются "CR + LF", и состоят из пяти полей: тип элемента в качестве самого первого символа (см. ниже), отображаемая строка (т. е. текст описания для отображения), селектор (т. е. путь к файловой системе), имя хоста (т. е. доменное имя сервера, на котором находится элемент) и порт (т. е. номер порта, используемый этим сервером). Тип элемента и отображаемая строка соединяются без пробела; остальные поля разделяются символом табуляции.
Благодаря простоте протокола Gopher, такие инструменты, как netcat, позволяют легко загружать контент Gopher из командной строки:
echo jacks / jack.exe | nc gopher.example.org 70>jack.exe
Протокол также поддерживается cURL начиная с 7.21.2-DEV.
За строкой селектора в запросе может дополнительно следовать символ табуляции и строка поиска. Это используется типом элемента 7.
Пункты меню Gopher определяются строками значений, разделенных табуляцией в текстовом файле . Этот файл иногда называют gophermap. Как исходный код для меню суслика, карта суслика примерно аналогична файлу HTML для веб-страницы. Каждая строка, разделенная табуляцией (называемая линией выбора), дает клиентскому программному обеспечению описание пункта меню: что это такое, как называется и куда ведет. Клиент отображает пункты меню в том порядке, в котором они появляются на карте Gophermap.
Первый символ в строке селектора указывает тип элемента, который сообщает клиенту, на какой тип файла или протокола указывает элемент меню. Это помогает клиенту решить, что с ним делать. Типы элементов Gopher являются более базовыми предшественниками системы типов носителей, используемой в Интернете, и вложений электронной почты.
За типом элемента следует строка отображения пользователя (описание или метка, представляющая пункт в меню); селектор (путь или другая строка для ресурса на сервере); имя хоста (доменное имя или IP-адрес сервера) и сетевой порт.
. Например: следующая строка селектора создает ссылку на "/ home "каталог в субдомене gopher.floodgap.com, на порту 70. Тип элемента 1указывает, что ресурс является меню Gopher. Строка «Главная страница Floodgap» - это то, что пользователь видит в меню.
1Floodgap Home / home gopher.floodgap.com 70
Тип элемента | Строка отображения пользователя | Селектор | Имя хоста | Порт |
---|---|---|---|---|
1 | Floodgap Home | / home | gopher.floodgap.com | 70 |
В исходном коде меню Gopher одно- код символа указывает, какой контент следует ожидать клиенту. Этот код может быть цифрой или буквой алфавита; буквы чувствительны к регистру.
В технической спецификации для Gopher, RFC 1436 определены 14 типов элементов. Односимвольный код указывает, какой контент должен ожидать клиент. Тип элемента 3
- это код ошибки для обработки исключений. Авторы клиента Gopher импровизированных типов элементов h
(HTML), i
(информационное сообщение) и s
(звуковой файл ) после публикации RFC 1436. Такие браузеры, как Netscape Navigator и ранние версии Microsoft Internet Explorer, добавляли код типа элемента к селектору, как описано в RFC 4266, чтобы тип элемента gopher мог определяться по самому URL-адресу. Большинство браузеров Gopher все еще доступны, используют эти префиксы в своих URL-адресах.
Канонические типы | |
---|---|
0 | Текстовый файл |
1 | Подменю Gopher |
2 | Сервер имен CCSO |
3 | Код ошибки, возвращаемый сервером Gopher, чтобы указать на сбой |
4 | файл с кодировкой BinHex (в основном для Macintosh компьютеры) |
5 | DOS файл |
6 | uuencoded файл |
7 | Gopher полнотекстовый поиск |
8 | Telnet |
9 | двоичный файл |
+ | Зеркало или альтернативный сервер (для балансировка нагрузки или в случае простоя основного сервера время простоя ) |
g | GIF файл |
I | файл изображения |
T | Telnet 3270 |
неканонические типы | |
d | использованный документ наряду с файлами PDF и.DOC |
h | HTML |
i | Информационное сообщение |
s | Звуковой файл (особенно формат WAV ) |
f FABCDEGHJKL | G6 связанные типы |
Исторически, чтобы создать ссылку на веб-сервер, «GET /» использовался в качестве псевдоселектора для имитации HTTP запроса GET. Джон Герцен создал дополнение к протоколу Gopher, обычно называемое «URL ссылки», которое позволяет ссылаться на любой протокол, поддерживающий UR Ls. Например, чтобы создать ссылку на http://gopher.quux.org/, тип элемента - h
, отображаемая строка - это заголовок ссылки, селектор элемента - это «URL: http: //gopher.quux.org/», а домен и порт - это домен и порт исходного сервера Gopher (так что клиенты, которые не поддерживают URL-ссылки, будут запрашивать сервер и получать страницу перенаправления HTML).
Основная поисковая машина Gopherspace - это Вероника. Veronica предлагает поиск по ключевым словам во всех заголовках меню общедоступного сервера Internet Gopher. Поиск Veronica создает меню элементов Gopher, каждый из которых является прямым указателем на источник данных Gopher. Отдельные серверы Gopher могут также использовать локализованные поисковые системы, специфичные для их контента, такие как Jughead и Jugtail.
GopherVR - это вариант трехмерной виртуальной реальности исходной системы Gopher.
Браузер | Версия | Примечания | |
---|---|---|---|
Первая поддержка | Последняя поддержка | ||
ACID | 0,777. (апрель 2020 г.) | Присутствует | Браузер только для Gopher для Windows, страничный кеш, TFTP, поддержка протокола Gopher G6 |
Обзор | ? | Присутствует | Этот браузер предназначен для RISC OS |
Camino | 1.0 | 2.1.2 | Всегда использует порт 70. |
Classilla | 9.0 | Присутствует | Жестко запрограммировано на порт 70 от 9.0–9.2; занесенные в белый список порты из 9.2.1 |
cURL | 7.21.2. (октябрь 2010 г.) | Настоящее | cURL - это утилита для передачи файлов из командной строки |
Dooble | 1,53 | Присутствует | |
ELinks | 0.10.0 | ? | Предлагает поддержку в качестве опции сборки |
Epiphany | ? | 2.26.3 | Отключено после переключения на WebKit |
Falkon | 3.1.0,. только с подключаемым модулем | Имеется,. только с подключаемым модулем | Требуется Falkon ≥ 3.1.0 с включенным расширением интеграции KDE Frameworks (поставляется с Falkon ≥ 3.1.0) и установленным (отдельным) плагином kio_gopher ≥ 0.1.99 (первый выпуск для KDE Frameworks 5) |
Galeon | ? | 2.0.7 | |
Google Chrome | Только с расширением | Н / Д | С расширением Burrow |
Gophie | 1.0. (апрель 2020 г.) | Присутствует | - |
Internet Explorer | Н / Д | 6 | Поддержка, удаленная MS02-047 из IE 6 SP1, может быть повторно включена в реестре Windows. Всегда использует порт 70. |
Internet Explorer для Mac | ? | 5.2.3 | PowerPC-only |
K-Meleon | ? | Present | |
Konqueror | Только с подключаемым модулем | ? | Требуется плагин kio_gopher |
libwww | 1.0c. (декабрь 1992 г.) | Настоящее | libwww - это API для интернет-приложений |
Браузер в линейном режиме | Присутствует | ||
Lynx | ? | Присутствует | |
Мозаика | ? | Присутствует (3.0) | |
Mozilla Firefox | 0.0 | 3.6 | Встроенная поддержка упала с Firefox 4.0 и новее; можно добавить обратно, установив одно из расширений с помощью Overbite Project |
Netscape Navigator | ? | 9.0.0.6 | |
NetSurf | N / A | N / A | В стадии разработки, на основе cURL сборщика |
OmniWeb | 5.9.2 | Present | First WebKit Browser для поддержки Gopher |
Opera | Н / Д | Н / Д | Opera 9.0 включает возможность прокси |
Pavuk | ? | Present | Pavuk - это веб-зеркало ( рекурсивная загрузка) программное обеспечение |
SeaMonkey | 1.0 | 2.0.14 | Встроенная поддержка прекращена с SeaMonkey 2.1 и далее; можно добавить обратно, установив одно из расширений с помощью браузера Overbite Project |
WebPositive | ? | Present | WebKit, используемого в Haiku операционной системе |
Браузеры, которые не поддерживает изначально Gopher может по-прежнему получать доступ к серверам, используя один из доступных шлюзов Gopher для HTTP.
Поддержка Gopher была отключена в Internet Explorer версий 5.x и 6 для Windows в августе 2002 года патчем, предназначенным для исправления уязвимости в системе безопасности в обработчике протокола Gopher браузера, чтобы уменьшить поверхность атаки. который был включен в IE6 SP1; однако его можно повторно включить, отредактировав реестр Windows. В Internet Explorer 7 поддержка Gopher была удалена на WinINET уровне.
Для Mozilla Firefox и SeaMonkey, расширения Overbite расширяют возможности просмотра Gopher и поддерживают текущие версии браузеров (Firefox Quantum v ≥57 и эквивалентные версии SeaMonkey):
OverbiteWX включает поддержку доступа к серверам Gopher, но не на порт 70 с использованием белого списка и для запросов CSO / ph. OverbiteFF всегда использует порт 70.
Для Chromium и Google Chrome доступен Burrow. Он перенаправляет URL-адреса gopher: // на прокси. В прошлом для этих браузеров было доступно расширение на основе прокси Overbite, но оно больше не поддерживается и не работает с текущими (>23) выпусками.
Для Konqueror Kio gopher является имеется в наличии.
Некоторые полагают, что простой интерфейс Gopher с экономией полосы пропускания хорошо подходит для мобильных телефонов и персональных цифровых помощников (КПК), но пока что более популярными оказались мобильные адаптации HTML и XML и другого упрощенного контента. Сервер PyGopherd предоставляет встроенный WML интерфейс для сайтов Gopher, обслуживаемых им.
В начале 2010-х годов возобновился интерес к собственным клиентам Gopher для популярных смартфонов : Overbite, клиент с открытым исходным кодом для Android 1.5+ был выпущен в альфа-версии stage в 2010 году. PocketGopher также был выпущен в 2010 году вместе с исходным кодом для нескольких устройств, совместимых с Java ME. Клиент Gopher был выпущен в 2016 году как проприетарный клиент для устройств iPhone и iPad и в настоящее время поддерживается. [1]
Популярность Gopher была на пике в то время, когда существовало еще много равнозначно конкурирующих компьютерных архитектур и операционных систем. В результате доступно несколько клиентов Gopher для Acorn RISC OS, AmigaOS, Atari MiNT, CMS, DOS., классическая Mac OS, MVS, NeXT, OS / 2 Warp, большинство UNIX-подобных операционные системы, VMS, Windows 3.x и Windows 9x. GopherVR был клиентом, предназначенным для трехмерной визуализации, и в MOO есть даже клиент Gopher. Большинство этих клиентов жестко запрограммированы для работы на TCP порту 70.
Пользователи веб-браузеров, которые не полностью поддерживают Gopher или не поддерживают его, могут получать доступ к контенту на серверах Gopher через серверный шлюз или прокси-сервер, который преобразует Gopher меню в HTML ; известными прокси-серверами являются прокси-сервер Floodgap Public Gopher и прокси-сервер Gopher. Точно так же некоторые серверные пакеты, такие как GN и PyGopherd, имеют встроенный Gopher для интерфейсов HTTP. Squid Proxy программное обеспечение шлюза любого gopher: // URL-адреса к содержимому HTTP, позволяя любому браузеру или веб-агенту легко получить доступ к содержимому gopher.
Поскольку протокол тривиален для реализации в базовом режиме, многие серверные пакеты все еще доступны, а некоторые все еще поддерживаются.
Сервер | Разработано | Последняя версия | Дата выпуска | Лицензия | Написано в | Примечания |
---|---|---|---|---|---|---|
Aftershock | Роб Линвуд | 1.0.1 | 22 апреля 2004 г. | MIT | Java | |
Apache :: GopherHandler | Тимм Мюррей | 0,1 | 26 марта 2004 г. | GPL | Perl | плагин Apache 2 для запуска Gopher-Server. |
Atua | Чарльз Чилдерс | 2017.4 | 9 октября 2017 | ISC | Forth | |
Bucktooth | Кэмерон Кайзер | 0.2.9 | 1 мая 2011 | Лицензия свободного программного обеспечения Floodgap | Perl | |
save_gopher_server | SSS8555 | 0.777 | 7 июля 2020 г. | Perl | с расширением G6 и TFTP | |
Flask- Gopher | Майкл Лазар | 2.2.1 | 11 апреля 2020 г. | GPLv3 | Python | |
geomyid | Куинн Эванс | 0.0.1 | 10 августа 2015 г. | BSD с двумя пунктами | Common Lisp | |
Geomyidae | Кристоф Ломанн | 0,34 | 13 марта 2019 г. | MIT | C | |
GN | ? | 2.25-20020226 | 26 20 февраля 02 | GPL | C | |
GoFish | Шон МакЛеннан | 1.2 | 8 октября 2010 г. | GPLv2 | C | |
Gopher Cannon | Джефф Севарт | 1.07 | 8 июля 2013 г. | Бесплатное ПО | .NET 3.5 (Win32 / Win64 ) | Версия 1.06 от 26 августа 2010 г. доступна на gopherspace. de. |
Gopher-Server | Тимм Мюррей | 0.1.1 | 26 марта 2004 г. | GPL | Perl | |
Gophernicus | Ким Холвиала и другие | 3,1 | 14 ноября 2019 г. | BSD | C | |
gophrier | Гийом Дюамель | 0,2,3 | 29 марта 2012 г. | GPL | C | |
GOPHSERV | ? | 0.5 | 30 декабря 2012 г. | GPLv3 | FreeBASIC | Версия 0.4 доступна на gopherspace.de. |
Goscher | Аарон В. Хсу | 8,0 | 20 июня 2011 г. | ISC | Схема | |
mgod | Мейт Надь | 1,1 | 29 января 2018 г. | GPLv3 | C | |
Моцогнир | Матеуш Висте | 1.0.12 | 7 июля 2019 года | GPLv3 | C | |
Pituophis | dotcomboom | 1.1 | 16 мая 2020 г. | пункт 2 BSD | Pyth на | Библиотека Gopher на основе Python с поддержкой как сервера, так и клиента |
PyGopherd | John Goerzen | 2.0.18.5 | 14 февраля 2017 г. | GPL | Python | |
PyGS | Адам Гурно | 0.3.5 | 7 августа 2001 г. | GPLv2 | Python | Разработка остановлена 17 апреля 2003 г. |
Redis | Salvatore Sanfilippo | 6.0.8 | 9 сентября 2020 г. | BSD 3 Пункт | C | |
Spacecookie | Лукас Эппл | 0.2.1.1 | 10 Декабрь 2019 г. | GPL | Haskell | |
Xylophar | Натаниэль Левек | 0.0.1 | 15 января 2020 г. | GPL | FreeBASIC |