The gopher URI Scheme
RFC 4266

Document Type RFC - Proposed Standard (November 2005; No errata)
Obsoletes RFC 1738
Was draft-hoffman-gopher-uri (individual in app area)
Author Paul Hoffman 
Last updated 2013-03-02
Stream Internet Engineering Task Force (IETF)
Formats plain text html pdf htmlized (tools) htmlized bibtex
Stream WG state (None)
Document shepherd No shepherd assigned
IESG IESG state RFC 4266 (Proposed Standard)
Action Holders
Consensus Boilerplate Unknown
Telechat date
Responsible AD Ted Hardie
Send notices to (None)
Network Working Group                                         P. Hoffman
Request for Comments: 4266                                VPN Consortium
Obsoletes: 1738                                            November 2005
Category: Standards Track

                         The gopher URI Scheme

Status of This Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2005).


   This document specifies the gopher Uniform Resource Identifier (URI)
   scheme that was originally specified in RFC 1738.  The purpose of
   this document is to allow RFC 1738 to be made obsolete while keeping
   the information about the scheme on standards track.

1.  Introduction

   URIs were previously defined in RFC 2396 [RFC2396], which was updated
   by RFC 3986 [RFC3986].  Those documents also specify how to define
   schemes for URIs.

   The first definition for many URI schemes appeared in RFC 1738
   [RFC1738].  Because that document has been made obsolete, this
   document copies the gopher URI scheme from it to allow that material
   to remain on standards track.

2.  Scheme Definition

   The gopher URL scheme is used to designate Internet resources
   accessible using the Gopher protocol.

   The base Gopher protocol is described in RFC 1436 [RFC1436] and
   supports items and collections of items (directories).  The Gopher+
   protocol is a set of upward-compatible extensions to the base Gopher
   protocol and is described in [Gopher+].  Gopher+ supports associating

Hoffman                     Standards Track                     [Page 1]
RFC 4266                 The gopher URI Scheme             November 2005

   arbitrary sets of attributes and alternate data representations with
   Gopher items.  Gopher URLs accommodate both Gopher and Gopher+ items
   and item attributes.

   Historical note: The Gopher protocol was widely implemented in the
   early 1990s, but few Gopher servers are in use today.

2.1.  Gopher URL Syntax

   A Gopher URL takes the form:


   where <gopher-path> is one of:


   If :<port> is omitted, the port defaults to 70. <gophertype> is a
   single-character field to denote the Gopher type of the resource to
   which the URL refers.  The entire <gopher-path> may also be empty, in
   which case the delimiting "/" is also optional and the <gophertype>
   defaults to "1".

   <selector> is the Gopher selector string.  In the Gopher protocol,
   Gopher selector strings are a sequence of octets that may contain any
   octets except 09 hexadecimal (US-ASCII HT or tab), 0A hexadecimal
   (US-ASCII character LF), and 0D (US-ASCII character CR).

   Gopher clients specify which item to retrieve by sending the Gopher
   selector string to a Gopher server.

   Within the <gopher-path>, no characters are reserved.

   Note that some Gopher <selector> strings begin with a copy of the
   <gophertype> character, in which case that character will occur twice
   consecutively.  The Gopher selector string may be an empty string;
   this is how Gopher clients refer to the top-level directory on a
   Gopher server.

2.2.  Specifying URLs for Gopher Search Engines

   If the URL refers to a search to be submitted to a Gopher search
   engine, the selector is followed by an encoded tab (%09) and the
   search string.  To submit a search to a Gopher search engine, the
   Gopher client sends the <selector> string (after decoding), a tab,
   and the search string to the Gopher server.

Hoffman                     Standards Track                     [Page 2]
RFC 4266                 The gopher URI Scheme             November 2005

2.3.  URL Syntax for Gopher+ Items

   Historical note: Gopher+ was uncommon even when Gopher was popular.

   URLs for Gopher+ items have a second encoded tab (%09) and a Gopher+
   string.  Note that in this case, the %09<search> string must be
   supplied, although the <search> element may be the empty string.

   The <gopher+_string> is used to represent information required for
   retrieval of the Gopher+ item.  Gopher+ items may have alternate
   views and arbitrary sets of attributes, and they may have electronic
   forms associated with them.

   To retrieve the data associated with a Gopher+ URL, a client will
   connect to the server and send the Gopher selector, followed by a tab
   and the search string (which may be empty), followed by a tab and the
   Gopher+ commands.

2.4.  Default Gopher+ Data Representation

   When a Gopher server returns a directory listing to a client, the
Show full document text