rfc2652.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 1,236 行 · 第 1/3 页

TXT
1,236
字号






Network Working Group                                          J. Allen
Request for Comments: 2652                         WebTV Networks, Inc.
Category: Standards Track                                   M. Mealling
                                                Network Solutions, Inc.
                                                            August 1999


     MIME Object Definitions for the Common Indexing Protocol (CIP)

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.

Copyright Notice

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

Abstract

   The Common Indexing Protocol (CIP) is used to pass indexing
   information from server to server in order to facilitate query
   routing. The protocol is comprised of several MIME objects being
   passed from server to server. This document describes the definitions
   of those objects as well as the methods and requirements needed to
   define a new index type.

1. Introduction

   The Common Indexing Protocol (CIP) is used to pass indexes between
   servers that combine multiple indexes and/or route queries based on
   those indexes. The overall framework for the protocol is specified in
   the CIP Framework document [FRAMEWORK]. This document should be read
   within the context of that document as there are fundamental concepts
   contained in the framework that are not fully explained here.

   Since there are several different ways to index a given database
   there will be multiple types of indexes to pass.  These indexes may
   have different transport requirements, different ways of specifying
   parameters, and different referral rules. These different
   requirements are handled by encapsulating the indexes within MIME
   wrappers in order to have a standardized way to specify those
   different parameters.





Allen & Mealling            Standards Track                     [Page 1]

RFC 2652               MIME Definitions for CIP              August 1999


   Appendix A contains the actual MIME [RFC2046] registration templates
   sent to the IANA for registration [RFC2048].

   This document uses language like SHOULD and SHALL that have special
   meaning as specified in "Key words for use in RFCs to Indicate
   Requirement Levels" [RFC2119].

2.0 CIP Transactions

   Messages passed by CIP implementations over reliable transport
   mechanisms fall into three categories: requests, responses and
   results. All requests result in either a response or a result. A
   result sent in response to a request must be interpreted as a
   successful operation.

   Requests, responses and results are formatted as MIME [RFC2046]
   messages. The specific MIME types involved are defined below.

   As with all MIME objects, CIP messages may be wrapped in a security
   multipart package to provide authentication and privacy. The security
   policy with respect to all messages is implementation defined, when
   not explicitly discussed below. CIP implementors are strongly urged
   to allow server administrators maximum configurability to secure
   their servers against maliciously sent anonymous CIP messages. In
   general, operations which can permanently change the server's state
   in a harmful way should only take place upon receipt of a properly
   signed message from a trusted CIP peer or administrator. Implementors
   should provide appropriate auditing capabilities so that both
   successful and failed requests can be tracked by the server
   administrator.

   Since these MIME objects can and will be sent over several different
   protocols, body termination is specified by the transfer protocol.
   New protocols are encouraged to use SMTP [RFC821] style body
   termination.

   Finally, since MIME objects can specify their own encoding, the
   line-breaks contained within each body are defined by the encoding.
   Thus, instead of specifying them as carriage-return and/or linefeed,
   the identifier <linebreak> is used. Linebreaks in the headers and
   separating the body from the headers follow existing standards.










Allen & Mealling            Standards Track                     [Page 2]

RFC 2652               MIME Definitions for CIP              August 1999


2.1 Common syntactic definitions

   There are certain syntactic elements common to all of the CIP
   transactions. These include type, DSI and the Base-URI.

2.1.1 The "application/index" MIME type tree

   Due to requirements in RFC2048 concerning objects that have the same
   type but different syntaxes, CIP objects will use the
   application/index tree but include "facets" [RFC2048] which extend it
   as other types have done with respect to global elements and vendor
   specific enhancements. Thus the tree is divided up into the following
   branches:

      application/index.cmd._command_
      application/index.response
      application/index.obj._type_
      application/index.vnd._xxx_

      _command_ is a command as specified here. It contains commands and
      their arguments.

      _type_ identifies what type of CIP index object is contained
      within the body. It is unique among all other reserved types.
      Reserved types are those previously documented by other CIP index
      object specifications, according to standard IETF processes.

      _xxx_ is an identifier specified by a vendor for use by that
      vendor in operations specifically to do with indexes.

   All of the above identifiers follow the rules in RFC2048 for valid
   MIME types. In addition commands, responses and types are limited by
   this document to consist of from 1 to 20 characters from the set [a-
   zA-Z0-9-]; that is, all upper and lower case letters, all digits, and
   the ASCII minus character (decimal 45). Though type names may be
   specified case sensitively, they must be compared and otherwise
   processed case insensitively.

   Appendix A contains the registration template for the
   application/index tree.

2.1.2 DSI

   A dataset identifier is an identifier chosen from any part of the
   ISO/CCITT OID space. The DSI uniquely identifies a given dataset
   among all datasets indexed by CIP.





Allen & Mealling            Standards Track                     [Page 3]

RFC 2652               MIME Definitions for CIP              August 1999


   As currently defined, OID's are an unbounded sequence of unbounded
   integers. While this creates an infinite numbering space, it presents
   problems for implementors dealing with machines with finite
   resources. To ease implementation, this document specifies an ASCII
   encoding of the OID, and specifies limits which make implementation
   easier.

   For the purposes of interchange in CIP messages, an OID must conform
   to the following rules:

      dsi          = integer *( "." integer)
      integer      = all-digits / (one-to-nine *all-digits)
      one-to-nine  = "1" / "2" / "3" / "4" / "5" / "6" / "7" /
                     "8" / "9"
      all-digits   = "0" / one-to-nine

   Under no circumstances shall the total length of the resulting string
   exceed 255 characters. OID's which cannot, due to their length,
   conform to these rules must not be used as CIP dataset identifiers.

   An implementation must not attempt to parse the individual integers
   unless it is prepared to handle arbitrary-length integers. Treating
   the DSI as anything other than an opaque string of US-ASCII
   characters is not recommended.

   Two CIP DSI's are considered to match if both conform to the above
   rules and every number matches.

2.1.3. Base-URI

   CIP index objects carry base-URI's to facilitate referral generation
   based on the index object. The base-URI parameter carries a
   whitespace-delimited list of URL's. URL's are defined in RFC-1738.
   The exact rules are as follows:

      base-uri    = genericurl *( 1*whitespace genericurl )
      whitespace  = "<space>" (decimal 32) /
                    "<tab>"   (decimal 9)  /
                    "<cr>"    (decimal 13) /
                    "<lf>"    (decimal 10)
      genericurl = { as specified in RFC-1738, section 5 }

2.2 Response format

   All requests must be followed by a response code, except in the cases
   where a return path is unavailable.

   The definition for this MIME type is:



Allen & Mealling            Standards Track                     [Page 4]

RFC 2652               MIME Definitions for CIP              August 1999


      MIME type name:          application
      MIME subtype name:       index.response
      Required parameters:      code
      Optional parameters:     charset
      Security considerations: (See Section 4)

   The code parameter contains a 3 digit return code that denotes the
   status of the last command.

   The format of the body is such that the first line is interpreted as
   the comment corresponding to the code. As with most response codes
   this comment is intended for human consumption and may not exist and
   must not be depended on by the protocol. Subsequent lines in the body
   are reserved for each response to define.  In the case where the
   comment is not given the first must be an empty line.

      body = comment linebreak payload
      comment = { any text }
      linebreak = (decimal 13) (decimal 10)
      payload = { any text }

   The charset parameter has its normal MIME meaning. Below are several
   examples:

   [begin MIME]
   Content-type: application/index.response; code=220

   CIP Server v1.0 ready!<linebreak>
   [end MIME]

   [begin MIME]
   Content-type: application/index.response; code=500

   MIME formatting problem<linebreak>
   [end MIME]

   [begin MIME]
   Content-type: application/index.response; code=520

   <linebreak>
   [end MIME]

   While the responses described in this document do not utilize the
   rest of the lines in the body of a response implementors should take
   care to not disallow it in the future. A good example would be a
   message specifying that a poll request did not contain required
   attributes. This message might look like this:




Allen & Mealling            Standards Track                     [Page 5]

RFC 2652               MIME Definitions for CIP              August 1999


   [begin MIME]
   Content-type: application/index.response; code=502

   Request is missing required CIP attributes
   Missing-Attribute: attribute1
   Missing-Attribute: attribute2
   Missing-Attribute: attribute3
   [end MIME]

   The meaning of the various digits in the response codes is discussed
   in RFC-821, Appendix E.

   See Appendix B for a list of the valid response codes.

2.3 Command format

   A CIP command either initiates an index transfer, interrogates the
   state of the receiver-CIP (or the server's participation in the
   mesh), or changes the state of the server (or the server's place in
   the mesh).

   CIP commands are sent as a MIME message of type
   "application/index.cmd._command_". The definition for this MIME type
   tree follows:

      MIME type name:          application
      MIME subtype name:       index.cmd._command_
      Optional parameters:     type, dsi
      Security considerations: (See Section 4)

   The format of the body is defined by each command. A general
   attribute/value pair orientation is preserved throughout the
   following specified commands. Those developing future command should
   attempt to maintain that orientation but are not required to do so.

   In the following sections, the server's response for each possible
   value for "command" is defined. Note that the parameters listed as
   optional above are only optional with respect to the generic MIME
   form. The optional parameters are only optional with respect to MIME
   parsing. If one or more of the parameters needed to fulfill a command
   is missing, a response code of 502 is returned.

   Extra optional parameters which are unrecognized must be silently
   ignored.







Allen & Mealling            Standards Track                     [Page 6]

RFC 2652               MIME Definitions for CIP              August 1999


2.3.1 No-operation

      Command Name:        application/index.cmd.noop
      Required parameters: (none)

   A CIP command with the "command" parameter set to "noop" must be
   acknowledged with response type code 200 (command OK, no response
   forthcoming).

   This command must not require a signed MIME object. Implementations
   should accept commands which have been validly signed.

   Example:

   [begin MIME]
   Content-type: application/index.cmd.noop

   [end MIME]

   Note the lack of a body but how the <linebreak> pair is still
   preserved after the Content-type header.

2.3.2 Poll

      Request Name:        application/index.cmd.poll
      Required parameters: type, dsi

   The "poll" command is used by a poller to request the transfer of an
   index object. It requires the following parameters:

      type:      The index object type requested
      dsi:       The dataset which the index should cover

   If there are no index objects available for a given DSI, or the
   receiver-CIP does not support a given index object type, the
   receiver-CIP must respond with response code 200, (successful, no
   response forthcoming).  Otherwise, the response code must be 201
   (successful, response is forthcoming).

   The security policy for polling commands is wholly implementation
   defined. Implementations may be configured to accept or reject
   anonymous poll commands.

   Example:

   [begin MIME]
   Content-type: application/index.cmd.poll; type="simple";
           dsi= "1.3.5.7.9"



Allen & Mealling            Standards Track                     [Page 7]

RFC 2652               MIME Definitions for CIP              August 1999


   Template: contact name address phone<linebreak>
   Start-time: Fri May 30 14:25:30 EDT 1997<linebreak>
   End-time: Sat May 31 14:25:30 EDT 1997<linebreak>
   [end MIME]

2.3.3 DataChanged

      Request Name:        application/index.cmd.datachanged
      Required parameters: type, dsi

   The "datachanged" command is used by a pollee to notify a poller that
   the data within an index has changed. It requires the following
   parameters:

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?