idnits 2.17.1 draft-kindel-uuid-uri-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Cannot find the required boilerplate sections (Copyright, IPR, etc.) in this document. Expected boilerplate is as follows today (2024-03-29) according to https://trustee.ietf.org/license-info : IETF Trust Legal Provisions of 28-dec-2009, Section 6.a: This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 2: Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 3: This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of current Internet-Drafts. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an Introduction section. ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack an Authors' Addresses Section. ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. Miscellaneous warnings: ---------------------------------------------------------------------------- -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- Couldn't find a document date in the document -- date freshness check skipped. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'NCS' is mentioned on line 62, but not defined == Unused Reference: 'CAE RPC' is defined on line 137, but no explicit reference was found in the text == Unused Reference: 'NCA' is defined on line 142, but no explicit reference was found in the text == Unused Reference: 'MD5' is defined on line 144, but no explicit reference was found in the text == Unused Reference: 'URI2' is defined on line 150, but no explicit reference was found in the text == Unused Reference: 'URL' is defined on line 155, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'UUID' -- Possible downref: Non-RFC (?) normative reference: ref. 'CAE RPC' -- Possible downref: Non-RFC (?) normative reference: ref. 'NCA' ** Downref: Normative reference to an Informational RFC: RFC 1321 (ref. 'MD5') -- Possible downref: Non-RFC (?) normative reference: ref. 'URI1' ** Downref: Normative reference to an Informational RFC: RFC 1630 (ref. 'URI2') ** Obsolete normative reference: RFC 1738 (ref. 'URL') (Obsoleted by RFC 4248, RFC 4266) Summary: 12 errors (**), 0 flaws (~~), 7 warnings (==), 6 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 URL Working Group Charlie Kindel 3 INTERNET-DRAFT Microsoft Corporation 4 Expires 1 Year from November, 24 1997 6 The uuid: URI scheme 8 1. STATUS OF THIS MEMO 10 This document is an Internet-Draft. Internet-Drafts are working 11 documents of the Internet Engineering Task Force (IETF), its areas, 12 and its working groups. Note that other groups may also distribute 13 working documents as Internet-Drafts. 15 Internet-Drafts are draft documents valid for a maximum of six months 16 and may be updated, replaced, or obsoleted by other documents at any 17 time. It is inappropriate to use Internet-Drafts as reference material 18 or to cite them other than as "work in progress." 20 To learn the current status of any Internet-Draft, please check the 21 "1id-abstracts.txt" listing contained in the internet-drafts Shadow 22 Directories at (Africa), 23 (Europe), 24 (Pacific Rim), 25 (US East Coast), or 26 (US West Coast). 28 Distribution of this document is unlimited. Please send comments to 29 the author at . 31 2. ABSTRACT 33 This memo describes a Universal Resource Identifier (URI) scheme that 34 allows resources to be uniquely named over time and space using 35 Universally Unique Identifiers (UUIDs). A UUID URI is a pure URI, in 36 that it contains no information about location. However due to the 37 uniqueness of UUIDs, a UUID URI is persistent over time, much like 38 URNs. UUID URIs are useful in situations where a unique identifier is 39 required that cannot or should not be tied to a particular physical 40 root namespace (such as a DNS name). 42 3. TABLE OF CONTENTS 44 1. STATUS OF THIS MEMO....................1 45 2. ABSTRACT...............................1 46 3. TABLE OF CONTENTS......................2 47 4. INTRODUCTION...........................2 48 5. UUID URI...............................3 49 6. BNF FOR THE UUID URI...................3 50 4. SECURITY CONSIDERATIONS................3 51 7. REFERENCES.............................4 52 8. AUTHOR'S ADDRESSES.....................4 53 9. APPENDIX A - UUID URNS.................4 54 10. APPENDIX B - GENERATING UUIDS..........5 56 4. INTRODUCTION 58 A UUID (also known as a GUID, for Globally Unique Identifier), is 128 59 bits long, and if generated correctly [UUID], is either guaranteed to 60 be different from all other UUIDs/GUIDs generated until 3400 A.D. or 61 extremely likely to be different (depending on the mechanism chosen). 62 UUIDs were originally used in the Network Computing System (NCS) [NCS] 63 and later in the Open Group's Distributed Computing Environment [CAE 64 RPC]. 66 One of the main reasons for using UUIDs is that no centralized 67 authority is required to administer them. As a result, generation on 68 demand can be completely automated, and they can be used for a wide 69 variety of purposes. UUID generation algorithms support very high 70 allocation rates: 10 million per second per machine if you need it, so 71 that they could even be used as transaction IDs. UUIDs have a fixed- 72 size (128-bits) which is reasonably small relative to other 73 alternatives. This fixed, relatively small size lends itself well to 74 sorting, ordering, and hashing of all sorts, storing in databases, 75 simple allocation, and ease of programming in general. The primary 76 disadvantage of UUIDs is that they are difficult for humans to parse. 78 Universal Resource Identifiers [URI1] based on UUIDs are useful in 79 situations where a unique identifier is required that cannot or should 80 not be tied to a particular physical namespace (such as a DNS name). 81 Many platforms have built-in UUID generators (any system with DCE or 82 COM support, for example). However, for those that do not the source 83 code to the reference implementation UUID generator has been made 84 available as part of the Leach and Salz Internet-Draft [UUID]. 86 5. UUID URI 88 As mentioned above, a UUID is a 128 bit value. UUIDs can be expressed 89 in either binary or string form. Because URIs are expressed as string, 90 this memo is only concerned with the string representation. A typical 91 UUID in string form looks like this: 93 f81d4fae-7dec-11d0-a765-00a0c91e6bf6 95 To enable the use of UUIDs as URI's within Internet documents this 96 memo defines a simple UUID URI scheme. Using the scheme described in 97 this memo, the above UUID would be represented as: 99 uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 101 The basic structure of a UUID URI is: 103 uuid:; 105 where is a string representation of a UUID, which is documented 106 in [UUID]. The optional set of qualifiers are specified as name/value 107 pairs separated by semi-colons. There are currently no qualifiers 108 defined. However, UUID URI parsers should be written to gracefully 109 ignore any characters that appear after the last character of the UUID 110 (UUID strings are always 36 characters long). 111 UUIDs must be generated using well known algorithms. 113 6. BNF FOR THE UUID URI 115 A uuid URI begins with the scheme prefix "uuid" and is defined by the 116 following grammar: 118 uuid-uri = "uuid:" uuid [qualifiers] 119 uuid = 8hex "-" 4hex "-" 4hex "-" 4hex "-" 12hex 120 qualifiers = [";" name = value]* 121 hex = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | 122 "8" | "9" | "a" | "b" | "c" | "d" | "e" | "f" | 123 "A" | "B" | "C" | "D" | "E" | "F" 125 The set of qualifiers and their BNF syntax are currently not defined. 127 4. SECURITY CONSIDERATIONS 129 It should not be assumed that UUIDs are hard to guess; they should not 130 be used as capabilities. 132 7. REFERENCES 134 [UUID] P. Leach, R. Salz, 'UUIDs and GUIDs', Internet-Draft, 135 , February 24, 1997. 137 [CAE RPC] CAE Specification, 'X/Open DCE: Remote Procedure Call', 138 X/Open Company Limited, Reading, Berkshire, UK 139 (xopen.co.uk), 1994. X/Open Document Number C309. ISBN 1- 140 85912-041-5. 141 142 [NCA] Lisa Zahn, et. al., 'Network Computing Architecture', 143 Prentice Hall, Englewood Cliffs, NJ, 1990 144 [MD5] R. Rivest, RFC 1321, "The MD5 Message-Digest Algorithm", 145 04/16/1992. 146 [URI1] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource 147 Identifiers (URI): Generic Syntax and Semantics", 05 Nov 148 1997. 150 [URI2] T. Berners-Lee. "Universal Resource Identifiers in WWW: A 151 Unifying Syntax for the Expression of Names and Addresses of 152 Objects on the Network as used in the World-Wide Web." RFC 153 1630, CERN, June 1994. 154 155 [URL] T. Berners-Lee, L. Masinter, and M. McCahill. "Uniform 156 Resource Locators (URL)." RFC 1738, CERN, Xerox PARC, 157 University of Minnesota, December 1994. 158 159 8. AUTHOR'S ADDRESSES 161 Charlie Kindel One Microsoft Way Redmond, WA 98052-6399, U.S.A. 162 Fax: +1 (206) 936 7329 Email: 163 165 9. APPENDIX A - UUID URNS 167 Universal Resource Names (URNs) have great promise. However they are 168 not widely implemented at the time of this writing, and it is not 169 clear when implementation will become widespread. However, it is 170 likely that UUIDs will also be useful in some situations where URNs 171 are used. For this reason, this appendix proposes a UUID URN scheme. 172 The syntax is exactly the same as the UUID URI scheme described above 173 with the exception that the uuid: scheme qualifier be preceded with 174 the urn: qualifier. For example, a UUID URN would look like this: 176 urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 178 10. APPENDIX B - GENERATING UUIDS 180 Any system that includes a DCE RPC runtime will provide built-in UUID 181 generation facilities. At the lowest level these facilities are 182 exposed through the RPC library API "uuid_create()". 184 On Windows systems, there are two equivalent APIs for generating 185 UUIDs. One is exposed by the MS RPC library (UuidCreate()), and the 186 other via the Component Object Model (COM) library (CoCreateGuid()). 187 CoCreateGuid() is simply a wrapper around UuidCreate(). 189 On systems with an RPC runtime, a command line utility named "uuidgen" 190 is provided. On the Windows platform, this tool is available as part 191 of the Win32 Software Development Kit and supports the following 192 command line syntax: 194 usage: uuidgen [-isonvh?] 195 i - Output UUID in an IDL interface template 196 s - Output UUID as an initialized C struct 197 o - redirect output to a file, specified immediately 198 after o 199 n - Number of UUIDs to generate, specified immediately 200 after n 201 v - display version information about uuidgen 202 h,? - Display command option summary 204 The command line syntax may vary from system to system. 206 Expires 1 Year from November, 24 1997