Gopher

Gopher
Название Gopher
Создан в 1991
Порт/ID 70/TCP
Спецификация RFC 1436
Основные реализации (клиенты) Mozilla Firefox, Windows: Internet Explorer 5, Internet Explorer 6 (ограничено MS), Lynx
Разработчик Mark P. McCahill[вд] и Миннесотский университет

Gopher (англ. gopher [ˈɡoʊfər] — го́уфер, го́фер) — сетевой протокол распределённого поиска и передачи документов, который был широко распространён в Интернете до 1993 года. Протокол предназначается для предоставления доступа к документам в Интернет, но имеет меньше возможностей, чем HTTP, и впоследствии был почти полностью вытеснен им.

Протокол gopher имеет более жёсткую структуру размещения информации, очень похожую на структуру каталогов в файловой системе, которая состоит из вложенных друг в друга каталогов и файлов. Иерархическая структура ссылок позволила пользователям текстовых терминалов, в основном в университетах, очень быстро находить нужную информацию.

Протокол был разработан в Университете Миннесоты весной 1991 года и документирован в RFC 1436. Летом 1993 года опубликован набор дополнений к протоколу, получивший название Gopher+[1].

В феврале 1993 года Университет Миннесоты объявил о намерении взимать лицензионные отчисления за использование созданной им реализации сервера Gopher.[2] В результате пользователи и разработчики стали отдавать предпочтение развивавшейся тогда технологии World Wide Web, имевшей и ряд других преимуществ[3]. В сентябре 2000 года Университет Миннесоты выпустил программное обеспечение Gopher (клиент и сервер) под лицензией GNU GPL[4].

Протокол основан на клиент-серверной технологии, за ним закреплён 70-й порт TCP. После того, как клиент установит TCP-подключение с сервером, он посылает строку (заканчивающуюся CR LF), которая содержит запрос на нужный документ либо пустую строку для получения первой страницы сайта. Сервер отвечает и закрывает соединение.

Каталог состоит из последовательности строк, описывающих данные, которые можно из него получить — файлы, другие каталоги и ссылки на ресурсы, доступные по другим протоколам. Строки содержат пять полей и заканчиваются CR LF. Первое поле содержит один символ и не отделено от второго, остальные разделяются табуляцией.

  • Тип содержимого
    • 0 = текстовый файл
    • 1 = каталог
    • 2 = сервер имён CSO
    • 3 = ошибка
    • 4 = файл Macintosh в формате BinHex
    • 5 = архив ZIP
    • 6 = файл UNIX, закодированный uuencode
    • 7 = поисковый сервер
    • 8 = ссылка на telnet-сессию
    • 9 = бинарный файл
    • + = запасной сервер
    • h = файл в формате HTML
    • g = графический файл в формате GIF
    • i = информационный текст
    • I = графический файл (отображение определяется клиентом)
    • T = ссылка на сессию TN3270
  • Строка описания
  • Путь (обычно в файловой системе)
  • Доменное имя сервера
  • Номер порта сервера

На начало 2013 года в Интернете существует около 310 gopher-серверов[5]. Большинство из них более не обновляется, но некоторые поддерживаются энтузиастами протокола Gopher. Несколько десятков новых серверов было запущено с 1999 года[6]. Сегодня Gopher напоминает почти заброшенный уголок Интернета — можно, например, публиковать адреса электронной почты, не беспокоясь о спаме, и публиковать любую информацию, не заботясь об объёмах трафика. При этом многие серверы Gopher до сих пор регулярно посещаются. Протокол Gopher в той или иной мере поддерживается многими современными веб-браузерами.

Программное обеспечение

[править | править код]

В Internet Explorer версий 5.* и 6 для Windows поддержка Gopher отключена с июня 2002 года с выходом патча, предназначавшегося для исправления уязвимости в обработчике протокола Gopher; однако её можно вернуть через редактирование реестра[7]. В Internet Explorer 7 Gopher более не поддерживается[8]. Internet Explorer для Mac (только на платформе PowerPC) всё ещё поддерживает Gopher.

Другие браузеры, включая Mozilla и AOL, поддерживают протокол лишь частично — наиболее существенным недостатком является то, что они не отображают информационный текст, используемый во многих gopher-меню. Для полной поддержки Gopher в Konqueror необходим плагин, такой как kio_gopher[9]. Mozilla Firefox полностью поддерживал Gopher, начиная с версии 1.5 и до 4 (в 4-й версии браузера, вышедшей в марте 2011 года, Gopher перестал поддерживаться[10], но можно установить специальное расширение[11]), и частично — в предшествующих версиях. SeaMonkey и Camino также полностью поддерживают Gopher. Однако, наиболее полная поддержка Gopher доступна в текстовом браузере Lynx.

Safari не поддерживает Gopher, для поддержки в Opera требуется прокси-сервер, например Squid.

Благодаря простоте протокола создано множество реализаций серверов на различных языках программирования:

Gopher+ — обратно совместимое расширение протокола Gopher. Предложено разработчиками оригинального протокола Gopher (также называемого Gopher0) в июле 1993 года.[1]

В дополнение к стандартным полям, отправляемым клиенту сервером Gopher0, сервер Gopher+ может отправлять различные метаданные о документе (тип MIME, дату изменения документа, краткое описание, информацию о доступных форматах документа и др.). Клиент Gopher+ может отправлять серверу данные пользовательского ввода аналогично веб-формам.

Предложены также новые типы содержимого:

  • : = битовое изображение
  • ; = файл видео
  • < = звуковой файл

Расширения Gopher+ не были широко реализованы на практике. Лишь немногие из клиентов (UMN Gopher, HGopher[12]) и серверов (UMN Gopherd, Pygopherd[13]) полностью или частично поддерживают Gopher+.

Примечания

[править | править код]
  1. 1 2 Gopher+ upward compatible enhancements to the Internet Gopher protocol (30 июля 1993). Архивировано 18 октября 2017 года.
  2. University of Minnesota Gopher software licensing policy Архивная копия от 10 января 2006 на Wayback Machine The Minnesota Gopher Team
  3. Johan Söderberg. Hacking Capitalism: The Free and Open Source Software Movement (англ.). — Routledge, 2007. — P. 25. — ISBN 0-415-95543-2.
  4. comp.infosystems.gopher: UMN Gopher(d) released under the GPL. Дата обращения: 20 января 2013. Архивировано 29 сентября 2021 года.
  5. Статистика Veronica-2. gopher.floodgap.com. Архивировано 18 октября 2017 года.
  6. Список новых серверов Gopher.
  7. Microsoft Security Bulletin MS02-047. Microsoft (28 февраля 2003). Дата обращения: 23 марта 2007. Архивировано 25 августа 2011 года.
  8. Release Notes for Internet Explorer 7. Microsoft (2006). Дата обращения: 23 марта 2007. Архивировано 25 августа 2011 года.
  9. kio_gopher — Gopher kioslave. Дата обращения: 18 октября 2011. Архивировано 1 мая 2018 года.
  10. Lenta.ru: Интернет: Блеск и нищета URL’а. Дата обращения: 28 сентября 2011. Архивировано 30 сентября 2011 года.
  11. OverbiteFF :: Add-ons for Firefox. Дата обращения: 28 сентября 2011. Архивировано из оригинала 10 июня 2011 года.
  12. Архивированная копия. Дата обращения: 21 января 2013. Архивировано из оригинала 4 сентября 2013 года.
  13. Ubuntu Manpage: PyGopherd - Multiprotocol Information Server. Дата обращения: 22 января 2013. Архивировано 1 февраля 2013 года.