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/