Network Working Group                                         P. Hoffman
Internet-Draft                                            VPN Consortium
Expires: July 2, 2005                                       January 2005


                        The gopher URI Scheme
                   draft-hoffman-gopher-uri-03.txt

Status of this Memo

  This document is an Internet-Draft and is subject to all provisions
  of section 3 of RFC 3667.  By submitting this Internet-Draft, each
  author represents that any applicable patent or other IPR claims of
  which he or she is aware have been or will be disclosed, and any of
  which he or she become aware will be disclosed, in accordance with
  RFC 3668.

  Internet-Drafts are working documents of the Internet Engineering
  Task Force (IETF), its areas, and its working groups.  Note that
  other groups may also distribute working documents as
  Internet-Drafts.

  Internet-Drafts are draft documents valid for a maximum of six months
  and may be updated, replaced, or obsoleted by other documents at any
  time.  It is inappropriate to use Internet-Drafts as reference
  material or to cite them other than as "work in progress."

  The list of current Internet-Drafts can be accessed at
  http://www.ietf.org/ietf/1id-abstracts.txt.

  The list of Internet-Draft Shadow Directories can be accessed at
  http://www.ietf.org/shadow.html.

  This Internet-Draft will expire on July 2, 2005.

Copyright Notice

  Copyright (C) The Internet Society (2005).

Abstract

  This document specifies the gopher1 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



Hoffman                   Expires July 2, 2005                  [Page 1]

Internet-Draft           The gopher URI Scheme              January 2005


  by draft-fielding-uri-rfc2396bis [2396bis].  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
  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:

     gopher://<host>:<port>/<gopher-path>

  where <gopher-path> is one of:

     <gophertype><selector>
     <gophertype><selector>%09<search>
     <gophertype><selector>%09<search>%09<gopher+_string>

  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 which 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



Hoffman                   Expires July 2, 2005                  [Page 2]

Internet-Draft           The gopher URI Scheme              January 2005


  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.

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, arbitrary sets of attributes, and 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
  Gopher+ items are tagged with either a "+" (denoting Gopher+ items)
  or a "?" (denoting Gopher+ items which have a +ASK form associated
  with them).  A Gopher URL with a Gopher+ string consisting of only a
  "+" refers to the default view (data representation) of the item
  while a Gopher+ string containing only a "?" refer to an item with a
  Gopher electronic form associated with it.






Hoffman                   Expires July 2, 2005                  [Page 3]

Internet-Draft           The gopher URI Scheme              January 2005


2.5  Gopher+ items with electronic forms

  Gopher+ items which have a +ASK associated with them (i.e.  Gopher+
  items tagged with a "?") require the client to fetch the item's +ASK
  attribute to get the form definition, and then ask the user to fill
  out the form and return the user's responses along with the selector
  string to retrieve the item.  Gopher+ clients know how to do this but
  depend on the "?" tag in the Gopher+ item description to know when to
  handle this case.  The "?" is used in the Gopher+ string to be
  consistent with Gopher+ protocol's use of this symbol.

2.6  Gopher+ item attribute collections

  To refer to the Gopher+ attributes of an item, the Gopher URL's
  Gopher+ string consists of "!" or "$".  "!" refers to the all of a
  Gopher+ item's attributes.  "$" refers to all the item attributes for
  all items in a Gopher directory.

2.7  Referring to specific Gopher+ attributes

  To refer to specific attributes, the URL's gopher+_string is
  "!<attribute_name>" or "$<attribute_name>".  For example, to refer to
  the attribute containing the abstract of an item, the gopher+_string
  would be "!+ABSTRACT".

  To refer to several attributes, the gopher+_string consists of the
  attribute names separated by coded spaces.  For example,
  "!+ABSTRACT%20+SMELL" refers to the +ABSTRACT and +SMELL attributes
  of an item.

2.8  URL syntax for Gopher+ alternate views

  Gopher+ allows for optional alternate data representations (alternate
  views) of items.  To retrieve a Gopher+ alternate view, a Gopher+
  client sends the appropriate view and language identifier (found in
  the item's +VIEW attribute).  To refer to a specific Gopher+
  alternate view, the URL's Gopher+ string would be in the form:

     +<view_name>%20<language_name>

  For example, a Gopher+ string of "+application/postscript%20Es_ES"
  refers to the Spanish language postscript alternate view of a Gopher+
  item.

2.9  URL syntax for Gopher+ electronic forms

  The gopher+_string for a URL that refers to an item referenced by a
  Gopher+ electronic form (an ASK block) filled out with specific



Hoffman                   Expires July 2, 2005                  [Page 4]

Internet-Draft           The gopher URI Scheme              January 2005


  values is a coded version of what the client sends to the server.
  The gopher+_string is of the form:

     +%091%0D%0A+-1%0D%0A<ask_item1_value>%0D%0A
     <ask_item2_value>%0D%0A.%0D%0A

  To retrieve this item, the Gopher client sends the following text to
  the Gopher server.

     <a_gopher_selector><tab>+<tab>1<cr><lf>
     +-1<cr><lf>
     <ask_item1_value><cr><lf>
     <ask_item2_value><cr><lf>
     .<cr><lf>

3.  Security Considerations

  There are many security considerations for URI schemes discussed in
  [2396bis].  The gopher protocol uses passwords in the clear for
  authentication, and offers no privacy, both of which are considered
  extremely unsafe in current practice.

4  Informative References

  [RFC1738]  Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform
             Resource Locators (URL)", RFC 1738, December 1994.

  [RFC2396]  Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
             Resource Identifiers (URI): Generic Syntax", RFC 2396,
             August 1998.

  [2396bis]  Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
             Resource Identifiers (URI): Generic Syntax", work in
             progress, draft-fielding-uri-rfc2396bis-nn.txt.

  [RFC1436]  Anklesaria, F., McCahill, M., Lindner, P., Johnson, D.,
             Torrey, D. and B. Alberti, "The Internet Gopher Protocol
             (a distributed document search and retrieval protocol)",
             RFC 1436, March 1993.












Hoffman                   Expires July 2, 2005                  [Page 5]

Internet-Draft           The gopher URI Scheme              January 2005


Author's Address

  Paul Hoffman
  VPN Consortium
  127 Segre Place
  Santa Cruz, CA  95060
  US

  EMail: [email protected]










































Hoffman                   Expires July 2, 2005                  [Page 6]

Internet-Draft           The gopher URI Scheme              January 2005


Intellectual Property Statement

  The IETF takes no position regarding the validity or scope of any
  Intellectual Property Rights or other rights that might be claimed to
  pertain to the implementation or use of the technology described in
  this document or the extent to which any license under such rights
  might or might not be available; nor does it represent that it has
  made any independent effort to identify any such rights.  Information
  on the procedures with respect to rights in RFC documents can be
  found in BCP 78 and BCP 79.

  Copies of IPR disclosures made to the IETF Secretariat and any
  assurances of licenses to be made available, or the result of an
  attempt made to obtain a general license or permission for the use of
  such proprietary rights by implementers or users of this
  specification can be obtained from the IETF on-line IPR repository at
  http://www.ietf.org/ipr.

  The IETF invites any interested party to bring to its attention any
  copyrights, patents or patent applications, or other proprietary
  rights that may cover technology that may be required to implement
  this standard.  Please address the information to the IETF at
  [email protected].


Disclaimer of Validity

  This document and the information contained herein are provided on an
  "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
  OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
  ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
  INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
  INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
  WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Copyright Statement

  Copyright (C) The Internet Society (2005).  This document is subject
  to the rights, licenses and restrictions contained in BCP 78, and
  except as set forth therein, the authors retain all their rights.


Acknowledgment

  Funding for the RFC Editor function is currently provided by the
  Internet Society.




Hoffman                   Expires July 2, 2005                  [Page 7]