draft-ietf-httpbis-compression-dictionary-05.txt | draft-ietf-httpbis-compression-dictionary-06.txt | |||
---|---|---|---|---|
HTTP P. Meenan, Ed. | HTTP P. Meenan, Ed. | |||
Internet-Draft Google LLC | Internet-Draft Google LLC | |||
Intended status: Standards Track Y. Weiss, Ed. | Intended status: Standards Track Y. Weiss, Ed. | |||
Expires: 14 December 2024 Shopify Inc | Expires: 6 January 2025 Shopify Inc | |||
12 June 2024 | 5 July 2024 | |||
Compression Dictionary Transport | Compression Dictionary Transport | |||
draft-ietf-httpbis-compression-dictionary-05 | draft-ietf-httpbis-compression-dictionary-06 | |||
Abstract | Abstract | |||
This specification defines a mechanism for using designated HTTP | This specification defines a mechanism for using designated HTTP | |||
responses as an external dictionary for future HTTP responses for | responses as an external dictionary for future HTTP responses for | |||
compression schemes that support using external dictionaries (e.g., | compression schemes that support using external dictionaries (e.g., | |||
Brotli (RFC 7932) and Zstandard (RFC 8878)). | Brotli (RFC 7932) and Zstandard (RFC 8878)). | |||
About This Document | About This Document | |||
skipping to change at page 2, line 4 ¶ | skipping to change at page 2, line 4 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 14 December 2024. | This Internet-Draft will expire on 6 January 2025. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
skipping to change at page 2, line 41 ¶ | skipping to change at page 2, line 41 ¶ | |||
2.2. Available-Dictionary . . . . . . . . . . . . . . . . . . 6 | 2.2. Available-Dictionary . . . . . . . . . . . . . . . . . . 6 | |||
2.2.1. Dictionary freshness requirement . . . . . . . . . . 6 | 2.2.1. Dictionary freshness requirement . . . . . . . . . . 6 | |||
2.2.2. Dictionary URL matching . . . . . . . . . . . . . . . 6 | 2.2.2. Dictionary URL matching . . . . . . . . . . . . . . . 6 | |||
2.2.3. Multiple matching dictionaries . . . . . . . . . . . 7 | 2.2.3. Multiple matching dictionaries . . . . . . . . . . . 7 | |||
2.3. Dictionary-ID . . . . . . . . . . . . . . . . . . . . . . 7 | 2.3. Dictionary-ID . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3. The 'compression-dictionary' Link Relation Type . . . . . . . 8 | 3. The 'compression-dictionary' Link Relation Type . . . . . . . 8 | |||
4. Dictionary-Compressed Brotli . . . . . . . . . . . . . . . . 8 | 4. Dictionary-Compressed Brotli . . . . . . . . . . . . . . . . 8 | |||
5. Dictionary-Compressed Zstandard . . . . . . . . . . . . . . . 9 | 5. Dictionary-Compressed Zstandard . . . . . . . . . . . . . . . 9 | |||
6. Negotiating the content encoding . . . . . . . . . . . . . . 10 | 6. Negotiating the content encoding . . . . . . . . . . . . . . 10 | |||
6.1. Accept-Encoding . . . . . . . . . . . . . . . . . . . . . 10 | 6.1. Accept-Encoding . . . . . . . . . . . . . . . . . . . . . 10 | |||
6.2. Content-Encoding . . . . . . . . . . . . . . . . . . . . 10 | 6.2. Content-Encoding . . . . . . . . . . . . . . . . . . . . 11 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
7.1. Content Encoding . . . . . . . . . . . . . . . . . . . . 11 | 7.1. Content Encoding . . . . . . . . . . . . . . . . . . . . 11 | |||
7.2. Header Field Registration . . . . . . . . . . . . . . . . 11 | 7.2. Header Field Registration . . . . . . . . . . . . . . . . 11 | |||
7.3. Link Relation Registration . . . . . . . . . . . . . . . 12 | 7.3. Link Relation Registration . . . . . . . . . . . . . . . 12 | |||
8. Compatibility Considerations . . . . . . . . . . . . . . . . 12 | 8. Compatibility Considerations . . . . . . . . . . . . . . . . 12 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
9.1. Changing content . . . . . . . . . . . . . . . . . . . . 12 | 9.1. Changing content . . . . . . . . . . . . . . . . . . . . 12 | |||
9.2. Reading content . . . . . . . . . . . . . . . . . . . . . 13 | 9.2. Reading content . . . . . . . . . . . . . . . . . . . . . 13 | |||
9.3. Security Mitigations . . . . . . . . . . . . . . . . . . 13 | 9.3. Security Mitigations . . . . . . . . . . . . . . . . . . 13 | |||
9.3.1. Cross-origin protection . . . . . . . . . . . . . . . 13 | 9.3.1. Cross-origin protection . . . . . . . . . . . . . . . 13 | |||
skipping to change at page 9, line 5 ¶ | skipping to change at page 9, line 5 ¶ | |||
The "dcb" content encoding identifies a resource that is a | The "dcb" content encoding identifies a resource that is a | |||
"Dictionary-Compressed Brotli" stream. | "Dictionary-Compressed Brotli" stream. | |||
A "Dictionary-Compressed Brotli" stream has a fixed header that is | A "Dictionary-Compressed Brotli" stream has a fixed header that is | |||
followed by a Shared Brotli [SHARED-BROTLI] stream. The header | followed by a Shared Brotli [SHARED-BROTLI] stream. The header | |||
consists of a fixed 4 byte sequence and a 32 byte hash of the | consists of a fixed 4 byte sequence and a 32 byte hash of the | |||
external dictionary that was used. The Shared Brotli stream is | external dictionary that was used. The Shared Brotli stream is | |||
created using the referenced external dictionary and a compression | created using the referenced external dictionary and a compression | |||
window that is at most 16 MB in size. | window that is at most 16 MB in size. | |||
The dictionary used for the "dcb" content encoding is a "raw" | ||||
dictionary type as defined in Section 2.1.4 and is treated as a | ||||
prefix dictionary as defined in section 9.2 of the Shared Brotli | ||||
Compressed Data Format draft. [SHARED-BROTLI] | ||||
The 36-byte fixed header is as follows: | The 36-byte fixed header is as follows: | |||
Magic_Number: 4 fixed bytes: 0xff, 0x44, 0x43, 0x42. | Magic_Number: 4 fixed bytes: 0xff, 0x44, 0x43, 0x42. | |||
SHA_256_Hash: 32 Bytes. SHA-256 hash digest of the dictionary | SHA_256_Hash: 32 Bytes. SHA-256 hash digest of the dictionary | |||
[SHA-256]. | [SHA-256]. | |||
Clients that announce support for dcb content encoding MUST be able | Clients that announce support for dcb content encoding MUST be able | |||
to decompress resources that were compressed with a window size of up | to decompress resources that were compressed with a window size of up | |||
to 16 MB. | to 16 MB. | |||
skipping to change at page 9, line 31 ¶ | skipping to change at page 9, line 36 ¶ | |||
5. Dictionary-Compressed Zstandard | 5. Dictionary-Compressed Zstandard | |||
The "dcz" content encoding identifies a resource that is a | The "dcz" content encoding identifies a resource that is a | |||
"Dictionary-Compressed Zstandard" stream. | "Dictionary-Compressed Zstandard" stream. | |||
A "Dictionary-Compressed Zstandard" stream is a binary stream that | A "Dictionary-Compressed Zstandard" stream is a binary stream that | |||
starts with a 40-byte fixed header and is followed by a Zstandard | starts with a 40-byte fixed header and is followed by a Zstandard | |||
[RFC8878] stream of the response that has been compressed with an | [RFC8878] stream of the response that has been compressed with an | |||
external dictionary. | external dictionary. | |||
The dictionary used for the "dcz" content encoding is a "raw" | ||||
dictionary type as defined in Section 2.1.4 and is treated as a raw | ||||
dictionary as per section 5 of RFC 8878. | ||||
The 40-byte header consists of a fixed 8-byte sequence followed by | The 40-byte header consists of a fixed 8-byte sequence followed by | |||
the 32-byte SHA-256 hash of the external dictionary that was used to | the 32-byte SHA-256 hash of the external dictionary that was used to | |||
compress the resource: | compress the resource: | |||
Magic_Number: 8 fixed bytes: 0x5e, 0x2a, 0x4d, 0x18, 0x20, 0x00, | Magic_Number: 8 fixed bytes: 0x5e, 0x2a, 0x4d, 0x18, 0x20, 0x00, | |||
0x00, 0x00. | 0x00, 0x00. | |||
SHA_256_Hash: 32 Bytes. SHA-256 hash digest of the dictionary | SHA_256_Hash: 32 Bytes. SHA-256 hash digest of the dictionary | |||
[SHA-256]. | [SHA-256]. | |||
End of changes. 6 change blocks. | ||||
5 lines changed or deleted | 14 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |