Network Working Group M. Mealling Internet-Draft NSI Expires: November 30, 2000 June 2000 The 'go' URI Scheme for the Common Name Resolution Protocol draft-ietf-cnrp-uri-02 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." To view the entire list of Internet-Draft Shadow Directories, see http://www.ietf.org/shadow.html. This Internet-Draft will expire on November 30, 2000. 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 November 30, 2000 [Page 1] Internet-Draft CNRP URI Specification June 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 . . . . . . . . . . . . . . . . . 5 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 November 30, 2000 [Page 2] Internet-Draft CNRP URI Specification June 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 November 30, 2000 [Page 3] Internet-Draft CNRP URI Specification June 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 November 30, 2000 [Page 4] Internet-Draft CNRP URI Specification June 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 ABNF 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 / id-req) *avpair ] form2 = common-name *avpair id-req = "id=" value avpair = ";" attribute "=" value server = // as specified in RFC2396 common-name = *(unreserved | escaped) attribute = *(unreserved | escaped) value = *(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 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 Mealling Expires November 30, 2000 [Page 5] Internet-Draft CNRP URI Specification June 2000 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, or its 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 November 30, 2000 [Page 6] Internet-Draft CNRP URI Specification June 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. Mealling Expires November 30, 2000 [Page 7] Internet-Draft CNRP URI Specification June 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://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 November 30, 2000 [Page 8] Internet-Draft CNRP URI Specification June 2000 6. Security Considerations In addition to the security considerations inherent in CNRP itself, the URI mechanism can also be used to redirect to 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 linked to where ever the BMW common-name currently points 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 November 30, 2000 [Page 9] Internet-Draft CNRP URI Specification June 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, "CNRP PROTOCOL SPECIFICATION", 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. Mealling Expires November 30, 2000 [Page 10] Internet-Draft CNRP URI Specification June 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 November 30, 2000 [Page 11] Internet-Draft CNRP URI Specification June 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 November 30, 2000 [Page 12]