- From: Michael Sweet <msweet@apple.com>
- Date: Thu, 04 Jul 2013 10:35:50 -0400
- To: HTTP Working Group <ietf-http-wg@w3.org>
All, Just a couple comments on draft-ietf-httpbis-header-compression-00: - Appendix B provides useful examples showing headers and values, but the 4.x subsections don't actually show the name or the value in the little encoding figures. As I read through I completely missed the one sentence at the end of each that indicated that the value is added on the end, and that doesn't indicate the number of bits, etc. used to encode it. I suggest updating each figure to include all of the data that appears, for example 4.4.3 would turn into two figures (or two subsections - I don't know which would be clearer): 0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | 0 | 0 | Index (6+) | +---+---+-----------------------+ | 0 | Substitute Index (7+) | +---+---------------------------+ | 0 | Value Length (7+) | +---+---------------------------+ | Value String (Length octets) | +-------------------------------+ 0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | 0 | 0 | 0 | +---+---+-----------------------+ | 0 | Name Length (7+) | +---+---------------------------+ | Name String (Length octets) | +---+---------------------------+ | 0 | Substitute Index (7+) | +---+---------------------------+ | 0 | Value Length (7+) | +---+---------------------------+ | Value String (Length octets) | +-------------------------------+ - It wasn't completely clear until I got to the examples on how a client would send headers in a request or how a server would send headers in the response. The overview is focused on the header table and encoder/decoder but doesn't actually talk about the HTTP client or server - a quick high-level example (a "pseudo-encoding"?) might be useful here to give the context for the encoder and how it is used, and in fact a simple example of a series of GET requests for a web page would illustrate the redundancy of headers, e.g.: HTTP/1.1 Client HTTP/1.1 Server GET / HTTP/1.1 Host: www.example.com User-Agent: my-user-agent Accept-Language: en, fr HTTP/1.1 200 OK Date: Thu, 4 Jul 2013 15:35:00 GMT Server: my-server Connection: Keep-Alive Keep-Alive: timeout=30 Content-Type: text/html; charset=utf-8 Content-Length: 1234 Content-Language: en Last-Modified: Wed, 3 Jul 2013 12:34:56 GMT ... content ... GET /image.jpg HTTP/1.1 Host: www.example.com User-Agent: my-user-agent Accept-Language: en, fr HTTP/1.1 200 OK Date: Thu, 4 Jul 2013 15:35:01 GMT Server: my-server Connection: Keep-Alive Keep-Alive: timeout=30 Content-Type: image/jpeg Content-Length: 5678 Content-Language: en Last-Modified: Tue, 2 Jul 2013 10:20:30 GMT ... content ... vs: HTTP/2.0 Client HTTP/2.0 Server :method = get :scheme = http :host = www.example.com :path = / user-agent = my-user-agent accept-language = en, fr :status = 200 (or use previous value) date = Thu, 4 Jul 2013 15:35:00 GMT server = my-server content-type: text/html; charset=utf-8 content-length: 1234 content-language: en last-modified: Wed, 3 Jul 2013 12:34:56 GMT ... content ... :method (use previous value) :scheme (use previous value) :host (use previous value) :path = /image.jpg user-agent (use previous value) accept-language (use previous value) :status (use previous value) date = Thu, 4 Jul 2013 15:35:01 GMT server (use previous value) content-type = image/jpeg content-length = 5678 content-language (use previous value) last-modified = Tue, 2 Jul 2013 10:20:30 GMT ... content ... You could then go on to talk about how the client and server encode and decode the respective headers, with the follow-on examples showing the actual encoding. _________________________________________________________ Michael Sweet, Senior Printing System Engineer, PWG Chair
Received on Thursday, 4 July 2013 14:36:21 UTC