OSDN Git Service

9716efa769f546540bf13fca4025b4b9ae585927
[linuxjm/LDP_man-pages.git] / draft / man7 / uri.7
1 .\" (C) Copyright 1999-2000 David A. Wheeler (dwheeler@dwheeler.com)
2 .\"
3 .\" %%%LICENSE_START(VERBATIM)
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
7 .\"
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
12 .\"
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein.  The author(s) may not
17 .\" have taken the same level of care in the production of this manual,
18 .\" which is licensed free of charge, as they might when working
19 .\" professionally.
20 .\"
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
23 .\" %%%LICENSE_END
24 .\"
25 .\" Fragments of this document are directly derived from IETF standards.
26 .\" For those fragments which are directly derived from such standards,
27 .\" the following notice applies, which is the standard copyright and
28 .\" rights announcement of The Internet Society:
29 .\"
30 .\" Copyright (C) The Internet Society (1998).  All Rights Reserved.
31 .\" This document and translations of it may be copied and furnished to
32 .\" others, and derivative works that comment on or otherwise explain it
33 .\" or assist in its implementation may be prepared, copied, published
34 .\" and distributed, in whole or in part, without restriction of any
35 .\" kind, provided that the above copyright notice and this paragraph are
36 .\" included on all such copies and derivative works.  However, this
37 .\" document itself may not be modified in any way, such as by removing
38 .\" the copyright notice or references to the Internet Society or other
39 .\" Internet organizations, except as needed for the purpose of
40 .\" developing Internet standards in which case the procedures for
41 .\" copyrights defined in the Internet Standards process must be
42 .\" followed, or as required to translate it into languages other than English.
43 .\"
44 .\" Modified Fri Jul 25 23:00:00 1999 by David A. Wheeler (dwheeler@dwheeler.com)
45 .\" Modified Fri Aug 21 23:00:00 1999 by David A. Wheeler (dwheeler@dwheeler.com)
46 .\" Modified Tue Mar 14 2000 by David A. Wheeler (dwheeler@dwheeler.com)
47 .\"
48 .\"*******************************************************************
49 .\"
50 .\" This file was generated with po4a. Translate the source file.
51 .\"
52 .\"*******************************************************************
53 .TH URI 7 2013\-05\-18 Linux "Linux Programmer's Manual"
54 .SH 名前
55 uri, url, urn \- uniform resource identifier (URI) (URL と URN も含めて)
56 .SH 書式
57 .nf
58 .HP 0.2i
59 URI = [ absoluteURI | relativeURI ] [ "#" fragment ]
60 .HP
61 absoluteURI = scheme ":" ( hierarchical_part | opaque_part )
62 .HP
63 relativeURI = ( net_path | absolute_path | relative_path ) [ "?" query ]
64 .HP
65 scheme = "http" | "ftp" | "gopher" | "mailto" | "news" | "telnet" |
66          "file" | "man" | "info" | "whatis" | "ldap" | "wais" | \&...
67 .HP
68 hierarchical_part = ( net_path | absolute_path ) [ "?" query ]
69 .HP
70 net_path = "//" authority [ absolute_path ]
71 .HP
72 absolute_path = "/"  path_segments
73 .HP
74 relative_path = relative_segment [ absolute_path ]
75 .fi
76 .SH 説明
77 .PP
78 Uniform Resource Identifier (URI)  は抽象的・物理的なリソース (web ページなど)
79 を識別するための短い文字列である。 Uniform Resource Locator (URL) は URI の一種で、
80 リソースの名前などの属性でではなく、 そのリソースに対応するアクセスメカニズムを通してリソースを指定する (つまりネットワーク上の「場所
81 (location)」を指定する)。 Uniform Resource Name (URN) は URI の一種で、
82 これは対象のリソースが廃棄されたり利用できなくなった場合にも、 グローバルに他と重なることなく永続しなければならない。
83 .PP
84 URI は、 web ブラウザなどのツールで ハイパーテキストリンクのリンク先を指定する時の標準的な方法である。 文字列
85 "http://www.kernelnotes.org" は URL である (従って URI でもある)。多くの人々は、 URL という言葉をほぼ
86 URI の 同義語として使っている (しかし技術的には URL は URI のサブセットである)。
87 .PP
88 URI は絶対的にも相対的にも指定できる。 絶対的な指定は、リソースをコンテクストに依存しないかたちで参照する。
89 相対的な指定は、リソースを現在のコンテクストからの差異によって記述する。 相対パス参照では、 "." および ".." だけのパス部分 (path
90 segment)  は特別な意味を持ち、 それぞれ「現在の階層レベル」および「現在の階層の一つ上のレベル」 として扱われる (UNIX
91 風のシステムと同様)。 コロン文字を含むパス部分は相対 URI パスの先頭に用いることはできない (つまり "this:that"
92 はダメ)。スキーム名と区別できないからである。 このような場合には ./ を前置すること (つまり "./this:that" とする)。 MS\-DOS
93 の子孫 (Microsoft Windows など) は、 デバイス名のコロンを URI では垂直バー ("|") に置き換える。 したがって "C:"
94 は "C|" となる。
95 .PP
96 フラグメント指定子 (fragment identifier) は、(もし含まれていれば)  リソース中の名前付けされた特定の部分 (フラグメント)
97 を参照する。 \(aq#\(aq 指定子以降の文字列がフラグメントを指定する。 \(aq#\(aq で始まる URI
98 は現在のリソース中のフラグメントを参照する。
99 .SS 使い方
100 URI のスキームには色々な種類があり、 それぞれ固有のルールや意味が追加されている。 しかしできるだけ統一したものにしようという努力もなされている。
101 例えば、多くの URL スキームは「機関 (authority)」に対して以下の書式 (ここでは \fIip_server\fP と呼ぶことにする)
102 を許している (角括弧内部は省略可能)。
103 .HP
104 \fIip_server = \fP[\fIuser\fP [ : \fIpassword\fP ] @ ] \fIhost\fP [ : \fIport\fP]
105 .PP
106 このフォーマットには、ユーザ名、ユーザ名+パスワードを指定できる。 ポート番号を追加することも可能である。 \fIhost\fP
107 はホストコンピュータの名前で、 DNS で定義される名前か IP アドレス (ピリオドで区切られた数字) で指定する。したがって URI
108 <http://fred:fredpassword@xyz.com:8080/> は、ホスト xyz.com に fred として
109 (パスワードを使って)  ポート 8080 を使ってログインする。 パスワードは可能なら URI には含めないほうが良いだろう。
110 パスワードを直書きすると様々なセキュリティ上のリスクが生じるからである。 URL にユーザ名だけを与え、パスワードを与えない場合は、
111 リモートサーバはパスワードを要求してくる。 URL を解釈したプログラムが、ユーザにこの入力を促すことになろう。
112 .PP
113 以下に、 UNIX 風のシステムで非常に良く用いられており、 多くのツールが理解するスキームを示す。 URI
114 を使うツールの多くでは、内部スキームや特殊なスキームも 使えることが多い。そのようなスキームに関してはツールのドキュメントを見ること。
115 .PP
116 \fBhttp \- Web (HTTP) サーバ\fP
117 .PP
118 http://\fIip_server\fP/\fIpath\fP
119 .br
120 http://\fIip_server\fP/\fIpath\fP?\fIquery\fP
121 .PP
122 これは web (HTTP) サーバにアクセスするための URL である。 デフォルトのポートは 80。パスがディレクトリを参照しているときは、
123 返される情報は web サーバが選択する。通常は、 "index.html" や "index.htm" のようなファイルがあれば、その内容が返される。
124 なければ、カレントディレクトリのリストが (適切なリンクとともに) 生成されて 返される。例としては <http://lwn.net>
125 など。
126 .PP
127 問い合わせ (query) を、古い "isindex" フォーマットによって送ることもできる。 このフォーマットは単語またはフレーズからなり、等号
128 (=) は含まない。 より長い "GET" フォーマットでも問い合わせは行える。 このフォーマットには、一つ以上の問い合わせエントリが
129 \fIkey\fP=\fIvalue\fP という形式で含まれる。それぞれのエントリはアンパサンド (&) で区切られる。 \fIkey\fP
130 は複数個指定することもできる。しかしそれに意味があるかどうかは web サーバとアプリケーションプログラムが決める。 HTML/XML/SGML と
131 GET 問い合わせ形式の間には、不幸な関係がある。 一つ以上のキーの含まれる URI が SGML/XML 文書 (HTML もそう)
132 に埋めこまれる際には、アンパサンド (&) は &amp; と書かなければならない。 全ての問い合わせがこの形式を使うわけではない。
133 フォームが長くなると URI に入れるには長すぎるから、 別の通信メカニズム (POST と呼ばれる) が用いられる。 POST では URI
134 にはデータは含まれない。 より詳しい情報は、
135 .UR http://www.w3.org\:/CGIE
136 .UE
137 にある Common
138 Gateway Interface の仕様書を見よ。
139 .PP
140 \fBftp \- ファイル転送プロトコル (FTP)\fP
141 .PP
142 ftp://\fIip_server\fP/\fIpath\fP
143 .PP
144 これはファイル転送プロトコル (FTP) を通してファイルにアクセスするための URL である。デフォルトの (制御用) ポートは 21 である。
145 ユーザ名がない場合には、ユーザ名 anonymous が与えられる。 そしてその場合には、クライアントの多くは要求した人の
146 インターネットメールアドレスをパスワードとして与える。 例としては
147 <ftp://ftp.is.co.za/rfc/rfc1808.txt> など。
148 .PP
149 \fBgofer \- Gofer サーバ\fP
150 .PP
151 gopher://\fIip_server\fP/\fIgophertype selector\fP
152 .br
153 gopher://\fIip_server\fP/\fIgophertype selector\fP%09\fIsearch\fP
154 .br
155 gopher://\fIip_server\fP/\fIgophertype selector\fP%09\fIsearch\fP%09\fIgopher+_string\fP
156 .br
157 .PP
158 デフォルトの gopher ポートは 70 である。 \fIgophertype\fP は 1 文字からなるフィールドで、 URL が参照している
159 Gopher のリソースタイプを示す。 パス全体が空であってもよく、その場合は区切りの "/" も省略できる。 このとき gophertype
160 のデフォルトは "1" になる。
161 .PP
162 \fIselector\fP は Gopher セレクタ文字列である。Gopher プロトコルでは、 Gopher セレクタ文字列はオクテット文字からなり、
163 16進数の 09 (US\-ASCII の HT または tab)、 0A (US\-ASCII の LF 文字)、 0D (US\-ASCII の CR
164 文字) 以外ならどんなオクテットも指定できる。
165 .PP
166 \fBmailto \- 電子メールアドレス\fP
167 .PP
168 mailto:\fIemail\-address\fP
169 .PP
170 これは電子メールアドレスで、通常 \fIname\fP@\fIhostname\fP という形式をとる。電子メールアドレスの正しいフォーマットに関する
171 より詳しい情報は \fBmailaddr\fP(7)  を見よ。 % 文字はすべて %25 と書き直さなければならないことに注意。 例としては
172 <mailto:dwheeler@dwheeler.com> など。
173 .PP
174 \fBnews \- ニュースグループ・ニュースメッセージ\fP
175 .PP
176 news:\fInewsgroup\-name\fP
177 .br
178 news:\fImessage\-id\fP
179 .PP
180 \fInewsgroup\-name\fP はピリオドで区切られた階層的な名前である。例えば "comp.infosystems.www.misc" など。
181 <newsgroup\-name> が "*" (つまり <news:*>) の場合には、
182 「参照できる全てのニュースグループ」の意味になる。 例としては <news:comp.lang.ada> など。
183 .PP
184 \fImessage\-id\fP は
185 .UR http://www.ietf.org\:/rfc\:/rfc1036.txt
186 IETF RFC\ 1036,
187 .UE
188 の Message\-ID から、囲みの "<" と ">" を取ったものに対応する。 Message\-ID は
189 \fIunique\fP@\fIfull_domain_name\fP という形式をとる。メッセージ ID には "@" 文字が含まれるので、
190 ニュースグループの名前と区別できるだろう。
191 .PP
192 \fBtelnet \- telnet ログイン\fP
193 .PP
194 telnet://\fIip_server\fP/
195 .PP
196 Telnet URL スキームは対話的なテキストサービスに Telnet プロトコルを 通してアクセスするために用いられる。最後の "/"
197 文字は省略してよい。 例としては <telnet://melvyl.ucop.edu/> など。
198 .PP
199 \fBfile \- 通常のファイル\fP
200 .PP
201 file://\fIip_server\fP/\fIpath_segments\fP
202 .br
203 file:\fIpath_segments\fP
204 .PP
205 これはローカルに直接アクセスできるファイルを示す。 特殊なケースとして、 \fIip_server\fP には "localhost"
206 という文字列を用いたり、空文字にしてもよい。 これは「URI が解釈されたマシン」とみなされる。 path
207 がディレクトリの場合は、ビューアはディレクトリの内容を リンクを張ったかたちで表示するとよいだろう。
208 しかし現在は、まだ全てのビューアがこの動作をするわけではない。 KDE は生成ファイル (generated file) を URL
209 <file:/cgi\-bin> の形式でサポートしている。 与えられたファイルが見付からなかった場合は、
210 ファイル名をグロブによって展開すると良いかもしれない (\fBglob\fP(7)  および \fBglob\fP(3)  を見よ)。
211 .PP
212 二つめの書式 (例えば <file:/etc/passwd>) もローカルファイルを参照する
213 正しいフォーマットである。しかし古い標準ではこの書式を許していなかったので、 これを URI として認識しないプログラムも存在する。
214 より汎用的な文法は、サーバ名に空文字を用いるもの、 つまり <file:///etc/passwd> のようなものである。
215 この形式も指す内容は同じであり、パターンマッチやより古いプログラムでも URI として認識されやすい。
216 もし意図するところが「現在の場所からスタート」なら、 スキームは一切用いるべきではない。 <../test.txt>
217 のような、スキームに依存しない相対リンクを用いること。 このスキームの例としては <file:///etc/passwd> など。
218 .PP
219 \fBman \- man ページ文書\fP
220 .PP
221 man:\fIcommand\-name\fP
222 .br
223 man:\fIcommand\-name\fP(\fIsection\fP)
224 .PP
225 これはローカルのオンラインマニュアル (man) リファレスページを参照する。 command\-name には括弧とセクション番号を追加してもよい。
226 セクション番号の意味について詳しく知りたい場合は \fBman\fP(7)  をみよ。この URI スキームは UNIX 風のシステム (Linux など)
227 に特有のものであり、現在はまだ IETF による登録はされていない。 例としては <man:ls(1)> など。
228 .PP
229 \fBinfo \- info ページ文書\fP
230 .PP
231 info:\fIvirtual\-filename\fP
232 .br
233 info:\fIvirtual\-filename\fP#\fInodename\fP
234 .br
235 info:(\fIvirtual\-filename\fP)
236 .br
237 info:(\fIvirtual\-filename\fP)\fInodename\fP
238 .PP
239 このスキームは、オンラインの info リファレンスページ (texinfo ファイルから生成される) を参照する。 info ページは GNU
240 ツールなどのプログラムで用いられている文書フォーマットである。 この URI スキームは UNIX 風のシステム (Linux など)
241 に特有のものであり、現在はまだ IETF による登録はされていない。 この文書の執筆時において、 GNOME と KDE はそれぞれ異なる文法の URI
242 を用いており、お互い相手の文法を受け入れない。 最初の 2 つの書式は GNOME の書式である。ノード名 (nodename)
243 のスペースはすべてアンダースコアに変換される。 3 つめと 4 つめは KDE の書式である。ノード名のスペースは そのままスペースで書かれる (URI
244 の標準では禁止されているのだが)。 将来は多くのツールがこれらの書式すべてを理解するようになり、
245 ノード名のアンダースコア、スペースを両方とも理解できるように なることを期待したい。 GNOME でも KDE でも、
246 ノード名が省略された場合は、ノード名として "Top" が用いられる。 GNOME 書式の例としては <info:gcc> や
247 <info:gcc#G++_and_GCC> など、 KDE 書式の例としては <info:(gcc)> や
248 <info:(gcc)G++ and GCC> など。
249 .PP
250 \fBwhatis \- 文書検索\fP
251 .PP
252 whatis:\fIstring\fP
253 .PP
254 このスキームは、コマンドに関する短い (1 行の) 説明を集めた データベースを検索し、 string を含む文字列をリストして返す。
255 単語が完全にマッチした結果だけが返される。 \fBwhatis\fP(1)  を見よ。 この URI スキームは UNIX 風のシステム (Linux など)
256 に特有のものであり、現在はまだ IETF による登録はされていない。
257 .PP
258 \fBghelp \- GNOME ヘルプ文書\fP
259 .PP
260 ghelp:\fIname\-of\-application\fP
261 .PP
262 与えられた application に対応する GNOME help をロードする。 この書式を用いた文書はまだあまり多くない。
263 .PP
264 \fBldap \- 軽量ディレクトリアクセスプロトコル\fP
265 .PP
266 ldap://\fIhostport\fP
267 .br
268 ldap://\fIhostport\fP/
269 .br
270 ldap://\fIhostport\fP/\fIdn\fP
271 .br
272 ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP
273 .br
274 ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP
275 .br
276 ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP?\fIfilter\fP
277 .br
278 ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP?\fIfilter\fP?\fIextensions\fP
279 .PP
280 このスキームは Lightweight Directory Access Protocol (LDAP) へのクエリーをサポートする。 LDAP は、
281 複数のサーバに分散した、 階層化された情報 (人々や計算資源など) に問い合わせるための プロトコルである。 LDAP の URL
282 スキームに関するより詳しい情報は
283 .UR http://www.ietf.org\:/rfc\:/rfc2255.txt
284 RFC\ 2255
285 .UE
286 を参照のこと。 この URL の構成要素の詳細は以下の通り。
287 .IP hostport 12
288 クエリーを行う LDAP サーバ。ホスト名を書く。続けてコロンとポート番号を 追加することもできる。 LDAP のデフォルトのポートは TCP ポート
289 389 である。 省略されると、どの LDAP サーバを用いるかはクライアントが決定する。
290 .IP dn
291 LDAP の Distintuished Name (識別名)。 LDAP 検索の base オブジェクトを指定するものである (
292 .UR http://www.ietf.org\:/rfc\:/rfc2253.txt
293 RFC\ 2253
294 .UE
295 のセクション 3 を参照)。
296 .IP attributes
297 コンマ区切りの、返される属性 (attribute) のリスト。 RFC\ 2251 の section 4.1.5
298 を見よ。省略されると全ての属性が返される。
299 .IP scope
300 検索のスコープを指定する。 "base" (base オブジェクト検索), "one" (1 レベル検索), "sub" (サブツリー検索)
301 のいずれかを指定する。 省略すると "base" が仮定される。
302 .IP filter
303 検索フィルタ (返されるエントリのサブセット) を指定する。 省略されると、全てのエントリが返される。
304 .UR http://www.ietf.org\:/rfc\:/rfc2254.txt
305 RFC\ 2254
306 .UE
307 のセクション 4 を参照。
308 .IP extensions
309 コンマで区切られた type=value ペアのリスト。 ここで =value の部分は、それを要求しないオプションに対しては 省略できる。
310 \(aq!\(aq が前置された extension は critical (サポートしていなければならない) であり、 そうでなければ
311 critical ではない (省略できる)。
312 .PP
313 LDAP のクエリーは、例とともに説明するのが最も簡単である。 次の例は、 ldap.itd.umich.edu に、 U.S. にある
314 University of Michigan の情報を尋ねる例である。
315 .PP
316 .nf
317 ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US
318 .fi
319 .PP
320 郵便用の住所属性だけを取得する場合は、 次のようにリクエストする:
321 .PP
322 .nf
323 ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress
324 .fi
325 .PP
326 host.com のポート 6666 に、 University of Michigan にいる common name (cn) が "Babs
327 Jenson" の人の情報を尋ねる場合は、 次のようにリクエストする:
328 .PP
329 .nf
330 ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)
331 .fi
332 .PP
333 \fBwais \- 広域情報サービス\fP
334 .PP
335 wais://\fIhostport\fP/\fIdatabase\fP
336 .br
337 wais://\fIhostport\fP/\fIdatabase\fP?\fIsearch\fP
338 .br
339 wais://\fIhostport\fP/\fIdatabase\fP/\fIwtype\fP/\fIwpath\fP
340 .PP
341 このスキームは WAIS のデータベース、検索、文書を指定する (WAIS に関する詳しい情報は
342 .UR http://www.ietf.org\:/rfc\:/rfc1625.txt
343 IETF RFC\ 1625
344 .UE
345 を参照)。
346 hostport は、ホスト名にコロンとポート番号を付加したものである (コロン + ポート番号は省略可。デフォルトのポート番号は 210 である)。
347 .PP
348 最初の書式は WAIS のデータベースに対する検索の指定である。 二つめの書式は特定の WAIS データベース \fIdatabase\fP
349 に対する検索の指定である。 三つめの書式は WAIS データベースにある特定の文書を取出す指定である。 \fIwtype\fP は WAIS
350 のオブジェクト形式指定であり、 \fIwpath\fP は WAIS document\-id である。
351 .PP
352 \fBその他のスキーム\fP
353 .PP
354 他にも多くの URI スキームが存在する。 URI を受付けるほとんどのツールは、内部 URI のセットをサポートする (例えば Mozilla
355 は内部情報用の about: というスキームを受付けるし、 GNOME ヘルプブラウザはいろいろな出発点用に toc: というスキームを持っている)。
356 定義されたスキームはたくさんあるが、現時点で広く用いられてはいない (例えば prospero とか)。 nntp: スキームは news:
357 スキームが好んで用いられるようになったので 使わないほうが良い。 URN は urn: スキームによって、階層的な名前空間 (例えば
358 urn:ietf:... は IETF 文書を示す)  としてサポートされるべきであるが、現時点では URN はあまり用いられていない。
359 全てのツールが全てのスキームをサポートしているわけではない。
360 .SS 文字エンコード
361 .PP
362 URI では、色々な状況下で入力できるように、文字の種類を制限している。
363 .PP
364 以下の文字は予約されている。すなわち、これらの文字は URI に登場することがあるが、それらの利用法 (解釈のされ方) は
365 予約された目的に制限されている (衝突するデータは URI にする前にエスケープしなければならない)。
366 .IP
367    ; / ? : @ & = + $ ,
368 .PP
369 未予約文字 (unreserved character) は URI に使ってよい。 これには英字の大文字と小文字、10 進の数字、および
370 以下の句読文字・記号が含まれる
371 .IP
372  \- _ . ! ~ * ' ( )
373 .PP
374 他の文字はすべてエスケープしなければならない。 エスケープされたオクテットは 3 文字からなる: 先頭にパーセント文字
375 "%"、それに続けてオクテットコードを表す 2 文字の 16 進数字である (16 進数の英字は大文字小文字どちらでも良い)。 例えば空白文字は
376 "%20" のようにエスケープしなければならず、 タブ文字は "%09"、 "&" は "%26" となる。 パーセント文字 "%"
377 は常にエスケープを示す予約された目的に用いられるので、 "%" 自身を表すには "%25" とエスケープしなければならない。
378 クエリーのテキストでは、スペース文字をプラス記号 (+) でエスケープすることも 一般に良く行われる。この慣例は関連 RFC
379 で実際に定義されているわけではない (代わりに %20 を推奨している) が、クエリーテキストを受付ける
380 ツールは、この書式への対応を用意しておくべきであろう。 URI は、常に「エスケープされた」かたちで表示される。
381 .PP
382 未予約文字もエスケープすることができ、これによって URI の意味するところが変わるわけではない。 しかしURI
383 にその非エスケープ文字が現れることが許されないような 特殊な場合を除いて、これは避けるべきである。 例えば、 HTTP URL の path において
384 "%7e" が "~" の代わりに用いられることがあるが、 この二つは HTTP URL としては等価である。
385 .PP
386 US ASCII キャラクタセット以外の文字を URI として扱う場合、 HTML 4.1 規格 (section B.2) 及び IETF RFC\ 2718 (section 2.2.5) は 以下の手法を用いるよう推奨している。
387 .IP 1. 4
388 キャラクタ列を UTF\-8 (IETF RFC\ 2279, \fButf\-8\fP(7)  参照) に変換し、
389 .IP 2.
390 URI エスケープ機構を用いる。 つまり、安全でないオクテットを %HH でエンコードする。
391 .SS "URI を書くには"
392 URI を書く時には、ダブルクォートの内部に書く (例: "http://www.kernelnotes.org") か、 angle ブラケットで囲む
393 (例: <http://lwn.net>) か、 一行に URI だけを書くかする。 ダブルクォートを使う人に警告: \fB絶対に\fP句読点
394 (文末のピリオドやリスト区切りのコンマ) を URI の内部に移動してはならない。 代わりに angle ブラケットを使うか、
395 外にある文字をクォーテーションマークの内部に 決して含めないような引用方式に切替えること。 後者の方式は "Hart's Rules" や
396 "Oxford Dictionary for Writers and Editors" によれば 「新しい (new) 引用方式」あるいは「論理的
397 (logical) な引用方式」 と呼ばれており、 イギリス人や世界中のハッカー達はこちらの慣習を好んでいる (より詳しい情報は Hacker
398 Writing Style の Jargon File のセクション
399 .UR http://www.fwi.uva.nl\:/~mes\:/jargon\:/h\:/HackerWritingStyle.html
400 .UE
401 を見よ)。 古い文書では、 "URL:" という文字列を URI の直前に挿入することを
402 勧めているものもあるが、しかしこの形式はまったく流行しなかった。
403 .PP
404 URI の書式は曖昧さを排除するように設計されている。 しかし URI が広まるにつれ、昔ながらのメディア (TV、ラジオ、新聞、 看板などなど) は
405 URI 参照を省略したかたち、すなわち 機関部とパス部だけでリソースを指定することが多くなっている (例:
406 <www.w3.org/Addressing>)。 このような参照はマシンというよりは人間向けのもので、
407 コンテキストベースの推測によって URI の補完が可能であることを あてにしているのである (例えば "www" ではじまるホスト名なら
408 "http://" がつくだろうし、 "ftp" ではじまるホスト名なら "ftp://" がつくだろう)。
409 多くのクライアントの実装では、この種の参照を推測によって解決する。 このような推測は時代とともに変わりうる。
410 特に新しいスキームが導入されるとそうである。 URI の省略形では相対 URL パスの区別が付けられないので、 省略形 URI 参照は相対 URI
411 の利用できるところでは使えない。 つまり定義済みのベース (ダイアログボックスなど)  がない場合に限って利用できる。
412 文書内部でのハイパーテキストリンクには省略形 URI を使ってはならない。 上述の標準フォーマットを使うこと。
413 .SH 準拠
414 .PP
415 .UR http://www.ietf.org\:/rfc\:/rfc2396.txt
416 (IETF RFC\ 2396)
417 .UE ,
418 .UR http://www.w3.org\:/TR\:/REC\-html40
419 (HTML 4.0)
420 .UE .
421 .SH 注意
422 Linux システムで URI を受付けるツール (例えば web ブラウザなど) は、 上にあげた全てのスキームを (直接または間接に)
423 扱えるべきである。 man: や info: も含めて、である。 スキームの処理に他のプログラムを実行するのは良いことだし、
424 実はすすんでそうすべきである。
425 .PP
426 技術的には、フラグメントは URI の一部ではない。
427 .PP
428 URI (URL も含む) をデータフォーマットに埋めこむ方法に関する情報は、 そのフォーマットのドキュメントを見よ。 HTML は <A
429 HREF="\fIuri\fP">\fItext\fP</A> を用いる。 texinfo は @uref{\fIuri\fP}
430 という書式を用いる。 man と mdoc は、最近追加された UR マクロを使う。 あるいは URI をそのままテキストに埋めこむ (ビューアが
431 :// を URI の一部と解釈できなければならない)。
432 .PP
433 デスクトップ環境である GNOME と KDE は、 それぞれ受付ける URI が (特にそれぞれのヘルプブラウザにおいて)  異なっている。 man
434 ページをリストするには、 GNOME では <toc:man> を用い、 KDE では <man:(index)>
435 を用いる。 また info ページをリストするには、 GNOME では <toc:info> を用い、 KDE では
436 <info:(dir)> を用いる (本 man ページの著者は KDE のアプローチのほうが好みである。
437 しかしより標準的な書式の方が更に良いが)。 一般に KDE は生成ファイル (generated file) のプレフィックスとして
438 <file:/cgi\-bin/> を用いる。 KDE は HTML の文書を
439 <file:/cgi\-bin/helpindex> 経由でアクセスするのが好みなようである。 GNOME は文書の保管・検索に
440 ghelp スキームを用いる方法を取っているようだ。 どちらのブラウザも、現時点では file: によるディレクトリ参照を扱えない。
441 したがってディレクトリ全体をブラウズ可能な URI で参照することが難しい。 先に述べたように、これら二つの環境では info: スキームの
442 扱いが異なっている (おそらく最も重要な差異であろう)。 GNOME と KDE が共通 URI フォーマットに収斂することが望ましい。 この man
443 ページが、将来はその収斂した結果を記述できることを望む。 この作業への助力を喚起したい。
444 .SS セキュリティ
445 .PP
446 URI そのものはセキュリティの脅威を引き起こすものではない。 ある時点ではリソースの場所を与えていた URL が、
447 ずっとそうでありつづけるという保証は一般にはない。 またある URL が、将来には別のリソースを示さないとも限らない。
448 このような保証は、その名前空間とリソースとを管理している個人に 帰するものに過ぎない。
449 .PP
450 無害に見える操作 (リソースに関連づけられたエンティティの取得など)  によって、実際にはリモートにダメージを与える動作を引き起こすような URL
451 を記述することも場合によっては可能である。 危険な URL の典型的なものは、そのネットワークプロトコルに
452 予約されているポート番号とは異なるポートを指定しているものである。 URL の内容には命令が含まれていて、 そのプロトコルにしたがって解釈されたとき、
453 予期されない動作を引起こすのである。 例をあげると、 gopher の URL によって、意図しないメッセージや なりすましメッセージなどが SMTP
454 サーバ経由で送信されるようなことがあった。
455 .PP
456 そのプロトコルのデフォルト以外のポート番号を指定している URL を用いるときには注意すべきである。 特にその番号が予約空間の内部にある場合には。
457 .PP
458 URI に、そのプロトコルに対するデリミタがエスケープされたかたちで入っている 場合も注意が必要である (例えば telnet プロトコルに対する CR
459 文字や LF 文字など)。 なぜならこれらは転送前にエスケープが外されないからである。
460 これはプロトコルに反しており、予期しない、おそらくは害になるような リモート動作を引起こす結果となりかねない。
461 .PP
462 秘密にしておくべきパスワードを含んだ URI を使うのが 賢くないのは明らかである。特に、パスワードを URI の "userinfo"
463 の部分に使うのは絶対に避けるべきである。 ただしその "password" のパラメータを意図的に公開したい場合は別であるが。
464 .SH バグ
465 .PP
466 文書は様々な場所に置かれうる。したがって現時点では、 任意のフォーマットで書かれた一般のオンライン文書に対する良い URI スキームが 存在しない。
467 <file:///usr/doc/ZZZ> 形式の参照は使えない。なぜなら
468 ディストリビューションやローカルへのインストールの際の条件によって、 ファイルは異なるディレクトリに置かれることがあるからである (/usr/doc か
469 /usr/local/doc か /usr/share かその他の場所か、などなど)。 また、ディレクトリ ZZZ
470 は通常バージョンが変わると異なったものになる (ファイル名のグロブによってある程度克服できるだろうが)。 最後にもう一つ、文書をインターネットから
471 (ローカルのファイルシステムに ファイルをロードするのではなく) 動的にロードする人々は、 なかなか file: スキームを使ってくれない。
472 将来には新たな URI スキーム (例えば "userdoc:" のような) が追加され、 より詳しい文書へのクロスリファレンスが、
473 その文書の正確な場所をプログラムが知らなくても可能になるかもしれない。 あるいは、ファイルシステム規格の将来の版で
474 ファイルの場所の指定をより厳密にして、 file: スキームによる文書の位置指定が可能になるかもしれない。
475 .PP
476 プログラムやファイルフォーマットの多くでは、 URI を使ったリンクを取り込んだり実装したりする方法がない。
477 .PP
478 .\" .SH AUTHOR
479 .\" David A. Wheeler (dwheeler@dwheeler.com) wrote this man page.
480 プログラムの多くは、これらの URI フォーマットをすべては扱えない。 ユーザの環境 (テキストかグラフィックか、
481 デスクトップ環境、ローカルユーザの好み、 現在実行されているツール) などを自動的に検知して、 任意の URI をロードし、その URI
482 に適したツールを起動するような 標準的な仕組みがあるといいのだろうが。
483 .SH 関連項目
484 \fBlynx\fP(1), \fBman2html\fP(1), \fBmailaddr\fP(7), \fButf\-8\fP(7)
485
486 .UR http://www.ietf.org\:/rfc\:/rfc2255.txt
487 IETF RFC\ 2255
488 .UE
489 .SH この文書について
490 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
491 である。プロジェクトの説明とバグ報告に関する情報は
492 http://www.kernel.org/doc/man\-pages/ に書かれている。