Network Working Group M. Mealling Internet-Draft NSI Expires: May 2, 2001 November 1, 2000 The 'go' URI Scheme for the Common Name Resolution Protocol draft-ietf-cnrp-uri-05 Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. 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 May 2, 2001. Copyright Notice Copyright (C) The Internet Society (2000). All Rights Reserved. Abstract This document defines a URI scheme, 'go:' to be used with the Common Name Resolution Protocol. Specifically it lays out the syntactic components and how those components are used by URI Resolution to find the available transports for a CNRP service. Care should be taken with several of the URI components because, while they may look like components found in other URI schemes, they often do not act like them. The "go" scheme has more in common with the location independent "news" scheme than any other URI scheme. Mealling Expires May 2, 2001 [Page 1] Internet-Draft CNRP URI Specification November 2000 Table of Contents 1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Syntax Rules . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1 General Syntax . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 ABNF Grammar . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3 Special Cases and Default Values . . . . . . . . . . . . . . 5 3.3.1 If there is only a server . . . . . . . . . . . . . . . . . 6 3.3.2 If server is empty then server=localhost . . . . . . . . . . 6 3.3.3 Default Port . . . . . . . . . . . . . . . . . . . . . . . . 6 3.4 Encoding Rules . . . . . . . . . . . . . . . . . . . . . . . 6 4. Transport Independence . . . . . . . . . . . . . . . . . . . 7 5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 8 6. Security Considerations . . . . . . . . . . . . . . . . . . 9 References . . . . . . . . . . . . . . . . . . . . . . . . . 10 Author's Address . . . . . . . . . . . . . . . . . . . . . . 10 A. Registration Template . . . . . . . . . . . . . . . . . . . 11 Full Copyright Statement . . . . . . . . . . . . . . . . . . 12 Mealling Expires May 2, 2001 [Page 2] Internet-Draft CNRP URI Specification November 2000 1. Goals The two goals of the CNRP[3]URI[1] are to identify both a specific common-name record at a specific server and to identify a possibly dynamic query or entry point into the query process. Since CNRP requires that the ID be a core query term, these two cases can be generalized down to simply specifying a query that contains only the ID of the item. On first glance it would seem a simple enough exercise to canonicalize the XML encoded query and then insert it into the query portion of the URL. The problem here is that, due to the encoding rules, any remotely complex query will quickly blow out the URI length limitations. The suggested solution is to provide a simplified query syntax that is a subset of what is available via the XML. Mealling Expires May 2, 2001 [Page 3] Internet-Draft CNRP URI Specification November 2000 2. Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119[4]. Mealling Expires May 2, 2001 [Page 4] Internet-Draft CNRP URI Specification November 2000 3. Syntax Rules 3.1 General Syntax The CNRP URI comes in two forms. The first form is for talking to a specific server. The second form is for expressing a query that is meant to be sent to several different CNRP services. The following two examples are for pedagogical purposes only. The complete ABNF grammar in Section 3.2 is the only authoritative syntax definition. go://[]?[]*[;=[,]] and go:*[;=[,]] 3.2 ABNF Grammar The full ABNF[2] (certain values are included by reference from RFC2396[1]): cnrp-uri = "go:" (form1 / form2) form1 = "//" [server] ["?" ((common-name *avpair) / id-req) ] form2 = common-name *avpair id-req = "id=" value avpair = ";" attribute "=" [ type "," ] value server = // as specified in RFC2396 common-name = *(unreserved | escaped) attribute = *(unreserved | escaped) value = *(unreserved | escaped) type = *(unreserved | escaped) unreserved = // as specified in RFC2396 escaped = "%" hex hex hex = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" 3.3 Special Cases and Default Values Mealling Expires May 2, 2001 [Page 5] Internet-Draft CNRP URI Specification November 2000 3.3.1 If there is only a server In the case where the CNRP URI contains only the server production then the URI identifies a given CNRP server, not any particular query that is to be done. A client can assume that this server will at least answer the 'servicequery' request. 3.3.2 If server is empty then server=localhost If the 'server' element has no value then its value MUST be assumed to be "localhost". 3.3.3 Default Port CNRP's well known port is 1096. If the port value portion of the server production is not specified then port 1096 MUST be used. 3.4 Encoding Rules The common-name, query parameters, and parameter values must be encoded using the UTF-8 encoding scheme[5], and any octet that is not one of the permitted characters per the above grammar MUST instead be represented by a "%" followed by two characters from the character set above. The two characters give the hexadecimal representation of that octet. Mealling Expires May 2, 2001 [Page 6] Internet-Draft CNRP URI Specification November 2000 4. Transport Independence As stated in the CNRP protocol specification[3], CNRP is allowed to be expressed over multiple transport protocols with HTTP being mandatory to implement. In the case where a client attempts to resolve a CNRP URI and it knows nothing about the service being referenced in that URI, then it SHOULD use HTTP on the CNRP default port (1096). Mealling Expires May 2, 2001 [Page 7] Internet-Draft CNRP URI Specification November 2000 5. Examples go:Mercedes%20Benz This example shows a general query for the common-name "Mercedes Benz". The intent is that the query should be packaged with any client provided defaults and sent to the one or more services that the client has configured to ask. go://?Mercedes%20Benz This example shows a general query for the common-name "Mercedes Benz" that is sent to the server running on the 'localhost'. go://cnrp.foo.com?Mercedes%20Benz;geography=US-ga This example shows a query for the common-name "Mercedes Benz" in the geographic area "US-ga" which should be sent to the server found at cnrp.foo.com. go://cnrp.foo.org?Martin%20J.%20D%C3%BCrst This example includes a UTF-8 character encoded using hex escaping. The value encoded is a u-umlaut (a 'u' with two dots over it). This simple query is sent to a server found at cnrp.foo.org with no parameters go://cnrp.foo.com?id=5432345 Here only an id is given which means that his example points directly at a particular common-name record on a particular server. This example would probably be found in a link on a web page of some type. Mealling Expires May 2, 2001 [Page 8] Internet-Draft CNRP URI Specification November 2000 6. Security Considerations In addition to the security considerations inherent in CNRP itself (see the Security Considerations section of RFC XXXX[3]), the URI mechanism can also be used to retrieve a URI identifying some other site by including just the ID and not the common-name being linked to. I.e. the user may think he/she is being shown the URI currently mapped to the "BMW" common-name but in the case where only the ID is used the actual common-name is not part of the URI, thus making it possible to use a CNRP URI without knowing which common-name it is referring to. Mealling Expires May 2, 2001 [Page 9] Internet-Draft CNRP URI Specification November 2000 References [1] Berners-Lee, T., Fielding, R.T. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, August 1998. [2] Crocker, D., "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997. [3] Moseley, M., Mealling, M. and N. Popp, "Common Name Resolution Protocol (CNRP)", RFC XXXX, Internet-Draft draft-ietf-cnrp-protocol-02, February 2000. [4] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, BCP 14, March 1997. [5] The Unicode Consortium, "The Unicode Standard, Version 2.0: Appendix A.2", ISBN 0-201-48345-9, January 1988. Author's Address Michael Mealling Network Solutions, Inc. 505 Huntmar Park Drive Herndon, VA 22070 US Phone: (703) 742-0400 EMail: michaelm@netsol.com Mealling Expires May 2, 2001 [Page 10] Internet-Draft CNRP URI Specification November 2000 Appendix A. Registration Template URL scheme name: go URL scheme syntax: Section 3.2 Character encoding considerations: Section 3.4 Intended usage: Section 1 Applications and/or protocols which use this scheme: [3] Interoperability considerations: None not specified in [3] Security considerations: Section 6 Relevant publications: [3] Contact: CNRP Working Group Author/Change Controller: IESG Mealling Expires May 2, 2001 [Page 11] Internet-Draft CNRP URI Specification November 2000 Full Copyright Statement Copyright (C) The Internet Society (2000). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implmentation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS 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. Acknowledgement Funding for the RFC editor function is currently provided by the Internet Society. Mealling Expires May 2, 2001 [Page 12]