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

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24