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 в той или иной мере поддерживается многими современными веб-браузерами.

## Содержание

* 1 Программное обеспечение
* 1.1 Клиенты
* 1.2 Серверы
* 2 Gopher+
* 3 Примечания
* 4 Ссылки

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

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

### Клиенты

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

В 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.

### Серверы

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

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

* На C:
* UMN Gopherd — классический сервер, разработанный в Университете Миннесоты, не поддерживается
* Geomyidae
* GN
* GoFish
* Gophernicus
* gophrier
* mgod
* Motsognir
* На Python:
* PyGopherd
* PyGS
* На Java:
* Aftershock
* На Perl:
* Bucktooth
* На FreeBASIC:
* GOPHSERV
* Grumpy (поддержка Gopher прекращена)
* На Scheme:
* Goscher
* На платформе .NET 3.5:
* Gopher Cannon
* На Node.js (JavaScript):
* node-gopher

## Gopher+

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

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 года.

## Ссылки

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

* RFC 1436 — описание протокола Gopher
* шлюз из WWW в Gopher
* Gopher+ (недоступная ссылка)
* Uptime и состояние известных серверов Gopher (через http недоступен)
* Спецификация Gopher+

Ссылки на внешние ресурсы

Словари и энциклопедии

* Большая датская

В библиографических каталогах|

* GND: 4372140-0
* J9U: 987007534615505171
* LCCN: sh95000820

Схемы URI

Официальные|

* aaa
* aaas
* about
* acap
* cap
* cid
* crid
* data
* dav
* dict
* dns
* fax
* file
* ftp
* geo
* go
* gopher
* h323
* http
* https
* im
* imap
* iri
* ldap
* mailto
* mid
* news
* nfs
* nntp
* pop
* pres
* rtsp
* sip
* sips
* snmp
* tel
* telnet
* urn
* url
* view-source
* wais
* xmpp

Неофициальные|

* aim
* bolo
* btc
* bzr
* callto
* chrome
* cvs
* cs2d
* daap
* ed2k
* ed2kftp
* feed
* fish
* git
* gizmoproject
* iax2
* irc
* ircs
* itms
* lastfm
* ldaps
* magnet
* mms
* msnim
* psyc
* rsync
* secondlife
* skype
* ssh
* svn
* sftp
* smb
* sms
* soldat
* steam
* tg
* webcal
* xfire
* ymsgr

Основные протоколы TCP/IP по уровням модели OSI

Физический|

* Ethernet
* RS-232
* EIA-422
* RS-449
* RS-485

Канальный|

* Ethernet
* PPPoE
* PPP
* L2F
* 802.11 Wi-Fi
* 802.16 WiMax
* Token Ring
* ARCNET
* FDDI
* HDLC
* SLIP
* ATM
* CAN
* DTM
* X.25
* Frame Relay
* IEEE 802.1aq
* SMDS
* STP
* ERPS
* ARP

Сетевой|

* IPv4
* IPv6
* IPsec
* ICMP
* IGMP
* RARP
* RIP2
* OSPF
* EIGRP
* GRE
* IPX

Транспортный|

* TCP (Crypt)
* UDP (QUIC)
* SCTP
* DCCP
* RDP/RUDP
* RTP
* SPX
* TLS 1.3

Сеансовый|

* ADSP
* H.245
* iSNS
* NetBIOS
* PAP
* RPC
* L2TP
* PPTP
* RTCP
* SMPP
* SCP
* ZIP
* SDP

Представления|

* XDR
* SSL
* TLS

Прикладной|

* BGP
* HTTP(S)
* DHCP
* IRC
* Gopher
* Finger
* SNMP
* DNS(SEC)
* NNTP
* XMPP
* SIP
* IPP
* NTP
* SNTP
* Электронная почта
* SMTP
* POP3
* IMAP4
* Передача файлов
* FTP
* TFTP
* SFTP
* FTPS
* WebDAV
* SMB
* Удалённый доступ
* rlogin
* Telnet
* SSH
* RDP

Другие прикладные|

* Bitcoin
* OSCAR
* MTProto
* Multicast FTP
* Multisource FTP
* BitTorrent
* Gnutella
* Skype

Список портов TCP и UDP

Клиенты Gopher

Активные
клиенты|

* Arachne
* AT&T Pogo[англ.]
* Camino
* Conkeror
* ELinks
* Epiphany
* Fennec
* Flock
* Galeon
* GNUzilla
* K-Meleon
* K-Ninja
* Kazehakase
* Lynx
* Mothra[англ.]
* Mozilla Firefox (3)
* SeaMonkey
* Sleipnir
* Songbird
* w3m
* xB Browser[англ.]

Прекращённые|

* Argo[англ.]
* Beonex Communicator[англ.]
* Cello
* Cyberjack
* GopherVR[англ.]
* IBrowse[англ.]
* Internet Explorer (2
* 3
* 4
* 5
* for Mac)
* Libwww[англ.]
* Madfox
* Minimo
* Minuet[англ.]
* Mosaic
* Mozilla Application Suite
* Netscape Browser
* Netscape Communicator
* Netscape Navigator (9[англ.])
* SlipKnot[англ.]

Серверное ПО|

* Bucktooth[англ.]
* PyGopherd[англ.]
* Squid

См. также|

* Gopher+
* Jughead[англ.]
* Phlog[англ.]
* SDF Public Access Unix System[англ.]
* Veronica[англ.]
* CCSO Nameserver[англ.]
* Wide area information server[англ.]