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