我想了解HTTP/2協議壓縮數據字段的方式。我沒有在rfc中找到算法。我知道它是一個二進制協議。 我正在尋找一種方法將二進制協議返回到人類可讀的內容。我認爲這是gzip就像寫在頭上,但它不是任何人有一個來源,我可以尋找二進制協議refernce?HTTP/2數據壓縮
Frame 55: 151 bytes on wire (1208 bits), 151 bytes captured (1208 bits) on interface 0
Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst:00:00:00_00:00:00 (00:00:00:00:00:00)
Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1
Transmission Control Protocol, Src Port: 443 (443), Dst Port: 55300 (55300), Seq: 1087, Ack: 1078, Len: 85
Secure Sockets Layer
HyperText Transfer Protocol 2
Stream: HEADERS, Stream ID: 13, Length 47
Length: 47
Type: HEADERS (1)
Flags: 0x04
0... .... .... .... .... .... .... .... = Reserved: 0x00000000
.000 0000 0000 0000 0000 0000 0000 1101 = Stream Identifier: 13
[Pad Length: 0]
Header Block Fragment: 8854012a5a839bd9ab5f87497ca589d34d1f5c0333333861...
[Header Length: 177]
[Header Count: 6]
Header: :status: 200
Header: access-control-allow-origin: *
Header: content-encoding: gzip
Header: content-type: text/html
Header: content-length: 338
Header: date: Wed, 17 Aug 2016 15:14:25 GMT
Padding: <MISSING>
Frame 56: 442 bytes on wire (3536 bits), 442 bytes captured (3536 bits) on interface 0
Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)
Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1
Transmission Control Protocol, Src Port: 443 (443), Dst Port: 55300 (55300), Seq: 1172, Ack: 1078, Len: 376
Secure Sockets Layer
HyperText Transfer Protocol 2
Stream: DATA, Stream ID: 13, Length 338
Length: 338
Type: DATA (0)
Flags: 0x01
0... .... .... .... .... .... .... .... = Reserved: 0x00000000
.000 0000 0000 0000 0000 0000 0000 1101 = Stream Identifier: 13
[Pad Length: 0]
Data: 1f8b080000096e8800ff9cd2416b1b311005e0b3ffc5eb9e...
Padding: <MISSING>
HTTP/2不會添加數據有效負載的新壓縮,而是添加標頭。你顯然在RFC中看起來不夠努力(或者只是搜索「壓縮」):https://tools.ietf.org/html/rfc7540#ref-COMPRESSION鏈接到HPACK文檔。 –
我知道標題壓縮是如何工作的,我對這一行感興趣Data:1f8b080000096e8800ff9cd2416b1b311005e0b3ffc5eb9e ...並且這不在標題中,所以hpack不在那裏使用,它不是gzip它是某種二進制格式,我想知道它是如何工作的 – dneyer
'1f8b08'是gzip壓縮的初始字節,所以它是gzip。此外,響應標頭還說'content-encoding:gzip',所以DATA框架包含了gzip的響應主體。 – sbordet