Gopher protocol
Encyclopedia
The Gopher protocol ˈɡoʊfər is a TCP/IP application layer
Application layer
The Internet protocol suite and the Open Systems Interconnection model of computer networking each specify a group of protocols and methods identified by the name application layer....

 protocol
Communications protocol
A communications protocol is a system of digital message formats and rules for exchanging those messages in or between computing systems and in telecommunications...

 designed for distributing, searching, and retrieving documents over the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

. Strongly oriented towards a menu-document design, the Gopher protocol was a predecessor of (and later, an alternative to) the World Wide Web
World Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...

.

The protocol offers some features not natively supported by the Web and imposes a much stronger hierarchy on information stored on it. Its text menu interface is easy to use, and 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 was preferred by many network administrators for using fewer network resources than Web services.

With its hierarchical structure, Gopher provided a useful platform for the first large-scale electronic library connections. Gopher users remember the system as being "faster and more efficient and so much more organised" than today's Web services. Although largely supplanted by the Web in the years following, the Gopher protocol is still in use by enthusiasts, and a small population of actively-maintained servers remains.

Origins

The original Gopher system was released in late spring of 1991 by Mark McCahill, Farhad Anklesaria, Paul Lindner, Daniel Torrey, and Bob Alberti of the University of Minnesota
University of Minnesota
The University of Minnesota, Twin Cities is a public research university located in Minneapolis and St. Paul, Minnesota, United States. It is the oldest and largest part of the University of Minnesota system and has the fourth-largest main campus student body in the United States, with 52,557...

. Its central goals were, as stated in RFC 1436:
  • A file-like hierarchical arrangement that would be familiar to users.
  • A simple syntax.
  • A system that can be created quickly and inexpensively.
  • Extending the file system metaphor, such as searches.


Gopher combines document hierarchies with collections of services, including WAIS
Wide area information server
Wide Area Information Servers or WAIS is a client–server text searching system that uses the ANSI Standard Z39.50 Information Retrieval Service Definition and Protocol Specifications for Library Applications" to search index databases on remote computers...

, the Archie
Archie search engine
Archie is a tool for indexing FTP archives, allowing people to find specific files. It is considered to be the first Internet search engine. The original implementation was written in 1990 by Alan Emtage, Bill Heelan, and J...

 and Veronica
Veronica (computer)
Veronica is a search engine system for the Gopher protocol, developed in 1992 by Steven Foster and Fred Barrie at the University of Nevada, Reno.Veronica is a constantly updated database of the names of almost every menu item on thousands of Gopher servers...

 search engines, and gateways to other information systems such as FTP and Usenet
Usenet
Usenet is a worldwide distributed Internet discussion system. It developed from the general purpose UUCP architecture of the same name.Duke University graduate students Tom Truscott and Jim Ellis conceived the idea in 1979 and it was established in 1980...

.

The general interest in Campus-Wide Information Systems (CWISs) in higher education at the time, and the ease with which a Gopher server could be set up to create an instant CWIS with links to other sites' online directories and resources were the factors contributing to Gopher's rapid adoption. By 1992, the standard method of locating someone's e-mail address was to find their organization's CCSO nameserver
CCSO Nameserver
A CCSO name-server or Ph protocol was an early form of database search on the web. In its most common form it was used to look up information such as phone numbers and e-mail addresses. Today this service has been largely replaced by LDAP. It was used mainly in the early-to-middle 1990s...

 entry in Gopher, and query the nameserver.

The name was coined by Anklesaria as a play off of several meanings of the word "gopher." The University of Minnesota
University of Minnesota
The University of Minnesota, Twin Cities is a public research university located in Minneapolis and St. Paul, Minnesota, United States. It is the oldest and largest part of the University of Minnesota system and has the fourth-largest main campus student body in the United States, with 52,557...

 mascot is the gopher, a gofer
Gofer
A gofer or go-fer is an employee who is often sent on errands. "Gofer" reflects the likelihood of instructions to go for coffee, dry cleaning, or stamps, or to make other straightforward or familiar procurements. The term gofer originated in North America...

 (same sound) is an assistant who "goes for" things, and a gopher
Gopher (animal)
The term gopher as it is commonly used does not relate to any one species, but is a generic term used to describe any of several small burrowing rodents endemic to North America, including the pocket gopher , also called true gophers, and the ground squirrel , including Richardson's ground squirrel...

 burrows through the ground to reach a desired location.

Stagnation

The World Wide Web
World Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...

 was in its infancy in 1991, and Gopher services quickly became established. By the late 1990s, Gopher had largely ceased expanding. Several factors contributed to Gopher's stagnation:
  • In February 1993, the University of Minnesota
    University of Minnesota
    The University of Minnesota, Twin Cities is a public research university located in Minneapolis and St. Paul, Minnesota, United States. It is the oldest and largest part of the University of Minnesota system and has the fourth-largest main campus student body in the United States, with 52,557...

     announced that it would charge licensing fees for the use of its implementation of the Gopher server. As a consequence of this, some users were concerned that a licensing fee would also be charged for independent implementations. Users were scared away from Gopher technology, to the advantage of the Web, which CERN disclaimed ownership of. The University of Minnesota later re-licensed its Gopher software under the GNU GPL.
  • Gopher client functionality was quickly duplicated by early Web browsers, such as Mosaic
    Mosaic (web browser)
    Mosaic is the web browser credited with popularizing the World Wide Web. It was also a client for earlier protocols such as FTP, NNTP, and gopher. Its clean, easily understood user interface, reliability, Windows port and simple installation all contributed to making it the application that opened...

    , which subsumed the protocol as part of their functions.
  • Gopher has a more rigid structure compared to the free-form HTML
    HTML
    HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....

     of the Web. With Gopher, every document has a defined format and type, and the typical user navigates through a single server-defined menu system to get to a particular document. This can be quite different from the way a typical user might traverse documents on the Web.


Gopher remains in active use by its enthusiasts, and there have been attempts to revive the use of Gopher on modern platforms and mobile devices. One such attempt is The Overbite Project, which hosts various browser extensions and modern clients.

, there are approximately 150 gopher servers indexed by Veronica-2
Veronica (computer)
Veronica is a search engine system for the Gopher protocol, developed in 1992 by Steven Foster and Fred Barrie at the University of Nevada, Reno.Veronica is a constantly updated database of the names of almost every menu item on thousands of Gopher servers...

, reflecting a slow growth from 2007 when there were fewer than 100, although many are infrequently updated. A handful of new servers are set up every year by hobbyists — over 50 have been set up and added to Floodgap's list since 1999. A snapshot of Gopherspace as it was in 2007 was circulated on BitTorrent and is still available. Due to the simplicity of the Gopher protocol, setting up new servers or adding Gopher support to browsers is often done in a tongue in cheek manner, principally on April Fools' Day
April Fools' Day
April Fools' Day is celebrated in different countries around the world on April 1 every year. Sometimes referred to as All Fools' Day, April 1 is not a national holiday, but is widely recognized and celebrated as a day when many people play all kinds of jokes and foolishness...

.

Native Gopher support

Browser Currently Supported Supported from Supported until Notes
Camino
Camino
Camino is a free, open source, GUI-based Web browser based on Mozilla's Gecko layout engine and specifically designed for the Mac OS X operating system...

1.0 current Always uses port 70.
Classilla
Classilla
Classilla is a Gecko-based web browser for PowerPC-based classic Macintosh systems, essentially an updated descendant of the now-defunct Mozilla Application Suite by way of the Mac OS port maintained in the now-aborted project...

9.0 current Hardcoded to port 70 from 9.0-9.2; whitelisted ports from 9.2.1.
cURL
CURL
cURL is a computer software project providing a library and command-line tool for transferring data using various protocols. The cURL project produces two products, libcurl and cURL...

7.21.2 (October 2010) current cURL is a command-line file transfer utility
ELinks
ELinks
ELinks is a free text-based console web browser for Unix-like operating systems.It began in late 2001 as an Experimental fork by Petr Baudiš of the Links Web browser, hence the name...

Build option
Epiphany
Epiphany (web browser)
Epiphany is an open source web browser for the GNOME desktop environment. The browser is a descendant of Galeon, and was created after developer disagreements about Galeon's growing complexity...

2.26.3 Disabled after switch to WebKit
WebKit
WebKit is a layout engine designed to allow web browsers to render web pages. WebKit powers Google Chrome and Apple Safari and by October 2011 held over 33% of the browser market share between them. It is also used as the basis for the experimental browser included with the Amazon Kindle ebook...

Galeon
Galeon
Galeon is a web browser for GNOME based on Mozilla’s Gecko layout engine. Galeon’s self-declared mission was to deliver the web and only the web. Galeon was discontinued in September 2008....

current
Google Chrome
Google Chrome
Google Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or...

never An extension to automatically forward to Gopher proxies is available.
Internet Explorer
Internet Explorer
Windows Internet Explorer is a series of graphical web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems, starting in 1995. It was first released as part of the add-on package Plus! for Windows 95 that year...

1
Internet Explorer 1
Internet Explorer 1.0 is a graphical web browser that made its debut from Microsoft on August 16, 1995. It was a reworked version of Spyglass Mosaic which Microsoft had licensed, like many other companies initiating browser development, from Spyglass Inc. It came with Microsoft Plus! for Windows 95...

6.0
Internet Explorer 6
Internet Explorer 6 is the sixth major revision of Internet Explorer, a web browser developed by Microsoft for Windows operating systems...

 RTM
IE 6 requires registry patch to re-enable. Always uses port 70.
Internet Explorer for Mac
Internet Explorer for Mac
Internet Explorer for Mac was a proprietary web browser developed by Microsoft for the Macintosh platform. Initial versions were developed from the same code base as Internet Explorer for Windows...

 (discontinued)
5.2.3 PowerPC-only
K-Meleon
K-Meleon
K-Meleon is a web browser for the Microsoft Windows platform. Based on the same Gecko layout engine as Mozilla Firefox, K-Meleon uses native Windows application programming interface to create the user interface, instead of using Mozilla's cross-platform XML User Interface Language layer, and as...

current
Konqueror
Konqueror
Not to be confused with the Conqueror web browser.Konqueror is a web browser and file manager that provides file-viewer functionality for file systems such as local files, files on a remote ftp server and files in a disk image. It is a core part of the KDE desktop environment...

kio_gopher
lftp
Lftp
lftp is a command-line file transfer program for UNIX and Unix-like systems. It was written by Alexander Lukyanov, and is made available under the GNU General Public License....

current lftp is a command-line file transfer program
libwww
Libwww
libwww is a highly-modular client-side web API for Unix and Windows, and is also the name of the reference implementation of this API....

1.0c (December 1992) current libwww is an API
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...

 for internet applications
Line Mode Browser 1.1 (January 1992) current
Lynx
Lynx (web browser)
Lynx is a text-based web browser for use on cursor-addressable character cell terminals and is very configurable.-Usage:Browsing in Lynx consists of highlighting the chosen link using cursor keys, or having all links on a page numbered and entering the chosen link's number. Current versions support...

current Complete support
Mozilla Firefox
Mozilla Firefox
Mozilla Firefox is a free and open source web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. , Firefox is the second most widely used browser, with approximately 25% of worldwide usage share of web browsers...

0 3.6 Always uses port 70. Built-in support dropped from Firefox 4.0 onwards; can be added back with OverbiteFF.
NetSurf
NetSurf
NetSurf is an open source web browser which runs on a variety of platforms including RISC OS, AmigaOS and Unix-like systems. NetSurf has features that include tabbed browsing, text selection and PDF export...

Under development, based on the cURL
CURL
cURL is a computer software project providing a library and command-line tool for transferring data using various protocols. The cURL project produces two products, libcurl and cURL...

 fetcher.
OmniWeb
OmniWeb
OmniWeb is a proprietary Internet web browser developed and marketed by The Omni Group. It is available exclusively for Apple Inc.'s Mac OS X operating system...

5.9.2 (April 2009) current First WebKit
WebKit
WebKit is a layout engine designed to allow web browsers to render web pages. WebKit powers Google Chrome and Apple Safari and by October 2011 held over 33% of the browser market share between them. It is also used as the basis for the experimental browser included with the Amazon Kindle ebook...

 Browser to support Gopher
Opera
Opera (web browser)
Opera is a web browser and Internet suite developed by Opera Software with over 200 million users worldwide. The browser handles common Internet-related tasks such as displaying web sites, sending and receiving e-mail messages, managing contacts, chatting on IRC, downloading files via BitTorrent,...

never Opera 9.0 includes a proxy capability
Pavuk
Pavuk
Pavuk is a GPL opensource web mirror software, with both command line and X Window GUI. Win32 ports are also available....

current Pavuk is a web mirror (recursive download) software
Safari
Safari (web browser)
Safari is a web browser developed by Apple Inc. and included with the Mac OS X and iOS operating systems. First released as a public beta on January 7, 2003 on the company's Mac OS X operating system, it became Apple's default browser beginning with Mac OS X v10.3 "Panther". Safari is also the...

never
SeaMonkey
SeaMonkey
SeaMonkey is a free and open source cross-platform Internet suite. It is the continuation of the former Mozilla Application Suite, based on the same source code...

1.0 2.0.14 Always uses port 70. Built-in support dropped from SeaMonkey 2.1 onwards; compatible with OverbiteFF.


Browsers that do not natively support Gopher can still access servers using one of the available Gopher to HTTP gateways.

Gopher support was disabled in Internet Explorer
Internet Explorer
Windows Internet Explorer is a series of graphical web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems, starting in 1995. It was first released as part of the add-on package Plus! for Windows 95 that year...

 versions 5 and 6 for Windows in June 2002 by a patch meant to fix a security vulnerability in the browser's Gopher protocol handler; however, it can be re-enabled by editing the Windows registry
Windows registry
The Windows Registry is a hierarchical database that stores configuration settings and options on Microsoft Windows operating systems. It contains settings for low-level operating system components as well as the applications running on the platform: the kernel, device drivers, services, SAM, user...

. In Internet Explorer 7
Internet Explorer 7
Windows Internet Explorer 7 is a web browser released by Microsoft in October 2006. Internet Explorer 7 is part of a long line of versions of Internet Explorer and was the first major update to the browser in more than 5 years...

, Gopher support was removed on the WinINET level.

Gopher browser plugins

For Mozilla Firefox
Mozilla Firefox
Mozilla Firefox is a free and open source web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. , Firefox is the second most widely used browser, with approximately 25% of worldwide usage share of web browsers...

 and SeaMonkey
SeaMonkey
SeaMonkey is a free and open source cross-platform Internet suite. It is the continuation of the former Mozilla Application Suite, based on the same source code...

, OverbiteFF extends Gopher browsing and supports Firefox 4
Mozilla Firefox 4
Mozilla Firefox 4 is a version of the Firefox web browser, released on 22 March 2011. The first beta was made available on 6 July 2010; Release Candidate 2 was released on 18 March 2011. It was codenamed Tumucumaque, and has been confirmed as Firefox's last large release cycle...

. It includes support for accessing Gopher servers not on port 70 using a whitelist and for CSO/ph queries
CCSO Nameserver
A CCSO name-server or Ph protocol was an early form of database search on the web. In its most common form it was used to look up information such as phone numbers and e-mail addresses. Today this service has been largely replaced by LDAP. It was used mainly in the early-to-middle 1990s...

, and allows versions of Firefox and SeaMonkey that do not support Gopher natively to access Gopher servers. Plugins are also available for Konqueror
Konqueror
Not to be confused with the Conqueror web browser.Konqueror is a web browser and file manager that provides file-viewer functionality for file systems such as local files, files on a remote ftp server and files in a disk image. It is a core part of the KDE desktop environment...

 and a proxy-based extension for Google Chrome
Google Chrome
Google Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or...

.

Gopher clients for mobile devices

Some have suggested that the bandwidth-sparing simple interface of Gopher would be a good match for mobile phone
Mobile phone
A mobile phone is a device which can make and receive telephone calls over a radio link whilst moving around a wide geographic area. It does so by connecting to a cellular network provided by a mobile network operator...

s and personal digital assistants (PDAs), but so far, mobile adaptations of HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....

 and XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

 and other simplified content have proven more popular. The PyGopherd
PyGopherd
PyGopherd is a modern Internet Gopher server written in Python and is maintained by John Goerzen. In addition to support for RFC 1436 Gopher and Gopher+, PyGopherd also supports HTTP and WAP.-External links:...

 server provides a built-in WML
Website Meta Language
Website Meta Language is a free and extensible web designer's off-line HTML generation toolkit for Unix, distributed under the GNU General Public License...

 front-end to Gopher sites served with it. An application for Android 1.5+ is in development and was released in alpha stage. A Java ME
Java Platform, Micro Edition
Java Platform, Micro Edition, or Java ME, is a Java platform designed for embedded systems . Target devices range from industrial controls to mobile phones and set-top boxes...

 client is also available for compatible devices.

Other Gopher clients

Gopher was at its height of popularity during a time when there were still many equally competing computer architectures and operating systems. As such, there are several Gopher clients available for Acorn RISC OS, AmigaOS
AmigaOS
AmigaOS is the default native operating system of the Amiga personal computer. It was developed first by Commodore International, and initially introduced in 1985 with the Amiga 1000...

, Atari MiNT
MiNT
MiNT is a free software alternative operating system kernel for the Atari ST and its successors. Together with the free system components fVDI , XaAES , and TeraDesk , MiNT provides a free TOS compatible replacement OS that is capable of multitasking.MiNT was originally released by Eric Smith as...

, CMS
Conversational Monitor System
The Conversational Monitor System is a relatively simple interactive computing single-user operating system.* CMS is part of IBM's VM family, which runs on IBM mainframe computers...

, DOS
DOS
DOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...

, classic Mac OS, MVS
MVS
Multiple Virtual Storage, more commonly called MVS, was the most commonly used operating system on the System/370 and System/390 IBM mainframe computers...

, NeXT
NeXT
Next, Inc. was an American computer company headquartered in Redwood City, California, that developed and manufactured a series of computer workstations intended for the higher education and business markets...

, OS/2 Warp, most UNIX-like operating systems, VMS
OpenVMS
OpenVMS , previously known as VAX-11/VMS, VAX/VMS or VMS, is a computer server operating system that runs on VAX, Alpha and Itanium-based families of computers. Contrary to what its name suggests, OpenVMS is not open source software; however, the source listings are available for purchase...

, Windows 3.x
Windows 3.1x
Windows 3.1x is a series of 16-bit operating systems produced by Microsoft for use on personal computers. The series began with Windows 3.1, which was first sold during March 1992 as a successor to Windows 3.0...

, and Windows 9x
Windows 9x
Windows 9x is a generic term referring to a series of Microsoft Windows computer operating systems produced since 1995, which were based on the original and later modified Windows 95 kernel...

. GopherVR
GopherVR
GopherVR is an enhanced Internet Gopher client that includes a 3D visualization tool for viewing resource collections as 3D scenes.In 1995, the Gopher developers at the University of Minnesota released GopherVR...

 was a client designed for 3D visualization, and there is even a Gopher client MOO object
MOO
A MOO is a text-based online virtual reality system to which multiple users are connected at the same time.The term MOO is used in two distinct, but related, senses...

. The majority of these clients are hard coded to work on TCP
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...

 port 70.

Gopher to HTTP gateways

Users of Web browsers that have incomplete or no support for Gopher can access content on Gopher servers via a server gateway or proxy server
Proxy server
In computer networks, a proxy server is a server that acts as an intermediary for requests from clients seeking resources from other servers. A client connects to the proxy server, requesting some service, such as a file, connection, web page, or other resource available from a different server...

 that converts Gopher menus into HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....

; known proxies are the Floodgap Public Gopher proxy, Gopher Proxy, and the WikkaGopher proxy. Similarly, certain server packages such as GN and PyGopherd
PyGopherd
PyGopherd is a modern Internet Gopher server written in Python and is maintained by John Goerzen. In addition to support for RFC 1436 Gopher and Gopher+, PyGopherd also supports HTTP and WAP.-External links:...

 have built-in Gopher to HTTP interfaces. Squid Proxy software gateways any gopher:// URL to HTTP content, enabling any browser or web agent to access gopher content easily.

Gopher characteristics

As part of its design goals, Gopher functions and appears much like a mountable read-only global network file system
Distributed file system
Network file system may refer to:* A distributed file system, which is accessed over a computer network* Network File System , a specific brand of distributed file system...

 (and software, such as gopherfs, is available that can actually mount a Gopher server as a FUSE
Filesystem in Userspace
Filesystem in Userspace is a loadable kernel module for Unix-like computer operating systems that lets non-privileged users create their own file systems without editing kernel code...

 resource). At a minimum, whatever a person can do with data files on a CD-ROM
CD-ROM
A CD-ROM is a pre-pressed compact disc that contains data accessible to, but not writable by, a computer for data storage and music playback. The 1985 “Yellow Book” standard developed by Sony and Philips adapted the format to hold any form of binary data....

, they can do on Gopher.

A Gopher system consists of a series of hierarchical hyperlinkable menus. The choice of menu items and titles is controlled by the administrator of the server.
Similar to a file on a Web server, a file on a Gopher server can be linked to as a menu item from any other Gopher server. Many servers take advantage of this inter-server linking to provide a directory of other servers that the user can access.

Protocol

The Gopher protocol was first described in RFC 1436. IANA
Internet Assigned Numbers Authority
The Internet Assigned Numbers Authority is the entity that oversees global IP address allocation, autonomous system number allocation, root zone management in the Domain Name System , media types, and other Internet Protocol-related symbols and numbers...

 has assigned TCP
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...

 port 70 to the Gopher protocol.

The protocol is simple to negotiate, making it possible to browse without using a client. A standard gopher session may therefore appear as follows:


/Reference
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 +
1Online Libraries /Reference/Online Libraries gopher.quux.org 70 +
1RFCs: Internet Standards /Computers/Standards and Specs/RFC gopher.quux.org 70
1U.S. Gazetteer /Reference/U.S. Gazetteer gopher.quux.org 70 +
iThis file contains information on United States fake (NULL) 0
icities, counties, and geographical areas. It has fake (NULL) 0
ilatitude/longitude, population, land and water area, fake (NULL) 0
iand ZIP codes. fake (NULL) 0
i fake (NULL) 0
iTo search for a city, enter the city's name. To search fake (NULL) 0
ifor a county, use the name plus County -- for instance, fake (NULL) 0
iDallas County. fake (NULL) 0


Here, the client has established a TCP connection with the server on port 70, the standard gopher port. The client then sends a string followed by a carriage return followed by a line feed
Newline
In computing, a newline, also known as a line break or end-of-line marker, is a special character or sequence of characters signifying the end of a line of text. The name comes from the fact that the next character after the newline will appear on a new line—that is, on the next line below the...

 (a "CR + LF" sequence). This is the selector, which identifies the document to be retrieved. If the item selector were an empty line, the default directory would be selected. The server then replies with the requested item and closes the connection. According to the protocol, before the connection is closed, the server should send a full-stop (i.e., a period character) on a line by itself. However, as is the case here, not all servers conform to this part of the protocol and the server may close the connection without returning the final full-stop.

In this example, the item sent back is a gopher menu, a directory consisting of a sequence of lines each of which describes an item that can be retrieved. Most clients will display these as hypertext
Hypertext
Hypertext is text displayed on a computer or other electronic device with references to other text that the reader can immediately access, usually by a mouse click or keypress sequence. Apart from running text, hypertext may contain tables, images and other presentational devices. Hypertext is the...

 links, and so allow the user to navigate through gopherspace by following the links.

All lines in a gopher menu are terminated by "CR + LF", and consist of five fields: the item type as the very first character (see below), the display string (i.e., the description text to display), a selector (i.e., a file-system pathname), host name (i.e., the domain name of the server on which the item resides), and port (i.e., the port number used by that server). The item type and display string are joined without a space; the other fields are separated by the tab character.

Because of the simplicity of the Gopher protocol, tools such as netcat
Netcat
Netcat is a computer networking service for reading from and writing network connections using TCP or UDP. Netcat is designed to be a dependable “back-end” device that can be used directly or easily driven by other programs and scripts...

 make it possible to download Gopher content easily from the command line:
echo jacks/jack.exe | nc gopher.example.org 70 > jack.exe
The protocol is also supported by cURL
CURL
cURL is a computer software project providing a library and command-line tool for transferring data using various protocols. The cURL project produces two products, libcurl and cURL...

 as of 7.21.2-DEV.

Gopher item types

Item types are described in gopher menus by a single number or (case specific) letter and act as hints to the client to tell it how to handle a specific media type in a menu, analogous to a MIME type. Every client necessarily must understand itemtypes 0 and 1. All known clients understand item types 0 through 9, g, and s, and all but the very oldest also understand file-types h and i.
  • 0 = plain text
    Plain text
    In computing, plain text is the contents of an ordinary sequential file readable as textual material without much processing, usually opposed to formatted text....

     file
  • 1 = directory
    Directory (file systems)
    In computing, a folder, directory, catalog, or drawer, is a virtual container originally derived from an earlier Object-oriented programming concept by the same name within a digital file system, in which groups of computer files and other folders can be kept and organized.A typical file system may...

     menu listing
  • 2 = CSO search
    CCSO Nameserver
    A CCSO name-server or Ph protocol was an early form of database search on the web. In its most common form it was used to look up information such as phone numbers and e-mail addresses. Today this service has been largely replaced by LDAP. It was used mainly in the early-to-middle 1990s...

     query
  • 3 = error message
  • 4 = BinHex encoded
    BinHex
    BinHex, short for "binary-to-hexadecimal", is a binary-to-text encoding system that was used on the Mac OS for sending binary files through e-mail. It is similar to Uuencode, but combined both "forks" of the Mac file system together, along with extended file information...

     text file
  • 5 = binary archive
    File archiver
    A file archiver is a computer program that combines a number of files together into one archive file, or a series of archive files, for easier transportation or storage...

     file
  • 6 = UUEncoded text file
  • 7 = search engine query
  • 8 = telnet session
    TELNET
    Telnet is a network protocol used on the Internet or local area networks to provide a bidirectional interactive text-oriented communications facility using a virtual terminal connection...

     pointer
  • 9 = binary file
    Binary file
    A binary file is a computer file which may contain any type of data, encoded in binary form for computer storage and processing purposes; for example, computer document files containing formatted text...

  • g = GIF image
  • h = HTML
    HTML
    HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....

     file
  • i = informational message
  • I = Image file of unspecified format. Client decides how to display. Often used for JPEG images
    JPEG
    In computing, JPEG . The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and image quality. JPEG typically achieves 10:1 compression with little perceptible loss in image quality....

    .
  • s = Audio file format, primarily a WAV
    WAV
    Waveform Audio File Format , is a Microsoft and IBM audio file format standard for storing an audio bitstream on PCs...

     file
  • T = tn3270 session pointer


A list of additional file-type definitions has continued to evolve over time, with some clients supporting them and others not. As such, many servers assign the generic 9 to every binary file, hoping that the client's computer will be able to correctly process the file.

URL links

Historically, to create a link to a Web server, "GET /" was used as a pseudo-selector to simulate an HTTP client request. John Goerzen
John Goerzen
John Goerzen is a prominent member of the Internet Gopher community and a former president/chairman of Software in the Public Interest. He is the developer for the PyGopherd Gopher server and runs [gopher://gopher.quux.org/ gopher.quux.org], one of the largest maintained Gopher servers...

 created an addition to the Gopher protocol, commonly referred to as "URL
Uniform Resource Locator
In computing, a uniform resource locator or universal resource locator is a specific character string that constitutes a reference to an Internet resource....

 links", that allows links to any protocol that supports URLs. For example, to create a link to http://gopher.quux.org/, the item type is "h", the display string is the title of the link, the item selector is "URL:http://gopher.quux.org/", and the domain and port are that of the originating Gopher server (so that clients that do not support URL links will query the server and receive an HTML redirection page).

Related technology

The master Gopherspace search engine is Veronica. Veronica offers a keyword search of all the public Internet Gopher server menu titles. A Veronica search produces a menu of Gopher items, each of which is a direct pointer to a Gopher data source. Individual Gopher servers may also use localized search engines specific to their content such as Jughead and Jugtail.

GopherVR
GopherVR
GopherVR is an enhanced Internet Gopher client that includes a 3D visualization tool for viewing resource collections as 3D scenes.In 1995, the Gopher developers at the University of Minnesota released GopherVR...

 is a 3D virtual reality variant of the original Gopher system.

Gopher server software

Because the protocol is trivial to implement in a basic fashion, there are many server packages still available, and some are still maintained.
  • Aftershock — written in Java
    Java (programming language)
    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

    .
  • Bucktooth
    Bucktooth
    Bucktooth is one of the modern servers for Internet Gopher written by Cameron Kaiser. Instead of using the .link and .cap files found in the University of Minnesota gopherd, bucktooth uses the gophermap format....

     — modern gopher server written in Perl
    Perl
    Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

    .
  • [gopher://gopher.r-36.net/1/geomyidae.gph Geomyidae] — written in C
    C (programming language)
    C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

    . MIT X Consortium License
    MIT License
    The MIT License is a free software license originating at the Massachusetts Institute of Technology . It is a permissive license, meaning that it permits reuse within proprietary software provided all copies of the licensed software include a copy of the MIT License terms...

    .
  • GN
  • GoFish
  • [gopher://gophernicus.org/1/software/gophernicus/server/ Gophernicus] — Linux
    Linux
    Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

    , BSD License.
  • gophrier - An open source gopher server written in C
  • [gopher://zzo38computer.cjb.net/1gophserv GOPHSERV] — cross-platform, GPLv3, FreeBASIC
    FreeBASIC
    FreeBASIC is a free/open source , 32-bit BASIC compiler for Microsoft Windows, protected-mode DOS , Linux, FreeBSD and Xbox....

    .
  • [gopher://gopher.pcrpg.org Gopher Cannon] — Windows (Win32/Win64
    Windows API
    The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces available in the Microsoft Windows operating systems. It was formerly called the Win32 API; however, the name "Windows API" more accurately reflects its roots in 16-bit Windows and its support on...

    ), freeware, written in .NET 3.5
  • [gopher://gopher.sacrideo.us/1goscher Goscher] — written in Scheme.
  • [gopher://gopher.viste-family.net/1/grumpy Grumpy] — Linux
    Linux
    Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

    , GPLv3, written in FreeBASIC
    FreeBASIC
    FreeBASIC is a free/open source , 32-bit BASIC compiler for Microsoft Windows, protected-mode DOS , Linux, FreeBSD and Xbox....

    .
  • [gopher://port70.net/1mgod mgod]
  • PyGopherd
    PyGopherd
    PyGopherd is a modern Internet Gopher server written in Python and is maintained by John Goerzen. In addition to support for RFC 1436 Gopher and Gopher+, PyGopherd also supports HTTP and WAP.-External links:...

     — modern gopher+ server written in Python
    Python (programming language)
    Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

    .
  • PyGS
  • [gopher://gopher.viste-family.net/1/projects/motsognir/ Motsognir open-source gopher server]

  • gopherfs — a gopher filesystem FUSE abstraction

See also

  • Veronica
    Veronica (computer)
    Veronica is a search engine system for the Gopher protocol, developed in 1992 by Steven Foster and Fred Barrie at the University of Nevada, Reno.Veronica is a constantly updated database of the names of almost every menu item on thousands of Gopher servers...

     — the search engine system for the Gopher protocol, an acronym for "Very Easy Rodent-Oriented Net-wide Index to Computer Archives"
  • Gopher+
    Gopher+
    Gopher+ is a forward compatible enhancement to the RFC [ftp://ftp.ietf.org/rfc/rfc1436.txt 1436] Gopher protocol. Gopher+ works by sending extra data between the client and the server.-How it works:...

     — early proposed extensions to the Gopher protocol
  • GopherVR
    GopherVR
    GopherVR is an enhanced Internet Gopher client that includes a 3D visualization tool for viewing resource collections as 3D scenes.In 1995, the Gopher developers at the University of Minnesota released GopherVR...

  • Jugtail — an alternative search engine system for the Gopher protocol. Jugtail was formerly known as Jughead.
  • SDF Public Access Unix System
    SDF Public Access Unix System
    Super Dimension Fortress is one of the oldest and largest nonprofit public access UNIX systems on the Internet....

     — a non-profit organization which provides free Gopher hosting
  • Phlog
    Phlog
    A phlog, also called an rlog, is a type of daybook, similar to a blog, that runs off a Gopher protocol server. These phlogs are typically hosted off home servers running some sort of UNIX operating system, because a user account on the server is usually required to update the content...

     — The gopher version of a weblog
  • Wide area information server
    Wide area information server
    Wide Area Information Servers or WAIS is a client–server text searching system that uses the ANSI Standard Z39.50 Information Retrieval Service Definition and Protocol Specifications for Library Applications" to search index databases on remote computers...

    — a search engine whose popularity was contemporary with Gopher


External links


Standards

  • IANA Port Number allocations
  • RFC 1436 — The Internet Gopher Protocol (a distributed document search and retrieval protocol)
  • RFC 1580 — Guide to Network Resource Tools
  • RFC 1689 — Networked Information Retrieval: Tools and Groups
  • RFC 1738 — Uniform Resource Locators (URL)
  • RFC 1808 — Relative Uniform Resource Locators
  • RFC 2396 — Uniform Resource Identifiers (URI): Generic Syntax
  • RFC 4266 — The gopher URI Scheme
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK