rfc-3368

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

M. Mealling
date2002-08 streamLegacy statusPROPOSED STANDARD pages8 canonicalhttps://www.rfc-editor.org/rfc/rfc3368 doi10.17487/RFC3368
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.

Extracted elements (13)

design-rationale §1

A simplified query syntax that is a subset of the full XML was chosen because canonicalizing the XML encoded query and inserting it into the URL query portion would quickly exceed URI length limitations for any remotely complex query.

design-rationale §1

The 'go' scheme has more in common with the location-independent 'news' scheme than any other URI scheme. Care should be taken because URI components may look like those in other schemes but often do not behave the same way.

interoperability-note §4

CNRP is allowed to be expressed over multiple transport protocols with HTTP being mandatory to implement, as stated in the CNRP protocol specification (RFC 3367). The 'go' URI scheme is designed to be transport-independent.

normative-requirement §3.3.3 SHOULD

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.

normative-requirement §3.3.2 MUST

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

normative-requirement §4 SHOULD

In the case where a client attempts to resolve a CNRP URI and it knows nothing about the service being referenced, it SHOULD use HTTP on the CNRP default port (1096).

normative-requirement §3.4 MUST

The common-name, query parameters, and parameter values MUST be encoded using the UTF-8 encoding scheme, and any octet that is not one of the permitted characters MUST instead be represented by a '%' followed by two hexadecimal characters.

protocol-element §3.2

An id-req query component ('id=value') can be used to point directly at a particular common-name record on a particular server, without specifying the common-name string itself.

protocol-element §3.1

The 'go' URI scheme comes in two forms: form1 for querying a specific server ('go://[<host>]?[<common-name>]*[;<attribute>=[<type>,]<value>]') and form2 for a location-independent query ('go:<common-name>*[;<attribute>=[<type>,]<value>]').

protocol-element §3.3.1

When the CNRP URI contains only the server production with no query, the URI identifies a given CNRP server rather than a particular query. A client can assume that this server will at least answer the 'servicequery' request.

registry §7

IANA is asked to register the 'go' URL scheme using the registration template in Appendix A, in accordance with RFC 2717. The registration covers scheme syntax (Section 3.2), character encoding (Section 3.4), and security considerations (Section 6).

registry

security-consideration §6

The URI mechanism can be used to retrieve a URI identifying some other site by including only the ID and not the common-name being linked to, making it possible to use a CNRP URI without the user knowing which common-name it refers to. This creates a potential spoofing or misdirection risk.

security

wire-format §3.2

The full ABNF grammar defines cnrp-uri as 'go:' followed by form1 or form2. form1 uses '//' with an optional server and optional query; form2 is a bare common-name with optional attribute-value pairs. The avpair production is ';' attribute '=' [type ','] value.