- From: Semyon Golubcov <semyon.golubcov@mail.ru>
- Date: Mon, 10 Jul 2017 23:43:08 +0000
- To: ietf-http-wg@w3.org
- Message-Id: <1499730146.115106839@f302.i.mail.ru>
Hello, i'm an amateur developer from Russia, i'm trying to understand http/2 protocol, looking at wireshark dump of the Moziila Firefox browser. There is the following statement for dynamic table size : SETTINGS_HEADER_TABLE_SIZE (0x1): Allows the sender to inform the remote endpoint of the maximum size of the header compression table used to decode header blocks, in octets. The encoder can select any size equal to or less than this value by using signaling specific to the header compression format inside a header block (see [COMPRESSION]). The initial value is 4,096 octets. The initial size for both encoder and decoder is 4096 bytes according to RFC. In SETTINGS frame in wireshark, i can see the new table size passed to the ENDPOINT ( google.com in this case ) 0000 00 00 12 04 00 00 00 00 00 **00 01 00 01 00** 00 00 0010 04 00 02 00 00 00 05 00 00 40 00 00 01 00 01 00 is a pattern for SETTINGS_HEADER_TABLE_SIZE = 65536 What i can't understand does it actually tells the endpoint that the dynamic table used to decode the headers from this ENDPOINT inside browser is 65536 bytes long, or does it tell the ENDPOINT that ENDPOINT dynamic table size should be 65536 ? And reversed, i assume that the ENDPOINT must sent SETTINGS_HEADER_TABLE_SIZE to tell the browser its dynamic table used for decoding the headers from ENDPOINT but i don't see that option sent back by the ENDPOINT. Can someone explain this? Also there is a signal for dynamic table size update, mentioned in RFC, which is sent inside the HEADERS frame. A dynamic table size update starts with the '001' 3-bit pattern, followed by the new maximum size, represented as an integer with a 5-bit prefix (see Section 5.1). The new maximum size MUST be lower than or equal to the limit determined by the protocol using HPACK. A value that exceeds this limit MUST be treated as a decoding error. In HTTP/2, this limit is the last value of the SETTINGS_HEADER_TABLE_SIZE parameter (see Section 6.5.2 of [HTTP2]) received from the decoder and acknowledged by the encoder (see Section 6.5.3 of [HTTP2]). There is this line received from the decoder and acknowledged by the encoder, so does this signal is sent to limit the encoding dynamic table size ? I comletely lost, and it is not obvious from wireshark captures how this is handled correctly -- Semyon Golubcov
Received on Tuesday, 11 July 2017 07:31:31 UTC