Network Working Group                                        M. Mealling
Request for Comments: 3368                                VeriSign, Inc.
Category: Standards Track                                    August 2002
        
Network Working Group                                        M. Mealling
Request for Comments: 3368                                VeriSign, Inc.
Category: Standards Track                                    August 2002
        

The 'go' URI Scheme for the Common Name Resolution Protocol

通用名称解析协议的“go”URI方案

Status of this Memo

本备忘录的状况

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

本文件规定了互联网社区的互联网标准跟踪协议,并要求进行讨论和提出改进建议。有关本协议的标准化状态和状态,请参考当前版本的“互联网官方协议标准”(STD 1)。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (2002). All Rights Reserved.

版权所有(C)互联网协会(2002年)。版权所有。

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.

此文档定义了一个URI方案“go:”,用于公共名称解析协议。具体来说,它列出了语法组件以及URI解析如何使用这些组件来查找CNRP服务的可用传输。应该注意几个URI组件,因为尽管它们看起来可能类似于其他URI方案中的组件,但它们的行为通常与它们不同。“go”方案与位置无关的“news”方案比任何其他URI方案有更多的共同点。

Table of Contents

目录

   1.    Goals  . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.    Terminology  . . . . . . . . . . . . . . . . . . . . . . . .  2
   3.    Syntax Rules . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.1   General Syntax . . . . . . . . . . . . . . . . . . . . . . .  3
   3.2   ABNF Grammar . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.3   Special Cases and Default Values . . . . . . . . . . . . . .  4
   3.3.1 If There is Only a Server  . . . . . . . . . . . . . . . . .  4
   3.3.2 If Server is Empty Then server=localhost . . . . . . . . . .  4
   3.3.3 Default Port . . . . . . . . . . . . . . . . . . . . . . . .  4
   3.4   Encoding Rules . . . . . . . . . . . . . . . . . . . . . . .  4
   4.    Transport Independence . . . . . . . . . . . . . . . . . . .  4
   5.    Examples . . . . . . . . . . . . . . . . . . . . . . . . . .  4
   6.    Security Considerations  . . . . . . . . . . . . . . . . . .  5
   7.    IANA Considerations  . . . . . . . . . . . . . . . . . . . .  5
         References . . . . . . . . . . . . . . . . . . . . . . . . .  6
   A.    Registration Template  . . . . . . . . . . . . . . . . . . .  7
         Author's Address . . . . . . . . . . . . . . . . . . . . . .  7
         Full Copyright Statement . . . . . . . . . . . . . . . . . .  8
        
   1.    Goals  . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.    Terminology  . . . . . . . . . . . . . . . . . . . . . . . .  2
   3.    Syntax Rules . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.1   General Syntax . . . . . . . . . . . . . . . . . . . . . . .  3
   3.2   ABNF Grammar . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.3   Special Cases and Default Values . . . . . . . . . . . . . .  4
   3.3.1 If There is Only a Server  . . . . . . . . . . . . . . . . .  4
   3.3.2 If Server is Empty Then server=localhost . . . . . . . . . .  4
   3.3.3 Default Port . . . . . . . . . . . . . . . . . . . . . . . .  4
   3.4   Encoding Rules . . . . . . . . . . . . . . . . . . . . . . .  4
   4.    Transport Independence . . . . . . . . . . . . . . . . . . .  4
   5.    Examples . . . . . . . . . . . . . . . . . . . . . . . . . .  4
   6.    Security Considerations  . . . . . . . . . . . . . . . . . .  5
   7.    IANA Considerations  . . . . . . . . . . . . . . . . . . . .  5
         References . . . . . . . . . . . . . . . . . . . . . . . . .  6
   A.    Registration Template  . . . . . . . . . . . . . . . . . . .  7
         Author's Address . . . . . . . . . . . . . . . . . . . . . .  7
         Full Copyright Statement . . . . . . . . . . . . . . . . . .  8
        
1. Goals
1. 目标

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.

CNRP[3]URI[1]的两个目标是识别特定服务器上的特定通用名称记录,以及识别查询过程中可能的动态查询或入口点。因为CNRP要求ID是一个核心查询词,所以这两种情况可以概括为只指定一个只包含项ID的查询。

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.

乍一看,规范化XML编码的查询并将其插入URL的查询部分似乎是一个足够简单的练习。这里的问题是,由于编码规则,任何远程复杂查询都会很快超出URI长度限制。建议的解决方案是提供一个简化的查询语法,该语法是通过XML可用的语法的子集。

2. Terminology
2. 术语

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].

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照RFC 2119[4]中所述进行解释。

3. Syntax Rules
3. 语法规则
3.1 General Syntax
3.1 一般语法

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.

CNRP URI有两种形式。第一种形式是用于与特定服务器对话。第二种形式用于表示要发送到多个不同CNRP服务的查询。以下两个示例仅用于教学目的。第3.2节中完整的ABNF语法是唯一权威的语法定义。

   go://[<host>]?[<common-name>]*[;<attribute>=[<type>,]<value>]
        
   go://[<host>]?[<common-name>]*[;<attribute>=[<type>,]<value>]
        

and

   go:<common-name>*[;<attribute>=[<type>,]<value>]
        
   go:<common-name>*[;<attribute>=[<type>,]<value>]
        
3.2 ABNF Grammar
3.2 ABNF语法

The full ABNF [2] (certain values are included by reference from RFC 2396 [1]):

完整ABNF[2](某些值通过参考RFC 2396[1]包括在内):

   cnrp-uri      = "go:" (form1 / form2)
   form1         = "//" [server] ["?" ((common-name *avpair) / id-req) ]
   form2         = common-name *avpair
        
   cnrp-uri      = "go:" (form1 / form2)
   form1         = "//" [server] ["?" ((common-name *avpair) / id-req) ]
   form2         = common-name *avpair
        
   id-req        = "id=" value
   avpair        = ";" attribute "=" [ type "," ] value
        
   id-req        = "id=" value
   avpair        = ";" attribute "=" [ type "," ] value
        
   server        = // as specified in RFC2396
        
   server        = // as specified in RFC2396
        
   common-name     = *(unreserved | escaped)
   attribute       = *(unreserved | escaped)
   value           = *(unreserved | escaped)
   type            = *(unreserved | escaped)
        
   common-name     = *(unreserved | escaped)
   attribute       = *(unreserved | escaped)
   value           = *(unreserved | escaped)
   type            = *(unreserved | escaped)
        
   unreserved      = // as specified in RFC2396
        
   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"
        
   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 特殊情况和默认值
3.3.1 If There is Only a Server
3.3.1 如果只有一台服务器

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.

在CNRP URI仅包含服务器产品的情况下,则URI标识给定的CNRP服务器,而不是要执行的任何特定查询。客户端可以假定此服务器至少会回答“servicequery”请求。

3.3.2 If Server is Empty Then server=localhost
3.3.2 如果服务器为空,则服务器=本地主机

If the 'server' element has no value then its value MUST be assumed to be "localhost".

如果“server”元素没有值,则必须假定其值为“localhost”。

3.3.3 Default Port
3.3.3 默认端口

CNRP's well known HTTP transport port is 1096. If the port value portion of the server production is not specified then port 1096 SHOULD be used if the client has no prior knowledge about other ports or transports that the service may support.

CNRP众所周知的HTTP传输端口是1096。如果未指定服务器产品的端口值部分,则如果客户端事先不知道服务可能支持的其他端口或传输,则应使用端口1096。

3.4 Encoding Rules
3.4 编码规则

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 <hex> character set above. The two characters give the hexadecimal representation of that octet.

公共名称、查询参数和参数值必须使用UTF-8编码方案[5]进行编码,任何不是上述语法中允许的字符之一的八位字节都必须用“%”表示,后跟上述<hex>字符集中的两个字符。这两个字符表示该八位字节的十六进制形式。

4. Transport Independence
4. 运输独立性

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).

如CNRP协议规范[3]所述,CNRP允许在多个传输协议上表示,HTTP是强制实现的。如果客户机试图解析CNRP URI,但对该URI中引用的服务一无所知,则应在CNRP默认端口上使用HTTP(1096)。

5. Examples
5. 例子

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此示例显示了通用名称“Mercedes-Benz”的一般查询。其目的是,查询应与任何客户端提供的默认值打包,并发送到客户端配置为请求的一个或多个服务。

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://?Mercedes%20Benz此示例显示发送到“localhost”上运行的服务器的通用名称“Mercedes Benz”的一般查询。

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.

转到:cnrp.foo.com?奔驰%20Benz;geography=US ga此示例显示了对地理区域“US ga”中的通用名称“Mercedes Benz”的查询,该查询应发送到位于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.org?Martin%20J.%20D%C3%BCrst此示例包括使用十六进制转义编码的UTF-8字符。编码的值是一个u-umlaut(一个上面有两个点的“u”)。这个简单的查询被发送到cnrp.foo.org上的一个服务器,没有任何参数。

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.

go://cnrp.foo.com?id=5432345这里只给出了一个id,这意味着他的示例直接指向特定服务器上的特定公共名称记录。这个例子可能会在某种类型的网页上的链接中找到。

6. Security Considerations
6. 安全考虑

In addition to the security considerations inherent in CNRP itself (see the Security Considerations section of RFC 3367 [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.

除了CNRP本身固有的安全注意事项(参见RFC 3367[3]的安全注意事项部分),URI机制还可用于检索标识其他站点的URI,方法是只包含ID,而不包含链接到的公共名称。即,用户可能认为他/她正在被显示当前映射到“BMW”公共名称的URI,但在仅使用ID的情况下,实际公共名称不是URI的一部分,从而使得可以使用CNRP URI而不知道它所指的公共名称。

7. IANA Considerations
7. IANA考虑

The IANA is asked to register the URL registration template found in Appendix A in accordance with RFC 2717 [6].

要求IANA根据RFC 2717[6]注册附录A中的URL注册模板。

References

工具书类

[1] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, August 1998.

[1] Berners Lee,T.,Fielding,R.和L.Masinter,“统一资源标识符(URI):通用语法”,RFC 2396,1998年8月。

[2] Crocker, D., "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.

[2] Crocker,D.,“语法规范的扩充BNF:ABNF”,RFC 2234,1997年11月。

[3] Popp, N., Mealling, M. and M. Moseley, "Common Name Resolution Protocol (CNRP)", RFC 3367, August 2002.

[3] Popp,N.,Mealling,M.和M.Moseley,“共同名称解析协议(CNRP)”,RFC 3367,2002年8月。

[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[4] Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[5] The Unicode Consortium, "The Unicode Standard, Version 2.0: Appendix A.2", ISBN 0-201-48345-9, January 1988.

[5] Unicode联盟,“Unicode标准,版本2.0:附录A.2”,ISBN 0-201-48345-9,1988年1月。

[6] Petke, R. and I. King, "Registration Procedures for URL Scheme Names", BCP 35, RFC 2717, November 1999.

[6] Petke,R.和I.King,“URL方案名称的注册程序”,BCP 35,RFC 2717,1999年11月。

Appendix A. Registration Template
附录A.注册模板

URL scheme name: go

URL方案名称:go

URL scheme syntax: Section 3.2

URL方案语法:第3.2节

Character encoding considerations: Section 3.4

字符编码注意事项:第3.4节

Intended usage: Section 1

预期用途:第1节

Applications and/or protocols which use this scheme: [3]

使用此方案的应用程序和/或协议:[3]

Interoperability considerations: None not specified in [3]

互操作性注意事项:[3]中未规定

Security considerations: Section 6

安全考虑:第6节

Relevant publications: [3]

相关出版物:[3]

Contact: CNRP Working Group

联系人:CNRP工作组

Author/Change Controller: IESG

作者/变更控制员:IESG

Author's Address

作者地址

Michael Mealling VeriSign, Inc. 21345 Ridgetop Circle Dulles, VA 20170 US

美国弗吉尼亚州杜勒斯市Ridgetop Circle Dulles 21345号Michael Mealling VeriSign公司,邮编:20170

Phone: (703) 742-0400 EMail: michael@verisignlabs.com

电话:(703)742-0400电子邮件:michael@verisignlabs.com

Full Copyright Statement

完整版权声明

Copyright (C) The Internet Society (2002). All Rights Reserved.

版权所有(C)互联网协会(2002年)。版权所有。

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 implementation 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.

RFC编辑功能的资金目前由互联网协会提供。