home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2703.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  42.2 KB  |  1,124 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                         G. Klyne
  8. Request for Comments: 2703                    5GM/Content Technologies
  9. Category: Informational                                 September 1999
  10.  
  11.  
  12.            Protocol-independent Content Negotiation Framework
  13.  
  14. Status of this Memo
  15.  
  16.    This memo provides information for the Internet community.  It does
  17.    not specify an Internet standard of any kind.  Distribution of this
  18.    memo is unlimited.
  19.  
  20. Copyright Notice
  21.  
  22.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  23.  
  24. Abstract
  25.  
  26.    A number of Internet application protocols have a need to provide
  27.    content negotiation for the resources with which they interact.  MIME
  28.    media types [1,2] provide a standard method for handling one major
  29.    axis of variation, but resources also vary in ways which cannot be
  30.    expressed using currently available MIME headers.
  31.  
  32.    This memo sets out terminology, an abstract framework and goals for
  33.    protocol-independent content negotiation, and identifies some
  34.    technical issues which may need to be addressed.
  35.  
  36.    The abstract framework does not attempt to specify the content
  37.    negotiation process, but gives an indication of the anticipated scope
  38.    and form of any such specification.  The goals set out the desired
  39.    properties of a content negotiation mechanism.
  40.  
  41. Table of Contents
  42.  
  43.    1. Introduction.............................................2
  44.      1.1 Structure of this document ...........................3
  45.      1.2 Discussion of this document ..........................3
  46.    2. Terminology and definitions..............................3
  47.    3. Framework................................................7
  48.      3.1 Abstract framework for content negotiation ...........8
  49.         3.1.1 The negotiation process..........................9
  50.      3.2 Abstract model for negotiation metadata .............10
  51.      3.3 Text representation for negotiation metadata ........11
  52.      3.4 ASN.1 description of negotiation metadata ...........11
  53.      3.5 Protocol binding guidelines .........................11
  54.    4. Goals...................................................12
  55.  
  56.  
  57.  
  58. Klyne                        Informational                      [Page 1]
  59.  
  60. RFC 2703        Protocol-independent Content Negotiation  September 1999
  61.  
  62.  
  63.      4.1 Generic framework and metadata goals ................12
  64.      4.2 Protocol-specific deployment goals ..................12
  65.    5. Technical issues........................................14
  66.      5.1 Non-message resource transfers ......................14
  67.      5.2 End-to-end vs hop-by-hop negotiations ...............14
  68.      5.3 Third-party negotiation .............................15
  69.      5.4 Use of generic directory and resolution services ....15
  70.      5.5 Billing issues ......................................15
  71.      5.6 Performance considerations ..........................15
  72.      5.7 Confidence levels in negotiated options .............16
  73.    6. Security Considerations.................................16
  74.      6.1 Privacy .............................................16
  75.      6.2 Denial of service attacks ...........................17
  76.      6.3 Mailing list interactions ...........................17
  77.      6.4 Use of security services ............................17
  78.      6.5 Disclosure of security weaknesses ...................18
  79.         6.5.1 User agent identification.......................18
  80.         6.5.2 Macro viruses...................................18
  81.         6.5.3 Personal vulnerability..........................18
  82.      6.6 Problems of negotiating security ....................18
  83.    7. Acknowledgements........................................18
  84.    8. References..............................................19
  85.    9. Author's Address........................................19
  86.    10. Full Copyright Statement...............................20
  87.  
  88. 1. Introduction
  89.  
  90.    A number of Internet application protocols have a need to provide
  91.    content negotiation for the resources with which they interact.
  92.    While MIME media types [1, 2] provide a standard method for handling
  93.    one major axis of variation, resources also vary in ways which cannot
  94.    be expressed using currently available MIME headers.
  95.  
  96.    This memo sets out terminology, a framework and some goals for a
  97.    protocol-independent content negotiation framework, and identifies
  98.    some technical issues which may need to be addressed.
  99.  
  100.    The framework does not attempt to specify the content negotiation
  101.    process; rather it gives an indication of the anticipated scope and
  102.    form of any such specifications.
  103.  
  104.    The statement of goals is intended to set out the desired properties
  105.    of a content negotiation framework, while trying to avoid any
  106.    assumption of the form that framework may take.
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Klyne                        Informational                      [Page 2]
  115.  
  116. RFC 2703        Protocol-independent Content Negotiation  September 1999
  117.  
  118.  
  119. 1.1 Structure of this document
  120.  
  121.    The main part of this memo addresses four main areas:
  122.  
  123.    Section 2 defines some of the terms which are used with special
  124.    meaning.
  125.  
  126.    Section 3 outlines a proposed framework for describing protocol-
  127.    independent content negotiation.
  128.  
  129.    Section 4 describes various goals for content negotiation.
  130.  
  131.    Section 5 discusses some of the technical issues which are raised by
  132.    this document, with cross-references to other work where appropriate.
  133.  
  134. 1.2 Discussion of this document
  135.  
  136.    Discussion of this document should take place on the content
  137.    negotiation and media feature registration mailing list hosted by the
  138.    Internet Mail Consortium (IMC).
  139.  
  140.    Please send comments regarding this document to:
  141.  
  142.       ietf-medfree@imc.org
  143.  
  144.    To subscribe to this list, send a message with the body 'subscribe'
  145.    to "ietf-medfree-request@imc.org".
  146.  
  147.    To see what has gone on before you subscribed, please see the mailing
  148.    list archive at:
  149.  
  150.       http://www.imc.org/ietf-medfree/
  151.  
  152. 2. Terminology and definitions
  153.  
  154.    This section introduces a number of terms which are used with
  155.    specific meaning in the content negotiation documents. Many of these
  156.    have been copied and adapted from [5].
  157.  
  158.    The terms are listed in alphabetical order.
  159.  
  160.    Capability
  161.              An attribute of a sender or receiver (often the receiver)
  162.              which indicates an ability to generate or process a
  163.              particular type of message content.
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Klyne                        Informational                      [Page 3]
  171.  
  172. RFC 2703        Protocol-independent Content Negotiation  September 1999
  173.  
  174.  
  175.    Characteristic
  176.              Some description of a sender or receiver which indicates a
  177.              possible capability or preference.
  178.  
  179.    Choice message
  180.              A choice message returns a representation of some selected
  181.              variant or variants, together with the variant list of the
  182.              negotiable resource. It can be generated when the sender
  183.              has sufficient information to select a variant for the
  184.              receiver, and also requires to inform the receiver about
  185.              the other variants available.
  186.  
  187.    Connected mode
  188.              A mode of operation in which sender and receiver are
  189.              directly connected, and hence are not prevented from
  190.              definitively determining each other's capabilities.  (See
  191.              also: Session mode)
  192.  
  193.    Content feature
  194.              (see Feature)
  195.  
  196.    Content negotiation
  197.              An exchange of information (negotiation metadata) which
  198.              leads to selection of the appropriate representation
  199.              (variant) when transferring a data resource.
  200.  
  201.    Data resource
  202.              A network data object that can be transferred.  Data
  203.              resources may be available in multiple representations
  204.              (e.g. multiple languages, data formats, size, resolutions)
  205.              or vary in other ways.  (See also: Message, Resource)
  206.  
  207.    Feature   A piece of information about the media handling properties
  208.              of a message passing system component or of a data
  209.              resource.
  210.  
  211.    Feature tag
  212.              A name that identifies a "feature".
  213.  
  214.    Feature set
  215.              Information about a sender, recipient, data file or other
  216.              participant in a message transfer which describes the set
  217.              of features that it can handle.
  218.  
  219.              Where a 'feature' describes a single identified attribute
  220.              of a resource, a 'feature set' describes full set of
  221.              possible attributes.
  222.  
  223.  
  224.  
  225.  
  226. Klyne                        Informational                      [Page 4]
  227.  
  228. RFC 2703        Protocol-independent Content Negotiation  September 1999
  229.  
  230.  
  231.    List message
  232.              A list message sends the variant list of a negotiable
  233.              resource, but no variant data.  It can be generated when
  234.              the sender does not want to, or is not allowed to, send a
  235.              particular variant.
  236.  
  237.    Media feature
  238.              information that indicates facilities assumed to be
  239.              available for the message content to be properly rendered
  240.              or otherwise presented.  Media features are not intended to
  241.              include information that affects message transmission.
  242.  
  243.    Message   Data which is transmitted from a sender to a receiver,
  244.              together with any encapsulation which may be applied.
  245.              Where a data resource is the original data which may be
  246.              available in a number of representations, a message
  247.              contains those representation(s) which are actually
  248.              transmitted. Negotiation metadata is not generally
  249.              considered to be part of a message.
  250.  
  251.              Message data is distinguished from other transmitted data
  252.              by the fact that its content is fully determined before the
  253.              start of transmission.
  254.  
  255.    Negotiated content
  256.              Message content which has been selected by content
  257.              negotiation.
  258.  
  259.    Negotiation
  260.              (See: content negotiation)
  261.  
  262.    Negotiable resource
  263.              A data resource which has multiple representations
  264.              (variants) associated with it. Selection of an appropriate
  265.              variant for transmission in a message is accomplished by
  266.              content negotiation between the sender and recipient.
  267.  
  268.    Negotiation metadata
  269.              Information which is exchanged between the sender and
  270.              receiver of a message by content negotiation in order to
  271.              determine the variant which should be transferred.
  272.  
  273.    Neighbouring variant
  274.              A particular representation (variant) of a variant resource
  275.              which can safely be assumed to be subject to the same
  276.              access controls as the variant resource itself. Not all
  277.              variants of a given variant resource are necessarily
  278.              neighbouring variants. The fact that a particular variant
  279.  
  280.  
  281.  
  282. Klyne                        Informational                      [Page 5]
  283.  
  284. RFC 2703        Protocol-independent Content Negotiation  September 1999
  285.  
  286.  
  287.              is or is not a neighbouring variant has implications for
  288.              security considerations when determining whether that
  289.              variant can be sent to a receiver in place of the
  290.              corresponding variant resource. It may also have
  291.              implications when determining whether or not a sender is
  292.              authorized to transmit a particular variant.
  293.  
  294.    Preference
  295.              An attribute of a sender or receiver (often the receiver)
  296.              which indicates an preference to generate or process one
  297.              particular type of message content over another, even if
  298.              both are possible.
  299.  
  300.    Receiver  A system component (device or program) which receives a
  301.              message.
  302.  
  303.    Receiver-initiated transmission
  304.              A message transmission which is requested by the eventual
  305.              receiver of the message. Sometimes described as 'pull'
  306.              messaging. E.g. an HTTP GET operation.
  307.  
  308.    Resource  A document, data file or facility which is accessed or
  309.              transmitted across a network.  (See also: Data resource)
  310.  
  311.    Sender    A system component (device or program) which transmits a
  312.              message.
  313.  
  314.    Sender-initiated transmission
  315.              A message transmission which is invoked by the sender of
  316.              the message. Sometimes described as 'push' messaging.  E.g.
  317.              sending an e-mail.
  318.  
  319.    Session mode
  320.              A mode of message transmission in which confirmation of
  321.              message delivery is received by the sender in the same
  322.              application session (usually the same transport connection)
  323.              that is used to transmit the message.  (See also: connected
  324.              mode, store and forward mode)
  325.  
  326.    Store and forward mode
  327.              A mode of message transmission in which the message is held
  328.              in storage for an unknown period of time on message
  329.              transfer agents before being delivered.
  330.  
  331.    Syntax    The form used to express some value;  especially the format
  332.              used to express a media feature value, or a feature set.
  333.              (See also: feature value, feature set, type.)
  334.  
  335.  
  336.  
  337.  
  338. Klyne                        Informational                      [Page 6]
  339.  
  340. RFC 2703        Protocol-independent Content Negotiation  September 1999
  341.  
  342.  
  343.    Transmission
  344.              The process of transferring a message from a sender to a
  345.              receiver.  This may include content negotiation.
  346.  
  347.    Type      The range of values that can be indicated by some
  348.              identifier of variable;  especially the range of values
  349.              that can be indicated by a feature tag.  (See also:
  350.              feature, syntax.)
  351.  
  352.              NOTE:  this differs from usage employed by the LDAP/X.500
  353.              directory community, who use the terms "attribute type" to
  354.              describe an identifier for a value in a directory entry,
  355.              and "attribute syntax" to describe a range of allowed
  356.              attribute values.
  357.  
  358.    User agent
  359.              A system component which prepares and transmits a message,
  360.              or receives a message and displays, prints or otherwise
  361.              processes its contents.
  362.  
  363.    Variant   One of several possible representations of a data
  364.              resource.
  365.  
  366.    Variant list
  367.              A list containing variant descriptions, which can be bound
  368.              to a negotiable resource.
  369.  
  370.    Variant description
  371.              A machine-readable description of a variant resource,
  372.              usually found in a variant list.  A variant description
  373.              contains a variant resource identifier and various
  374.              attributes which describe properties of the variant.
  375.  
  376.    Variant resource
  377.              A data resource for which multiple representations
  378.              (variants) are available.
  379.  
  380. 3. Framework
  381.  
  382.    For the purposes of this document, message transmission protocol
  383.    capabilities are explicitly disregarded:  it is presumed that these
  384.    will be dealt with separately by some orthogonal mechanism.
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Klyne                        Informational                      [Page 7]
  395.  
  396. RFC 2703        Protocol-independent Content Negotiation  September 1999
  397.  
  398.  
  399.    Content negotiation covers three elements:
  400.  
  401.    1. expressing the capabilities of the sender and the data resource to
  402.       be transmitted (as far as a particular message is concerned),
  403.  
  404.    2. expressing the capabilities of a receiver (in advance of the
  405.       transmission of the message), and
  406.  
  407.    3. a protocol by which capabilities are exchanged.
  408.  
  409.    These negotiation elements are addressed by a negotiation framework
  410.    incorporating a number of design elements with dependencies shown:
  411.  
  412.              [ Abstract  ]               [   Abstract   ]
  413.              [negotiation]               [ negotiation  ]
  414.              [  process  ]               [   metadata   ]
  415.                    |                            |
  416.                    V                            V
  417.              [Negotiation]               [ Negotiation  ]
  418.              [ protocol  ]               [   metadata   ]
  419.              [  binding  ]               [representation]
  420.                    |                            |
  421.                     -------              -------
  422.                            |            |
  423.                            V            V
  424.                        [Application protocol]
  425.                        [   incorporating    ]
  426.                        [content negotiation ]
  427.  
  428.    Within this overall framework, expressing the capabilities of sender
  429.    and receiver is covered by negotiation metadata.  The protocol for
  430.    exchanging capabilities is covered by the abstract negotiation
  431.    framework and its binding to a specific application protocol.
  432.  
  433.    Application protocol independence is addressed by separating the
  434.    abstract negotiation process and metadata from concrete
  435.    representations and protocol bindings.
  436.  
  437. 3.1 Abstract framework for content negotiation
  438.  
  439.    The negotiation framework provides for an exchange of negotiation
  440.    metadata between the sender and receiver of a message which leads to
  441.    determination of a data format which the sender can provide and the
  442.    recipient can process.  Thus, there are three main elements which are
  443.    the subjects of the negotiation process and whose capabilities are
  444.    described by the negotiation metadata: the sender, the transmitted
  445.    data file format and the receiver.
  446.  
  447.  
  448.  
  449.  
  450. Klyne                        Informational                      [Page 8]
  451.  
  452. RFC 2703        Protocol-independent Content Negotiation  September 1999
  453.  
  454.  
  455.    The life of a data resource may be viewed as:
  456.  
  457.             (C)     (T)     (F)
  458.         [A]-->--[S]-->--[R]-->--[U]
  459.  
  460.    where:
  461.  
  462.      [A] = author of document
  463.      (C) = original document content
  464.      [S] = message sending system
  465.      (T) = transmitted data file (representation of (C))
  466.      [R] = receiving system
  467.      (F) = formatted (rendered) document data (presentation of (C))
  468.      [U] = user or consumer of a document
  469.  
  470.    Here, it is [S] and [R] who exchange negotiation metadata to decide
  471.    the form of (T), so these elements are the focus of our attention.
  472.  
  473.    Negotiation metadata provided by [S] would take account of available
  474.    document content (C) (e.g. availability of resource variants) as well
  475.    as its own possible ability to offer that content in a variety of
  476.    formats.
  477.  
  478.    Negotiation metadata provided by [R] would similarly take account of
  479.    the needs and preferences of its user [U] as well as its own
  480.    capabilities to process and render received data.
  481.  
  482. 3.1.1 The negotiation process
  483.  
  484.    Negotiation between the sender [S] and the receiver [R] consists of a
  485.    series of negotiation metadata exchanges that proceeds until either
  486.    party determines a specific data file (T) to be transmitted.  If the
  487.    sender makes the final determination, it can send the file directly.
  488.    Otherwise the receiver must communicate its selection to the sender
  489.    who sends the indicated file.
  490.  
  491.    This process implies an open-ended exchange of information between
  492.    sender and receiver.  Not every implementation is expected to
  493.    implement this scheme with the full generality thus implied.  Rather,
  494.    it is expected that every concrete negotiation can be viewed as a
  495.    subset of this process.
  496.  
  497.    For example, Transparent Content Negotiation (TCN) [5] uses a model
  498.    in which one of the following happens:
  499.  
  500.    o  The recipient requests a resource with no variants, in which case
  501.       the sender simply sends what is available.
  502.  
  503.  
  504.  
  505.  
  506. Klyne                        Informational                      [Page 9]
  507.  
  508. RFC 2703        Protocol-independent Content Negotiation  September 1999
  509.  
  510.  
  511.    o  A variant resource is requested, in which case the server replies
  512.       with a list of available variants, and the client chooses one
  513.       variant from those offered.
  514.  
  515.    o  The recipient requests a variant resource, and also provides
  516.       negotiation metadata (in the form 'Accept' headers) which allows
  517.       the server to make a choice on the client's behalf.
  518.  
  519.    Another, simpler example is that of fax negotiation:  in this case
  520.    the intended recipient declares its capabilities, and the sender
  521.    chooses a message variant to match.
  522.  
  523.    Each of these can be viewed as a particular case of the general
  524.    negotiation process described above.  Similar observations can be
  525.    made regarding the use of directory services or MIME '
  526.    Multipart/alternative' in conjunction with e-mail message
  527.    transmission.
  528.  
  529. 3.2 Abstract model for negotiation metadata
  530.  
  531.    A simple but general negotiation framework has been described, which
  532.    is based on the exchange of negotiation metadata between sender and
  533.    recipient.  The mechanism by which data is exchanged is not important
  534.    to the abstract negotiation framework, but something does need to be
  535.    said about the general form of the metadata.
  536.  
  537.    The terminology and definitions section of this document places
  538.    constraints on the form of negotiation metadata, and the descriptions
  539.    that follow should be read in conjunction with the definitions to
  540.    which they refer.
  541.  
  542.    Negotiation metadata needs to encompass the following elements:
  543.  
  544.    o  Media feature: a way to describe attributes of a data resource.
  545.  
  546.    o  Feature set: a description of a range of possible media feature
  547.       combinations which can be:  offered by a sender;  represented by a
  548.       data file format;  or processed by a receiver.
  549.  
  550.    o  One or more naming schemes for labelling media features and
  551.       feature sets.  These should be backed up by some kind of
  552.       registration process to ensure uniqueness of names and to
  553.       encourage a common vocabulary for commonly used features.
  554.  
  555.    o  A framework of data types for media features, indicating the range
  556.       and properties of value types which can be represented.
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Klyne                        Informational                     [Page 10]
  563.  
  564. RFC 2703        Protocol-independent Content Negotiation  September 1999
  565.  
  566.  
  567.    o  A way to combine media features into feature sets, capable of
  568.       expressing feature dependencies within a feature set (e.g.
  569.       640x480 pixel size and 256 colours, or 800x600 pixel size and 16
  570.       colours).
  571.  
  572.    o  Some way to rank feature sets based upon sender and receiver
  573.       preferences for different feature values.
  574.  
  575. 3.3 Text representation for negotiation metadata
  576.  
  577.    A concrete textual representation for media feature values and
  578.    feature set descriptions would provide a common vocabulary for
  579.    feature data in text-based protocols like HTTP and SMTP.
  580.  
  581.    In defining a textual representation, the issue of allowable
  582.    character sets needs to be addressed.  Whether or not negotiation
  583.    metadata needs to support a full gamut of international characters
  584.    will depend upon the framework of data types adopted for media
  585.    features.  As negotiation metadata would be used as a protocol
  586.    element (not directly visible to the user) rather than part of the
  587.    message content, support for extended character sets may be not
  588.    required.
  589.  
  590.    A textual representation for negotiation metadata would imply a
  591.    textual representation for media feature names, and also for
  592.    expressions of the media feature combining algebra.
  593.  
  594. 3.4 ASN.1 description of negotiation metadata
  595.  
  596.    For use with non-text-based protocols, an ASN.1 description and
  597.    encoding designation for negotiation metadata could be helpful for
  598.    incorporating the common negotiation framework into ASN.1-derived
  599.    protocols like X.400, X.500, LDAP and SNMP.
  600.  
  601.    An ASN.1 description of negotiation metadata formats suggests that
  602.    separate media feature naming scheme based on ISO object identifiers
  603.    would be valuable.
  604.  
  605. 3.5 Protocol binding guidelines
  606.  
  607.    Specific protocol bindings will be needed to use the abstract
  608.    framework for negotiation.
  609.  
  610.    Details of protocol bindings would be beyond the scope of this work,
  611.    but guidelines maybe not.  (SASL might provide a useful model here.)
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Klyne                        Informational                     [Page 11]
  619.  
  620. RFC 2703        Protocol-independent Content Negotiation  September 1999
  621.  
  622.  
  623. 4. Goals
  624.  
  625.    These goals are presented in two categories:
  626.  
  627.    1. Negotiation framework and metadata goals which address the broad
  628.       goals of negotiation in a protocol-independent fashion.
  629.  
  630.    2. Specific goals which relate to the deployment of negotiation in
  631.       the context of a specific protocol (e.g. relation to HTTP protocol
  632.       operations, cache interactions, security issues, existing HTTP
  633.       negotiation mechanisms, application to variant selection, etc.).
  634.       These would be addressed by a specific protocol binding for the
  635.       negotiation framework.
  636.  
  637. 4.1 Generic framework and metadata goals
  638.  
  639.    o  A common vocabulary for designating features and feature sets.
  640.  
  641.    o  A stable reference for commonly used features.
  642.  
  643.    o  An extensible framework, to allow rapid and easy adoption of new
  644.       features.
  645.  
  646.    o  Permit an indication of quality or preference.
  647.  
  648.    o  Capture dependencies between feature values
  649.  
  650.    o  A uniform framework mechanism for exchanging negotiation metadata
  651.       should be defined that can encompass existing negotiable features
  652.       and is extensible to future (unanticipated) features.
  653.  
  654.    o  Efficient negotiation should be possible in both receiver
  655.       initiated ('pull') and sender initiated ('push') message
  656.       transfers.
  657.  
  658.    o  The structure of the negotiation procedure framework should stand
  659.       independently of any particular message transfer protocol.
  660.  
  661.    o  Be capable of addressing the role of content negotiation in
  662.       fulfilling the communication needs of less able computer users.
  663.  
  664. 4.2 Protocol-specific deployment goals
  665.  
  666.    o  A negotiation should generally result in identification of a
  667.       mutually acceptable form of message data to be transferred.
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Klyne                        Informational                     [Page 12]
  675.  
  676. RFC 2703        Protocol-independent Content Negotiation  September 1999
  677.  
  678.  
  679.    o  If capabilities are being sent at times other than the time of
  680.       message transmission, then they should include sufficient
  681.       information to allow them to be verified and authenticated.
  682.  
  683.    o  A capability assertion should clearly identify the party to whom
  684.       the capabilities apply, the party to whom they are being sent, and
  685.       some indication of their date/time or range of validity.  To be
  686.       secure, capability assertions should be protected against
  687.       interception and substitution of valid data by invalid data.
  688.  
  689.    o  A request for capability information, if sent other than in
  690.       response to delivery of a message, should clearly identify the
  691.       requester, the party whose capabilities are being requested, and
  692.       the time of the request.  It should include sufficient information
  693.       to allow the request to be authenticated.
  694.  
  695.    o  In the context of a given application, content negotiation may use
  696.       one or several methods for transmission, storage, or distribution
  697.       of capabilities.
  698.  
  699.    o  The negotiation mechanism should include a standardized method for
  700.       associating features with resource variants.
  701.  
  702.    o  Negotiation should provide a way to indicate provider and
  703.       recipient preferences for specific features.
  704.  
  705.    o  Negotiation should have the minimum possible impact on network
  706.       resource consumption, particularly in terms of bandwidth and
  707.       number of protocol round-trips required.
  708.  
  709.    o  Systems should protect the privacy of users' profiles and
  710.       providers' inventories of variants.
  711.  
  712.    o  Protocol specifications should identify and permit mechanisms to
  713.       verify the reasonable accuracy of any capability data provided.
  714.  
  715.    o  Negotiation must not significantly jeopardize the overall
  716.       operation or integrity of any system in the face of erroneous
  717.       capability data, whether accidentally or maliciously provided.
  718.  
  719.    o  Intelligent gateways, proxies, or caches should be allowed to
  720.       participate in the negotiation.
  721.  
  722.    o  Negotiation metadata should be regarded as cacheable, and explicit
  723.       cache control mechanisms provided to forestall the introduction of
  724.       ad-hoc cache-busting techniques.
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Klyne                        Informational                     [Page 13]
  731.  
  732. RFC 2703        Protocol-independent Content Negotiation  September 1999
  733.  
  734.  
  735.    o  Automatic negotiation should not pre-empt a user's ability to
  736.       choose a document format from those available.
  737.  
  738. 5. Technical issues
  739.  
  740. 5.1 Non-message resource transfers
  741.  
  742.    The ideas for generic content negotiation have been conceived and
  743.    developed in the context of message-oriented data transmissions.
  744.  
  745.    Message data is defined elsewhere as a data whose entire content is
  746.    decided before the start of data transmission.  The following are
  747.    examples of non-message data transfers.
  748.  
  749.    o  streamed data,
  750.  
  751.    o  interactive computations,
  752.  
  753.    o  real-time data acquisition,
  754.  
  755.    Does a proposed approach to negotiation based on message data
  756.    reasonably extend to streamed data (e.g. data whose content is not
  757.    fully determined by the time the first data items are transmitted)?
  758.  
  759.    It may be that the metadata will be applicable, but the abstract
  760.    negotiation process framework may be insufficient to these more
  761.    demanding circumstances.
  762.  
  763. 5.2 End-to-end vs hop-by-hop negotiations
  764.  
  765.    Could this distinction place any special demands or constraints on a
  766.    generic negotiation framework, or is this simply a protocol issue?
  767.  
  768.    o  End-to-end negotiation gives greatest confidence in the outcome.
  769.  
  770.    o  Hop-by-hop may have advantages in a network of occasionally-
  771.       connected systems, but will place additional demands on
  772.       intervening message transmission agents.
  773.  
  774.    Hop-by-hop negotiation implies that negotiation responses are not
  775.    necessarily a definitive indication of an endpoint system's
  776.    capabilities.  This in turn implies a possible need for time-to-live
  777.    and re-verification mechanisms to flush out stale negotiation data.
  778.  
  779.    Note that one of the stated goals is to allow proxies and caches to
  780.    participate in the negotiation process, as appropriate.
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Klyne                        Informational                     [Page 14]
  787.  
  788. RFC 2703        Protocol-independent Content Negotiation  September 1999
  789.  
  790.  
  791. 5.3 Third-party negotiation
  792.  
  793.    An extension of the hop-by-hop vs. end-to-end negotiation theme is to
  794.    consider the implications of allowing any system other than an
  795.    endpoint participant in the message transmission to supply
  796.    negotiation metadata.
  797.  
  798.    Any use of a third party in the negotiation process inevitably
  799.    increases the possibilities for introducing errors into the
  800.    negotiation metadata.
  801.  
  802.    One particular example of a third party participant in a negotiation
  803.    process that is frequently suggested is the use of a directory
  804.    service using LDAP or similar protocols.  What additional steps need
  805.    to be taken to ensure reasonable reliability of negotiation metadata
  806.    supplied by this means?
  807.  
  808. 5.4 Use of generic directory and resolution services
  809.  
  810.    It is clearly helpful to use existing protocols such as LDAP to
  811.    exchange content negotiation metadata.
  812.  
  813.    To achieve this, it be necessary to define directory or other schema
  814.    elements which are specific to content negotiation.  For example, an
  815.    LDAP attribute type for a media feature set.
  816.  
  817. 5.5 Billing issues
  818.  
  819.    Negotiation may raise some billing-related issues in some contexts
  820.    because it potentially incurs a two-way exchange of data not
  821.    necessarily completed during a single connection.  There is an issue
  822.    of who pays for return messages, etc., in a non-connected environment
  823.    like e-mail or fax.
  824.  
  825. 5.6 Performance considerations
  826.  
  827.    Negotiation can impact performance in both positive and negative
  828.    ways.
  829.  
  830.    The obvious negative impact arises from the exchange of additional
  831.    data which necessarily consumes some additional bandwidth.  There is
  832.    also an issue of round-trip or third-party query delays while
  833.    negotiation metadata is being exchanged before transmission of the
  834.    message itself is commenced.
  835.  
  836.    Over the Internet, there are some bandwidth/latency trade-offs which
  837.    can be made. For example, in Internet e-mail the MIME type '
  838.    multipart/alternative' can be used to send multiple versions of a
  839.  
  840.  
  841.  
  842. Klyne                        Informational                     [Page 15]
  843.  
  844. RFC 2703        Protocol-independent Content Negotiation  September 1999
  845.  
  846.  
  847.    resource:  this preserves latency by using additional bandwidth to
  848.    send a greater volume of data.  On the other hand, HTTP [7] suggests
  849.    a negotiation mechanism which preserves bandwidth at the cost of
  850.    introducing a round-trip delay (section 12.2, Agent-driven
  851.    negotiation).
  852.  
  853.    To set against the negative performance impact of content
  854.    negotiation, it is to be hoped that overall network efficiency is to
  855.    be improved if it results in the most useful data format being
  856.    delivered to its intended recipient, first time, almost every time.
  857.  
  858. 5.7 Confidence levels in negotiated options
  859.  
  860.    In some cases (e.g. when there has been a direct exchange of
  861.    information with the remote system) the communicating parties will
  862.    have a high degree of confidence in the outcome of a negotiation.
  863.    Here, a data exchange can be performed without need for subsequent
  864.    confirmation that the options used were acceptable.
  865.  
  866.    In other cases, the options will be a best-guess, and it may be
  867.    necessary to make provision for parties to reject the options
  868.    actually used in preference for some other set.
  869.  
  870.    This consideration is likely to interact with performance
  871.    considerations.
  872.  
  873.    A useful pattern, adopted by TCN [5], is to define a negotiation
  874.    procedure which guarantees a correct outcome.  This forms the
  875.    foundation for a procedure which attempts to use easily-obtained but
  876.    less reliable information in an attempt to optimize the negotiation
  877.    process but that contains checks to guarantee the final result will
  878.    be the same as would have been obtained by the full negotiation
  879.    procedure.  Such procedures sometimes have to resort to the original
  880.    "full cycle" negotiation procedure, but in a majority of cases are
  881.    expected to reach their conclusion by an optimized route.
  882.  
  883. 6. Security Considerations
  884.  
  885.    The purposes of this section is to identify and catalogue some
  886.    security issues that feature negotiation protocols should consider.
  887.  
  888. 6.1 Privacy
  889.  
  890.    Privacy may be adversely affected by:
  891.  
  892.    o  Unintended disclosure of personal information.
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Klyne                        Informational                     [Page 16]
  899.  
  900. RFC 2703        Protocol-independent Content Negotiation  September 1999
  901.  
  902.  
  903.    o  Spoofed requests for negotiation data simply for the purposes of
  904.       gathering information, and not as part of a bona fide message
  905.       transmission.
  906.  
  907. 6.2 Denial of service attacks
  908.  
  909.    Service denial may be caused by:
  910.  
  911.    o  Injection of false negotiation data.
  912.  
  913.    o  Excessive requests for negotiation data
  914.  
  915. 6.3 Mailing list interactions
  916.  
  917.    Content negotiation with final recipients is somewhat at odds with
  918.    normal practice for maintaining lists for redistribution of Internet
  919.    mail.
  920.  
  921.    It may be appropriate for a sender to negotiate data formats with a
  922.    list manager, and for a list manager to negotiate with message
  923.    recipients.  But the common practice of keeping confidential the
  924.    identities and addresses of mailing list subscribers suggests that
  925.    end-to-end negotiation through a mailing list is not consistent with
  926.    good security practice.
  927.  
  928. 6.4 Use of security services
  929.  
  930.    Protocols that employ security services for message transfer should
  931.    also apply those services to content negotiation:
  932.  
  933.    o  Authenticated requests for negotiation metadata provide a means
  934.       for a potential recipient to moderate the distribution of media
  935.       capability information.
  936.  
  937.    o  Authentication of negotiation metadata provides a means for
  938.       potential message senders to avoid using incorrect information
  939.       injected by some other party.
  940.  
  941.    o  Encryption of negotiation data may help to prevent disclosure of
  942.       sensitive capability-related information to snoopers.
  943.  
  944.    o  Conducting a negotiation exchange over an authenticated or
  945.       encrypted protocol session (e.g. SASL), transport connection or
  946.       network path (e.g. TLS, IPSEC) can provide for mutual
  947.       authentication of both parties in an exchange of negotiation data.
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Klyne                        Informational                     [Page 17]
  955.  
  956. RFC 2703        Protocol-independent Content Negotiation  September 1999
  957.  
  958.  
  959. 6.5 Disclosure of security weaknesses
  960.  
  961. 6.5.1 User agent identification
  962.  
  963.    Disclosure of capability information may allow a potential attacker
  964.    to deduce what message handling agent is used, and hence may lead to
  965.    the exploitation of known security weaknesses in that agent.
  966.  
  967. 6.5.2 Macro viruses
  968.  
  969.    Macro viruses are a widespread problem among applications such as
  970.    word processors and spreadsheets.  Knowing which applications a
  971.    recipient employs (e.g. by file format) may assist in a malicious
  972.    attack.  However, such viruses can be spread easily without such
  973.    knowledge by sending multiple messages, where each message infects a
  974.    specific application version.
  975.  
  976. 6.5.3 Personal vulnerability
  977.  
  978.    One application of content negotiation is to enable the delivery of
  979.    message content that meets specific requirements of less able people.
  980.    Disclosure of this information may make such people potential targets
  981.    for attacks that play on their personal vulnerabilities.
  982.  
  983. 6.6 Problems of negotiating security
  984.  
  985.    If feature negotiation is used to decide upon security-related
  986.    features to be used, some special problems may be created if the
  987.    negotiation procedure can be subverted to prevent the selection of
  988.    effective security procedures.
  989.  
  990.    The security considerations section of GSS-API negotiation [8]
  991.    discusses the use of integrity protecting mechanisms with security
  992.    negotiation.
  993.  
  994. 7. Acknowledgements
  995.  
  996.    Some material in this memo has been derived from earlier memos by
  997.    Koen Holtman, Andrew Mutz, Ted Hardie, Larry Masinter, Dan Wing, Neil
  998.    Joffe.  Matters relating to the importance and relevance of content
  999.    negotiation to less-able users were raised by Al Gilman.
  1000.  
  1001.    This memo has also been informed by the debates of the IETF "conneg"
  1002.    working group.
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Klyne                        Informational                     [Page 18]
  1011.  
  1012. RFC 2703        Protocol-independent Content Negotiation  September 1999
  1013.  
  1014.  
  1015. 8. References
  1016.  
  1017.    [1]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
  1018.         Extensions (MIME) Part 1: Format of Internet message bodies",
  1019.         RFC 2045, November 1996.
  1020.  
  1021.    [2]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
  1022.         Extensions (MIME) Part 2: Media Types", RFC 2046, November 1996.
  1023.  
  1024.    [3]  Holtman, K., et al., "The Alternates Header Field", Work in
  1025.         Progress.
  1026.  
  1027.    [4]  Hardie, T., "Scenarios for the Delivery of Negotiated Content",
  1028.         Work in Progress.
  1029.  
  1030.    [5]  Holtman, K. and A. Mutz, "Transparent Content Negotiation in
  1031.         HTTP", RFC 2295, March 1998.
  1032.  
  1033.    [6]  Wing, D., "Indicating Supported Media Features Using Extensions
  1034.         to DSN and MDN", RFC 2530, March 1999.
  1035.  
  1036.    [7]  Fielding, R., Gettys, J., Mogul, J., Frytyk, H. and T. Berners-
  1037.         Lee, "Hyptertext Transfer Protocol -- HTTP/1.1", RFC 2068,
  1038.         January 1997.
  1039.  
  1040.    [8]  Blaize, E. and D. Pinkas, "The Simple and Protected GSS-API
  1041.         Negotiation Mechanism", RFC 2478, December 1998.
  1042.  
  1043. 9. Author's Address
  1044.  
  1045.    Graham Klyne
  1046.    5th Generation Messaging Ltd.  Content Technologies Ltd.
  1047.    5 Watlington Street            1220 Parkview, Arlington Business Park
  1048.    Nettlebed                      Theale
  1049.    Henley-on-Thames, RG9 5AB      Reading, RG7 4SA
  1050.    United Kingdom                 United Kingdom.
  1051.  
  1052.    Phone: +44 1491 641 641        +44 118 930 1300
  1053.    Fax:   +44 1491 641 611        +44 118 930 1301
  1054.    EMail: GK@ACM.ORG
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Klyne                        Informational                     [Page 19]
  1067.  
  1068. RFC 2703        Protocol-independent Content Negotiation  September 1999
  1069.  
  1070.  
  1071. 10. Full Copyright Statement
  1072.  
  1073.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  1074.  
  1075.    This document and translations of it may be copied and furnished to
  1076.    others, and derivative works that comment on or otherwise explain it
  1077.    or assist in its implementation may be prepared, copied, published
  1078.    and distributed, in whole or in part, without restriction of any
  1079.    kind, provided that the above copyright notice and this paragraph are
  1080.    included on all such copies and derivative works.  However, this
  1081.    document itself may not be modified in any way, such as by removing
  1082.    the copyright notice or references to the Internet Society or other
  1083.    Internet organizations, except as needed for the purpose of
  1084.    developing Internet standards in which case the procedures for
  1085.    copyrights defined in the Internet Standards process must be
  1086.    followed, or as required to translate it into languages other than
  1087.    English.
  1088.  
  1089.    The limited permissions granted above are perpetual and will not be
  1090.    revoked by the Internet Society or its successors or assigns.
  1091.  
  1092.    This document and the information contained herein is provided on an
  1093.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  1094.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  1095.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  1096.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  1097.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  1098.  
  1099. Acknowledgement
  1100.  
  1101.    Funding for the RFC Editor function is currently provided by the
  1102.    Internet Society.
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Klyne                        Informational                     [Page 20]
  1123.  
  1124.