rfc2648.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,684 行 · 第 1/4 页
TXT
1,684 行
Network Working Group R. Moats
Request for Comments: 2648 AT&T
Category: Informational August 1999
A URN Namespace for IETF Documents
Status of this Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1999). All Rights Reserved.
Abstract
A system for Uniform Resource Names (URNs) must be capable of
supporting new naming systems. As an example of proposing a new
namespace, this document proposes the "ietf" namespace. This
namespace consists of the RFC family of documents (RFCs, STDs, FYIs,
and BCPs) developed by the IETF and published by the RFC Editor, the
minutes of working groups (WG) and birds of a feather (BOF) meetings
that occur during IETF conferences, and the Internet Drafts published
by the Internet Drafts Editor. Both the current URN framework and
URN syntax support this namespace.
1. Introduction
This document proposes the "ietf" namespace, which consists of the
RFC family of documents (RFCs, STDs, FYIs, and BCPs) developed by the
IETF and published by the RFC editor and the minutes of working
groups (WG) and birds of a feather (BOF) meetings that occur during
IETF conferences.
The namespace specification is for a formal namespace.
2. Specification Template
Namespace ID:
"ietf" requested.
Moats Informational [Page 1]
RFC 2648 A URN Namespace for IETF Documents August 1999
Registration Information:
Registration version number: 1
Registration date: 1999-04-22
Declared registrant of the namespace:
Ryan Moats
jayhawk@att.com
AT&T
15621 Drexel Circle
Omaha, NE 68135-2358
Declaration of structure:
The identifier has the following ABNF [2] specification:
NSS = rfc-nss / fyi-nss / std-nss / bcp-nss /
draft-nss / mtg-nss / other-nss
rfc-nss = "rfc:" 1*DIGIT
fyi-nss = "fyi:" 1*DIGIT
std-nss = "std:" 1*DIGIT
bcp-nss = "bcp:" 1*DIGIT
draft-nss = "id:" string
mtg-nss = "mtg:" string
other-nss = string
; beginning with a prefix other than one of those
; above for future expansion
string = 1*(DIGIT / ALPHA / "-")
If the IESG (or it successor) adds a new document series,
this ABNF specification will need to be updated. Further,
if a working group or BOF is created that used characters
outside the range of this ABNF specification, this
specification will need to be updated. Any system intended
to resolve names for this namespace should be written with
the awareness that this could occur at any time.
Relevant ancillary documentation:
Relevant documentation is in RFC 2648.
Moats Informational [Page 2]
RFC 2648 A URN Namespace for IETF Documents August 1999
Identifier uniqueness considerations:
Because the rfc-editor assigns the RFC number uniquely these
URNs are unique. Since the mapping between RFCs and other
rfc-editor document series (STDs, FYIs or BCPs) is not
necessarily one-to-one, uniqueness of STDs, FYIs and BCPs
are defined based on the document mappings maintained by the
RFC Editor (the index files "rfc-index.txt", "fyi-
index.txt", "bcp-index.txt", "std-index.txt") are defined to
be the definitive statement of the assignment of RFC Family
URNs in this namespace. The meeting minutes portion of the
namespace is guaranteed unique because the URN includes the
sequence number of the IETF conference. The document
mapping maintained by the Internet Drafts editor ("1id-
abstracts.txt") is defined as the definitive statement of
the assignment of URNs for the internet draft portion of
this namespace.
Identifier persistence considerations:
Persistence of the URNs of this namespace is independent of
the mutability of the underlying documents. A URN once
assigned will never be reassigned to a different resource;
the assignment is persistent and immutable. Immutability of
RFCs, STDs, FYIs and BCPs is at the discretion of the RFC
Editor. They may be composites of one or more RFCs and the
set of RFCs that includes them may change with time. It is
important to note that this mutability of some resources is
independent of the immutability of URN assignment to a
resource.
Process of identifier assignment:
Assignment of URNs from this namespace occurs in three ways.
The first is through publication of a new RFC, FYI, STD or
BCP is by the RFC Editor. This new document will have a new
series number and will therefore define a new URN. The
document mappings maintained by the RFC Editor (the index
files "rfc-index.txt", "fyi-index.txt", "bcp-index.txt" and
"std-index.txt") are defined to be the definitive statement
of the assignment of RFC Family URNs in this namespace.
The second way a URN is assigned is through the filing of
meeting minutes by a working group or birds of a feather as
part of an IETF conference. The list of minutes maintained
by the IETF for each working group and conference in the
subtree pointed at by the URL ftp://ietf.org/ietf/ is
considered the definitive assignment of URNs for working
Moats Informational [Page 3]
RFC 2648 A URN Namespace for IETF Documents August 1999
group or birds of a feather minutes.
The third way a URN is assigned is through the publication
of a new internet-draft by the Internet Draft Editor. This
draft will have a distinct name (and version number) and
therefore defined a new URN. The document mapping
maintained by the Internet Drafts editor ("1id-
abstracts.txt") is defined as the definitive statement of
the assignment of URNs for this portion of the namespace.
Process of identifier resolution:
A mirrored copy of the underlying documentation is required
to resolve these URNs. Resolution via HTTP is done by a set
of simple Perl cgi-bin scripts presented in Appendix A.
Rules for Lexical Equivalence:
The entire URN is case-insensitive.
Conformance with URN Syntax:
There are no additional characters reserved.
Validation mechanism:
None additional to resolution specified
Scope:
Global.
3. Examples
The following are examples of URNs that a resolver for this namespace
can resolve:
urn:ietf:rfc:2141
urn:ietf:std:50
urn:ietf:id:ietf-urn-ietf-06
urn:ietf:mtg:41-urn
Moats Informational [Page 4]
RFC 2648 A URN Namespace for IETF Documents August 1999
4. Security Considerations
Because this namespace defines no additional reserved characters, it
does not add any security considerations beyond those inherent from
the existence of the reserved characters from [1]. Further, none of
the reserved characters from [1] are used in the definition of the
NSS. This means that resolvers for this namespace may be considered
"secure" in the sense that any escaping of characters in the NSS MUST
result in the resolver indicating that the URN has incorrect syntax.
5. Acknowledgments
Thanks to various members of the URN working group for comments on
earlier drafts of this document. The work described in this document
is partially supported by the National Science Foundation,
Cooperative Agreement NCR-9218179.
6. References
Request For Comments (RFC) and Internet Draft documents are available
from numerous mirror sites.
[1] Moats, R., "URN Syntax", RFC 2141, May 1997.
[2] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
7. Author's Address
Ryan Moats
AT&T
15621 Drexel Circle
Omaha, NE 68135-2358
USA
EMail: jayhawk@att.com
Moats Informational [Page 5]
RFC 2648 A URN Namespace for IETF Documents August 1999
Appendix A. Example Resolution Scripts
The following scripts are examples that can be used for resolving
URNs in this namespace.
A.1 I2C
#!/usr/local/bin/perl
use strict;
#
# this is a URN 2 URC resolver for the ietf namespace
#
my(%cite) = (
bcp => "/ftp/rfc/bcp-index.txt",
fyi => "/ftp/fyi/fyi-index.txt",
id => "/ftp/internet-drafts/1id-abstracts.txt",
rfc => "/ftp/rfc/rfc-index.txt",
std => "/ftp/std/std-index.txt"
);
my(%number2date) = (
44 => "99mar",
43 => "98dec", 42 => "98aug", 41 => "98apr",
40 => "97dec", 39 => "97aug", 38 => "97apr",
37 => "96dec", 36 => "96jun", 35 => "96mar",
34 => "95dec", 33 => "95jul", 32 => "95apr",
31 => "94dec", 30 => "94jul", 29 => "94mar",
28 => "93nov", 27 => "93jul", 26 => "93mar",
25 => "92nov", 24 => "92jul", 23 => "92mar",
22 => "91nov", 21 => "91jul", 20 => "91mar",
19 => "90dec" );
my($wgpath) = "/ftp/ietf";
my($urn) = $ENV{'QUERY_STRING'};
my($host) = $ENV{'SERVER_NAME'}; #get my host name for ftp: URLs
my($accept) = $ENV{'HTTP_ACCEPT'}; #this is the "Accept:" HTTP header
(&resolveid($1), exit) if ($urn =~ /urn:ietf:id:(\S+)/i);
(&resolverfc($1, $2), exit) if ($urn =~ /urn:ietf:(\w*):(\d*)/i);
(&resolvemtg($1, $2), exit) if ($urn =~ /urn:ietf:mtg:(\d*)-(\w*)/i);
&urn_error("400 Bad Request\n");
sub resolvemtg {
my($ietfnum, $sesnam) = @_;
&urn_error("404 Not Found\n") if (!defined $number2date{$ietfnum});
my($date)=$number2date{$ietfnum};
Moats Informational [Page 6]
RFC 2648 A URN Namespace for IETF Documents August 1999
my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt";
if (-f $link) {
print "Status: 200 OK\r\n";
print "Content-type: text/html\r\n\r\n";
print "<HTML>\n<TITLE>Citation for $urn</TITLE>\n";
print "<BODY>\n";
print "<H1><A HREF=\"$link\">$urn</A>:</H1>\n";
print "Minutes of the $sesnam working group from the "
. &end($ietfnum) . " IETF";
print "</BODY>\n</HTML>\n";
return;
}
my($link)="$wgpath/$date/$sesnam-minutes-$date.txt";
if (-f $link) {
print "Status: 200 OK\r\n";
print "Content-type: text/html\r\n\r\n";
print "<HTML>\n<TITLE>Citation for $urn</TITLE>\n";
print "<BODY>\n";
print "<H1><A HREF=\"$link\">$urn</A>:</H1>\n";
print "Minutes of the $sesnam working group from the "
. &end($ietfnum) . " IETF";
print "</BODY>\n</HTML>\n";
return;
}
&urn_error("404 Not Found\n");
}
sub end {
my($inarg)=@_;
return $inarg . "st" if ($inarg =~ /1$/);
return $inarg . "nd" if ($inarg =~ /2$/);
return $inarg . "rd" if ($inarg =~ /3$/);
return $inarg . "th";
}
sub resolverfc {
my($flag,@bib,$i,$k,$j,$done,@ref);
my($l,$link);
my($scheme, $value) = @_;
$scheme =~ tr/A-Z/a-z/;
if (!defined $cite{$scheme}) {
&urn_error("404 Not Found\n");
}
$flag = 0;
open(INPUT, "$cite{$scheme}");
while (<INPUT>) {
$flag = 1 if (/^0*$value /);
Moats Informational [Page 7]
RFC 2648 A URN Namespace for IETF Documents August 1999
if ($flag == 1) {
last if (/^$/);
chop;
push @bib,$_;
}
}
if ($scheme ne "rfc") {
print "Status: 200 OK\r\n";
print "Content-type: text/html\r\n\r\n";
$bib[0] =~ s/^[0-9]*\s*/<B>/;
for ($i=0; $i<=$#bib; $i+=1) {
last if ($bib[$i] =~ s/\./.<\/B>/);
}
for ($i=0;$i<=$#bib;$i+=1) {
$k=$bib[$i];
while ($k =~ /(fyi|std|rfc|bcp)([0-9]+)(.*)/i) {
push @ref,"$1$2";
$k=$3;
}
$done="";
foreach $j (@ref) {
next if ($done =~ $j);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?