/[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 - (hide annotations) (download)
Tue Jun 15 08:04:04 2004 UTC (20 years, 10 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
New

1 wakaba 1.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