1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333
|
<pre>Network Working Group P. Hoffman
Request for Comments: 4266 VPN Consortium
Obsoletes: <a href="./rfc1738">1738</a> November 2005
Category: Standards Track
<span class="h1">The gopher URI Scheme</span>
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).
Abstract
This document specifies the gopher Uniform Resource Identifier (URI)
scheme that was originally specified in <a href="./rfc1738">RFC 1738</a>. The purpose of
this document is to allow <a href="./rfc1738">RFC 1738</a> to be made obsolete while keeping
the information about the scheme on standards track.
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
URIs were previously defined in <a href="./rfc2396">RFC 2396</a> [<a href="./rfc2396" title=""Uniform Resource Identifiers (URI): Generic Syntax"">RFC2396</a>], which was updated
by <a href="./rfc3986">RFC 3986</a> [<a href="./rfc3986" title=""Uniform Resource Identifier (URI): Generic Syntax"">RFC3986</a>]. Those documents also specify how to define
schemes for URIs.
The first definition for many URI schemes appeared in <a href="./rfc1738">RFC 1738</a>
[<a href="./rfc1738" title=""Uniform Resource Locators (URL)"">RFC1738</a>]. 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.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Scheme Definition</span>
The gopher URL scheme is used to designate Internet resources
accessible using the Gopher protocol.
The base Gopher protocol is described in <a href="./rfc1436">RFC 1436</a> [<a href="./rfc1436" title=""The Internet Gopher Protocol (a distributed document search and retrieval protocol)"">RFC1436</a>] 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
<span class="grey">Hoffman Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc4266">RFC 4266</a> The gopher URI Scheme November 2005</span>
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.
<span class="h3"><a class="selflink" id="section-2.1" href="#section-2.1">2.1</a>. Gopher URL Syntax</span>
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 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.
<span class="h3"><a class="selflink" id="section-2.2" href="#section-2.2">2.2</a>. Specifying URLs for Gopher Search Engines</span>
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.
<span class="grey">Hoffman Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc4266">RFC 4266</a> The gopher URI Scheme November 2005</span>
<span class="h3"><a class="selflink" id="section-2.3" href="#section-2.3">2.3</a>. URL Syntax for Gopher+ Items</span>
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.
<span class="h3"><a class="selflink" id="section-2.4" href="#section-2.4">2.4</a>. Default Gopher+ Data Representation</span>
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 that 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, and
a Gopher+ string containing only a "?" refers to an item with a
Gopher electronic form associated with it.
<span class="h3"><a class="selflink" id="section-2.5" href="#section-2.5">2.5</a>. Gopher+ Items with Electronic Forms</span>
Gopher+ items that 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.
<span class="h3"><a class="selflink" id="section-2.6" href="#section-2.6">2.6</a>. Gopher+ Item Attribute Collections</span>
To refer to the Gopher+ attributes of an item, the Gopher URL's
Gopher+ string consists of "!" or "$". "!" refers to all of a Gopher+
item's attributes. "$" refers to all the item attributes for all
items in a Gopher directory.
<span class="grey">Hoffman Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc4266">RFC 4266</a> The gopher URI Scheme November 2005</span>
<span class="h3"><a class="selflink" id="section-2.7" href="#section-2.7">2.7</a>. Referring to Specific Gopher+ Attributes</span>
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.
<span class="h3"><a class="selflink" id="section-2.8" href="#section-2.8">2.8</a>. URL Syntax for Gopher+ Alternate Views</span>
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.
<span class="h3"><a class="selflink" id="section-2.9" href="#section-2.9">2.9</a>. URL Syntax for Gopher+ Electronic Forms</span>
The gopher+_string for a URL that refers to an item referenced by a
Gopher+ electronic form (an ASK block) filled out with specific
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>
<span class="grey">Hoffman Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc4266">RFC 4266</a> The gopher URI Scheme November 2005</span>
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Security Considerations</span>
There are many security considerations for URI schemes discussed in
[<a href="./rfc3986" title=""Uniform Resource Identifier (URI): Generic Syntax"">RFC3986</a>]. The Gopher protocol uses passwords in the clear for
authentication, and offers no privacy, both of which are considered
extremely unsafe in current practice.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Informative References</span>
[Gopher+] Anklesaria, F., et al., "Gopher+: Upward compatible
enhancements to the Internet Gopher protocol", University
of Minnesota, July 1993, <<a href="ftp://boombox.micro.umn.edu/pub/">ftp://boombox.micro.umn.edu/pub/</a>
gopher/gopher_protocol/Gopher+/Gopher+.txt>
[<a id="ref-RFC1738">RFC1738</a>] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform
Resource Locators (URL)", <a href="./rfc1738">RFC 1738</a>, December 1994.
[<a id="ref-RFC2396">RFC2396</a>] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", <a href="./rfc2396">RFC 2396</a>,
August 1998.
[<a id="ref-RFC3986">RFC3986</a>] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
<a href="./rfc3986">RFC 3986</a>, January 2005.
[<a id="ref-RFC1436">RFC1436</a>] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D.,
Torrey, D., and B. Albert, "The Internet Gopher Protocol
(a distributed document search and retrieval protocol)",
<a href="./rfc1436">RFC 1436</a>, March 1993.
Author's Address
Paul Hoffman
VPN Consortium
127 Segre Place
Santa Cruz, CA 95060
US
EMail: paul.hoffman@vpnc.org
<span class="grey">Hoffman Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc4266">RFC 4266</a> The gopher URI Scheme November 2005</span>
Full Copyright Statement
Copyright (C) The Internet Society (2005).
This document is subject to the rights, licenses and restrictions
contained in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a>, and except as set forth therein, the authors
retain all their rights.
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.
Intellectual Property
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 <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and <a href="https://www.rfc-editor.org/bcp/bcp79">BCP 79</a>.
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
<a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>.
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 ietf-
ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Hoffman Standards Track [Page 6]
</pre>
|