/[suikacvs]/webroot/www/2004/id/draft-ietf-http-negotiate-scenario-01.txt
Suika

Contents of /webroot/www/2004/id/draft-ietf-http-negotiate-scenario-01.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Tue Jun 15 08:04:04 2004 UTC (19 years, 11 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
New

1 INTERNET-DRAFT Edward Hardie
2 Expires: January 18, 1998 NASA NIC
3 <draft-ietf-http-negotiate-scenario-01.txt>
4
5
6
7
8 Scenarios for the Delivery of Negotiated Content using HTTP
9
10
11
12 1. Status of this Memo
13
14 This document is an Internet-Draft. Internet-Drafts are working
15 documents of the Internet Engineering Task Force (IETF), its areas, and
16 its working groups. Note that other groups may also distribute working
17 documents as Internet-Drafts.
18
19 Internet-Drafts are draft documents valid for a maximum of six months
20 and may be updated, replaced, or obsoleted by other documents at any
21 time. It is inappropriate to use Internet-Drafts as reference material
22 or to cite them other than as ``work in progress.''
23
24 To learn the current status of any Internet-Draft, please check the
25 "1id-abstracts.txt" listing contained in the Internet- Drafts Shadow
26 Directories on ds.internic.net (US East Coast), nic.nordu.net (Europe),
27 ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim).
28
29 Distribution of this memo is unlimited. Please send comments to the
30 author.
31
32 2. Abstract
33
34 This document describes various problems which have arisen in attempts
35 to deliver negotiated content using HTTP and examines several
36 scenarios by which improvements in delivery might be accomplished.
37
38 This document does not discuss how HTTP might be used to negotiate the
39 use of other protocols to deliver content.
40
41 3. Problems with content negotiation in HTTP
42
43
44 Content providers on the World Wide Web would like to present their
45 material in the form most appropriate to each individual user. In
46 order to do this effectively, the content provider and content user
47 must be able negotiate among variants when more than one
48 representation of a resource is available. This negotiation entails
49 the exchange of information between the provider and user about their
50 respective capabilities and preferences.
51
52 The Hypertext Transport Protocol has since version 1.0 [1] used
53 certain request headers to indicate a list of the responses preferred
54 by the user agent making the request. The Accept request header is
55 used to indicate media types, Accept-Charset a list of preferred
56 character sets, Accept-Encoding supported content encodings, and
57 Accept-Language the set of natural languages preferred. In theory, a
58 server receiving these headers can use them to determine which of the
59 available variants of a particular item is most appropriate to the
60 requesting user agent.
61
62 Problems have emerged with this approach. First, the explosion of
63 content types in use on the World Wide Web has meant that Accept
64 headers would have to be extraordinarily long in order to adequately
65 state the user's Accept preferences. Increasing the length of the
66 Accept headers in order to negotiate consumes bandwidth for every
67 request, whether the resource has variants or not. Increasing their
68 complexity in order to account for all of the possible axes of
69 variation can also consume excessive amounts of server processing
70 power. Second, even if using a full list of Accept preferences did
71 not present resource problems, it could create privacy problems. A
72 full list of Accept preferences creates a user profile; in some
73 situations it could be combined with other information to track a
74 user's interaction with a server or set of servers even if the user
75 has taken steps to eliminate that possiblity.
76
77 Many content providers have attempted to circumvent the problems
78 associated with negotiation based on Accept headers. The most popular
79 method has been to examine the User-Agent header and to create content
80 tailored to the typical capabilities of that user agent. Because many
81 web user agents are both configurable and extensible, this method has
82 serious drawbacks. A user agent capable of using graphics but
83 configured to display only text may be presented with completely
84 unusable content. Conversely, a user agent which has been extended to
85 handle new media types may never be presented with them. The
86 usefulness of this method has been further degraded by some client
87 authors, who have chosen to use the User-Agent strings associated
88 with other clients in order to indicate compatibility; commonly, this
89 has been done even when the two clients are not, in fact, fully
90 compatible.
91
92 Content negotiation based on Accept headers or User-agent strings also
93 creates difficulties for caching proxies, as they have no way to
94 determine when the form of content delivered to two different
95 user-agents would be the same. The delivery of inappropriate content
96 can be prevented with the appropriate use of expiration times and
97 cache control directives, but only at the cost of serious losses in
98 cache efficiency.
99
100
101 4. Requirements for effective content negotiation
102
103 Content negotiation methods should improve the likelihood that the
104 best available resource variant is served to each user. If no
105 available resource variant is appropriate for a particular user, they
106 should furnish a facility for the content provider to indicate that
107 lack.
108
109 Content negotiation methods should also accomplish their task without
110 substantially increasing the bandwidth or number of network round
111 trips required to deliver the negotiated variant over that required to
112 deliver similar invariant content. Some increase must be expected,
113 but the smallest possible increase is preferred, and any overhead
114 should be limited to those resources for which variants are available.
115
116 As a rule of thumb, any method that increases bandwidth requirements
117 by more than 50% is unacceptable. For example, a method that
118 delivered all available variants to a client and expected the client
119 to discard those that were not used might be very successful in
120 providing the best available resource and in limiting overhead to
121 those resources for which variants existed; it would, nonetheless, be
122 unacceptable for deployment on the global Internet because of the
123 wastage associated with each delivery.
124
125 Similarly, any method which adds more than two network round trips to
126 the content delivery is unacceptable. While some negotiation
127 exchanges might be appropriately conceived as a series of increasingly
128 detailed "questions" and "answers" about the respective capabilities
129 and preferences of the parties involved, the increase in latency such
130 extended exchanges would entail make them inappropriate for deployment
131 on the global Internet.
132
133 In addition, content negotiation methods should interact well with
134 caching proxies. They must prevent the delivery of inappropriate
135 content to proxy users. If possible, they should allow caches to
136 store sufficient information to participate in the negotiation
137 process.
138
139 Lastly, content negotiation methods used in this context will be
140 preferred if they are extensible to other MIME transport protocols
141 that have the need to negotiate over the same space. Not all aspects
142 of negotiation needed for HTTP fit within the MIME context, however,
143 and content negotiation should not be limited to just those aspects
144 which do.
145
146
147 5. Scenarios
148
149 5.1 Improvements to the current system
150
151 Content negotiation based on Accept headers or User-Agent strings is
152 undertaken by the server based on information present in all requests
153 from clients. The current problems with this method could be
154 ameliorated in a number of ways. Registration of feature bundles
155 could, for example, allow a client to indicate its capabilities
156 without the increase in packet size that individual enumeration of
157 capabilities requires. The use of registered feature bundles does,
158 however, require a fair amount of maintenance for both server and
159 clients, especially given their dynamic extendability.
160
161 Content providers could also improve the cachability of the variants
162 served by issuing redirects to unique URLs specific to each variant;
163 proxy users with equivalent feature bundles or user agents would then
164 be able to retrieve the cached variant once they received a redirect.
165 Some content providers already use this method to good effect.
166
167 5.2 Client-based negotiation
168
169 Improvements in the current method tend, however, to increase demands
170 on the processing power of the server, which raises serious problems
171 of scalability. Shifting all or part of the processing involved in
172 the negotiation to the client may improve scalability and shifts the
173 locus of negotiation to the party most aware of both the current and
174 potential possibilities for presentation to the user.
175
176 Client-based content negotiation can take two basic forms: elective
177 negotiation and "active content" negotiation.
178
179 5.2.1. Elective negotiation
180
181 Elective negotiation relies on the idea that the first response to a
182 request for a resource which has variants should be a statement naming
183 the choices and/or the axes along which they vary. The simplest form
184 of elective negotiation occurs when a content provider creates a
185 meta-resource with links to several variants and explanations of the
186 features needed to present each variant. This basic form presumes a
187 least common denominator for presentation of the links and an active
188 user selecting among the presentations. More complex versions of
189 elective negotiation might use HTTP protocol elements to present the
190 axes of variation for a particular resource ("Transparent Content
191 Negotiation in HTTP" [2] presents one proposal along these lines).
192
193 Elective negotiation limits the process of selecting among variants to
194 the axes along which they vary. This eliminates the need for clients'
195 enumerating their capabilities and user preferences. It also provides
196 both a bandwidth savings and an increase in privacy. This process may,
197 however, require a user's intervention to select among the resources
198 provided, which reduces perceived efficiency and increases perceived
199 latency.
200
201 5.2.2 "Active content" negotiation
202
203 "Active content" negotiation takes place when the request for a
204 resource which has variants returns content for execution in the
205 client context rather than for presentation to the user. This active
206 content determines the capabilities of the user agent and the
207 preferences of the user and then retrieves the best available variant
208 or provides an error status if no variants are appropriate. This
209 method has several advantages: the negotiation takes place without the
210 need for user intervention; the processing for selection of variants
211 is moved completely off the server; and the active content itself
212 should be cachable.
213
214 There are, however, several limitations to active content negotiation.
215 The most severe problem is that there is not yet a cross-platform
216 standard for active content. Without such a standard, servers may
217 have to engage in Accept header or User-Agent negotiation prior to
218 using active content in order to identify the correct form of active
219 content to send in response to a particular request. Some user agents
220 will also be unable to use active content, either because they have
221 limited processing power or because of security considerations (see
222 Section 7). For these user agents, a completely different method must
223 be provided. As with server-side negotiation, each variant will
224 require a unique URL to ensure cache correctness.
225
226 6. Summary
227
228 Content negotiation using HTTP currently presents problems in
229 accuracy, scalability, and privacy. Amelioration of the problems in
230 the current design is possible, but other content negotiation methods
231 may provide significant improvements. The type of content negotiation
232 most appropriate to a specific context will depend on the type of
233 variable content being served and the capabilities of the parties to
234 the negotiation. Before deployment on the global Internet, however,
235 any client-based content negotiation method MUST meet the following
236 tests:
237
238 1) It MUST provide at least as good a content negotiation facility as
239 the current Accept header and User-Agent methods, and it SHOULD
240 increase the likelihood that the best available variant is served to
241 each client.
242
243 2) It MUST NOT significantly increase the bandwidth required to
244 deliver the content.
245
246 3) It MUST NOT significantly increase the number of network round
247 trips required to deliver the content.
248
249 4) It MUST NOT allow inappropriate content to be delivered to the
250 users of caching proxies. It SHOULD reduce overall bandwidth
251 requirements by providing cachable content and allowing proxies to
252 participate in the negotiation process.
253
254 5) It SHOULD recognize HTTP's relationship to MIME and provide methods
255 which are extensible to other MIME transports when the space over
256 which negotiation takes place is the same.
257
258 Experimentation with various content negotiation methods may be
259 necessary to determine their usefulness for different types of
260 resources and contexts. Interoperability will be best maintained,
261 however, if a single method of each type is made standard as soon as
262 experience permits.
263
264
265 7. Security Considerations
266
267 "Active content" negotiation presumes that clients will execute code
268 provided by servers and that those clients will allow that code to
269 examine user preferences and user agent capabilities in order to
270 select among variants. Any such system would have to be tightly
271 bounded to prevent the active content from executing arbitrary code on
272 the client. The examination of user preferences and user agent
273 capabilities also presents a possible privacy problem, especially as
274 the selection of a particular variant provides an opportunity for the
275 active content to communicate its discoveries.
276
277 8. Acknowledgements
278
279 Koen Holtman, Graham Klyne, Scott Lawrence, and Larry Masinter
280 provided valuable feedback on the initial draft of this document.
281 Discussions within the HTTP working group and the IETF-FAX mailing
282 list also provided insights into the scope of negotiation needed in
283 the HTTP context.
284
285 9. References
286
287 [1] Tim Berners-Lee, Roy Fielding, Henrik Frystk. Hypertext
288 Transfer Protocol -- HTTP/1.0. RFC RFC1945. May 1996.
289
290 [2] Koen Holtman and Andrew Mutz. Transport Content Negotiation in
291 HTTP. Internet-Draft draft-ietf-http-negotiation-02.txt, HTTP Working
292 Group, May 26, 1997.
293
294
295 9. Author's Address
296
297 Edward Hardie
298 NASA Network Information Center
299 MS 204-14
300 Moffett Field, CA 94035-1000 USA
301 +1 415 604 0134
302 hardie@nasa.gov
303
304
305

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24