| draft-ietf-quic-http-30.txt | draft-ietf-quic-http-31.txt | |||
|---|---|---|---|---|
| QUIC M. Bishop, Ed. | QUIC M. Bishop, Ed. | |||
| Internet-Draft Akamai | Internet-Draft Akamai | |||
| Intended status: Standards Track September 10, 2020 | Intended status: Standards Track 25 September 2020 | |||
| Expires: March 14, 2021 | Expires: 29 March 2021 | |||
| Hypertext Transfer Protocol Version 3 (HTTP/3) | Hypertext Transfer Protocol Version 3 (HTTP/3) | |||
| draft-ietf-quic-http-30 | draft-ietf-quic-http-31 | |||
| Abstract | Abstract | |||
| The QUIC transport protocol has several features that are desirable | The QUIC transport protocol has several features that are desirable | |||
| in a transport for HTTP, such as stream multiplexing, per-stream flow | in a transport for HTTP, such as stream multiplexing, per-stream flow | |||
| control, and low-latency connection establishment. This document | control, and low-latency connection establishment. This document | |||
| describes a mapping of HTTP semantics over QUIC. This document also | describes a mapping of HTTP semantics over QUIC. This document also | |||
| identifies HTTP/2 features that are subsumed by QUIC, and describes | identifies HTTP/2 features that are subsumed by QUIC, and describes | |||
| how HTTP/2 extensions can be ported to HTTP/3. | how HTTP/2 extensions can be ported to HTTP/3. | |||
| skipping to change at page 1, line 45 ¶ | skipping to change at page 1, line 45 ¶ | |||
| 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 March 14, 2021. | This Internet-Draft will expire on 29 March 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 3, line 46 ¶ | skipping to change at page 3, line 46 ¶ | |||
| 11.2.1. Frame Types . . . . . . . . . . . . . . . . . . . . 48 | 11.2.1. Frame Types . . . . . . . . . . . . . . . . . . . . 48 | |||
| 11.2.2. Settings Parameters . . . . . . . . . . . . . . . . 49 | 11.2.2. Settings Parameters . . . . . . . . . . . . . . . . 49 | |||
| 11.2.3. Error Codes . . . . . . . . . . . . . . . . . . . . 50 | 11.2.3. Error Codes . . . . . . . . . . . . . . . . . . . . 50 | |||
| 11.2.4. Stream Types . . . . . . . . . . . . . . . . . . . . 53 | 11.2.4. Stream Types . . . . . . . . . . . . . . . . . . . . 53 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 53 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 53 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 55 | 12.2. Informative References . . . . . . . . . . . . . . . . . 55 | |||
| Appendix A. Considerations for Transitioning from HTTP/2 . . . . 56 | Appendix A. Considerations for Transitioning from HTTP/2 . . . . 56 | |||
| A.1. Streams . . . . . . . . . . . . . . . . . . . . . . . . . 56 | A.1. Streams . . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
| A.2. HTTP Frame Types . . . . . . . . . . . . . . . . . . . . 57 | A.2. HTTP Frame Types . . . . . . . . . . . . . . . . . . . . 57 | |||
| A.2.1. Prioritization Differences . . . . . . . . . . . . . 58 | A.2.1. Prioritization Differences . . . . . . . . . . . . . 57 | |||
| A.2.2. Field Compression Differences . . . . . . . . . . . . 58 | A.2.2. Field Compression Differences . . . . . . . . . . . . 58 | |||
| A.2.3. Flow Control Differences . . . . . . . . . . . . . . 58 | A.2.3. Flow Control Differences . . . . . . . . . . . . . . 58 | |||
| A.2.4. Guidance for New Frame Type Definitions . . . . . . . 58 | A.2.4. Guidance for New Frame Type Definitions . . . . . . . 58 | |||
| A.2.5. Mapping Between HTTP/2 and HTTP/3 Frame Types . . . . 59 | A.2.5. Mapping Between HTTP/2 and HTTP/3 Frame Types . . . . 59 | |||
| A.3. HTTP/2 SETTINGS Parameters . . . . . . . . . . . . . . . 60 | A.3. HTTP/2 SETTINGS Parameters . . . . . . . . . . . . . . . 60 | |||
| A.4. HTTP/2 Error Codes . . . . . . . . . . . . . . . . . . . 61 | A.4. HTTP/2 Error Codes . . . . . . . . . . . . . . . . . . . 61 | |||
| A.4.1. Mapping Between HTTP/2 and HTTP/3 Errors . . . . . . 62 | A.4.1. Mapping Between HTTP/2 and HTTP/3 Errors . . . . . . 62 | |||
| Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 63 | Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 63 | |||
| B.1. Since draft-ietf-quic-http-29 . . . . . . . . . . . . . . 63 | B.1. Since draft-ietf-quic-http-30 . . . . . . . . . . . . . . 63 | |||
| B.2. Since draft-ietf-quic-http-28 . . . . . . . . . . . . . . 63 | B.2. Since draft-ietf-quic-http-29 . . . . . . . . . . . . . . 63 | |||
| B.3. Since draft-ietf-quic-http-27 . . . . . . . . . . . . . . 63 | B.3. Since draft-ietf-quic-http-28 . . . . . . . . . . . . . . 63 | |||
| B.4. Since draft-ietf-quic-http-26 . . . . . . . . . . . . . . 63 | B.4. Since draft-ietf-quic-http-27 . . . . . . . . . . . . . . 63 | |||
| B.5. Since draft-ietf-quic-http-25 . . . . . . . . . . . . . . 64 | B.5. Since draft-ietf-quic-http-26 . . . . . . . . . . . . . . 63 | |||
| B.6. Since draft-ietf-quic-http-24 . . . . . . . . . . . . . . 64 | B.6. Since draft-ietf-quic-http-25 . . . . . . . . . . . . . . 63 | |||
| B.7. Since draft-ietf-quic-http-23 . . . . . . . . . . . . . . 64 | B.7. Since draft-ietf-quic-http-24 . . . . . . . . . . . . . . 64 | |||
| B.8. Since draft-ietf-quic-http-22 . . . . . . . . . . . . . . 64 | B.8. Since draft-ietf-quic-http-23 . . . . . . . . . . . . . . 64 | |||
| B.9. Since draft-ietf-quic-http-21 . . . . . . . . . . . . . . 65 | B.9. Since draft-ietf-quic-http-22 . . . . . . . . . . . . . . 64 | |||
| B.10. Since draft-ietf-quic-http-20 . . . . . . . . . . . . . . 65 | B.10. Since draft-ietf-quic-http-21 . . . . . . . . . . . . . . 65 | |||
| B.11. Since draft-ietf-quic-http-19 . . . . . . . . . . . . . . 66 | B.11. Since draft-ietf-quic-http-20 . . . . . . . . . . . . . . 65 | |||
| B.12. Since draft-ietf-quic-http-18 . . . . . . . . . . . . . . 66 | B.12. Since draft-ietf-quic-http-19 . . . . . . . . . . . . . . 66 | |||
| B.13. Since draft-ietf-quic-http-17 . . . . . . . . . . . . . . 67 | B.13. Since draft-ietf-quic-http-18 . . . . . . . . . . . . . . 66 | |||
| B.14. Since draft-ietf-quic-http-16 . . . . . . . . . . . . . . 67 | B.14. Since draft-ietf-quic-http-17 . . . . . . . . . . . . . . 66 | |||
| B.15. Since draft-ietf-quic-http-15 . . . . . . . . . . . . . . 67 | B.15. Since draft-ietf-quic-http-16 . . . . . . . . . . . . . . 67 | |||
| B.16. Since draft-ietf-quic-http-14 . . . . . . . . . . . . . . 67 | B.16. Since draft-ietf-quic-http-15 . . . . . . . . . . . . . . 67 | |||
| B.17. Since draft-ietf-quic-http-13 . . . . . . . . . . . . . . 68 | B.17. Since draft-ietf-quic-http-14 . . . . . . . . . . . . . . 67 | |||
| B.18. Since draft-ietf-quic-http-12 . . . . . . . . . . . . . . 68 | B.18. Since draft-ietf-quic-http-13 . . . . . . . . . . . . . . 67 | |||
| B.19. Since draft-ietf-quic-http-11 . . . . . . . . . . . . . . 68 | B.19. Since draft-ietf-quic-http-12 . . . . . . . . . . . . . . 68 | |||
| B.20. Since draft-ietf-quic-http-10 . . . . . . . . . . . . . . 68 | B.20. Since draft-ietf-quic-http-11 . . . . . . . . . . . . . . 68 | |||
| B.21. Since draft-ietf-quic-http-09 . . . . . . . . . . . . . . 68 | B.21. Since draft-ietf-quic-http-10 . . . . . . . . . . . . . . 68 | |||
| B.22. Since draft-ietf-quic-http-08 . . . . . . . . . . . . . . 69 | B.22. Since draft-ietf-quic-http-09 . . . . . . . . . . . . . . 68 | |||
| B.23. Since draft-ietf-quic-http-07 . . . . . . . . . . . . . . 69 | B.23. Since draft-ietf-quic-http-08 . . . . . . . . . . . . . . 69 | |||
| B.24. Since draft-ietf-quic-http-06 . . . . . . . . . . . . . . 69 | B.24. Since draft-ietf-quic-http-07 . . . . . . . . . . . . . . 69 | |||
| B.25. Since draft-ietf-quic-http-05 . . . . . . . . . . . . . . 69 | B.25. Since draft-ietf-quic-http-06 . . . . . . . . . . . . . . 69 | |||
| B.26. Since draft-ietf-quic-http-04 . . . . . . . . . . . . . . 69 | B.26. Since draft-ietf-quic-http-05 . . . . . . . . . . . . . . 69 | |||
| B.27. Since draft-ietf-quic-http-03 . . . . . . . . . . . . . . 70 | B.27. Since draft-ietf-quic-http-04 . . . . . . . . . . . . . . 69 | |||
| B.28. Since draft-ietf-quic-http-02 . . . . . . . . . . . . . . 70 | B.28. Since draft-ietf-quic-http-03 . . . . . . . . . . . . . . 69 | |||
| B.29. Since draft-ietf-quic-http-01 . . . . . . . . . . . . . . 70 | B.29. Since draft-ietf-quic-http-02 . . . . . . . . . . . . . . 70 | |||
| B.30. Since draft-ietf-quic-http-00 . . . . . . . . . . . . . . 70 | B.30. Since draft-ietf-quic-http-01 . . . . . . . . . . . . . . 70 | |||
| B.31. Since draft-shade-quic-http2-mapping-00 . . . . . . . . . 71 | B.31. Since draft-ietf-quic-http-00 . . . . . . . . . . . . . . 70 | |||
| B.32. Since draft-shade-quic-http2-mapping-00 . . . . . . . . . 71 | ||||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 71 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 71 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 72 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 72 | |||
| 1. Introduction | 1. Introduction | |||
| HTTP semantics ([SEMANTICS]) are used for a broad range of services | HTTP semantics ([SEMANTICS]) are used for a broad range of services | |||
| on the Internet. These semantics have most commonly been used with | on the Internet. These semantics have most commonly been used with | |||
| HTTP/1.1, over a variety of transport and session layers, and with | HTTP/1.1, over a variety of transport and session layers, and with | |||
| HTTP/2 over TLS. HTTP/3 supports the same semantics over a new | HTTP/2 over TLS. HTTP/3 supports the same semantics over a new | |||
| transport protocol, QUIC. | transport protocol, QUIC. | |||
| skipping to change at page 15, line 18 ¶ | skipping to change at page 15, line 18 ¶ | |||
| All pseudo-header fields MUST appear in the header field section | All pseudo-header fields MUST appear in the header field section | |||
| before regular header fields. Any request or response that contains | before regular header fields. Any request or response that contains | |||
| a pseudo-header field that appears in a header field section after a | a pseudo-header field that appears in a header field section after a | |||
| regular header field MUST be treated as malformed (Section 4.1.3). | regular header field MUST be treated as malformed (Section 4.1.3). | |||
| The following pseudo-header fields are defined for requests: | The following pseudo-header fields are defined for requests: | |||
| ":method": Contains the HTTP method (Section 8 of [SEMANTICS]) | ":method": Contains the HTTP method (Section 8 of [SEMANTICS]) | |||
| ":scheme": Contains the scheme portion of the target URI | ":scheme": Contains the scheme portion of the target URI | |||
| (Section 3.1 of [RFC3986]) | (Section 3.1 of [URI]) | |||
| ":scheme" is not restricted to "http" and "https" schemed URIs. A | ":scheme" is not restricted to "http" and "https" schemed URIs. A | |||
| proxy or gateway can translate requests for non-HTTP schemes, | proxy or gateway can translate requests for non-HTTP schemes, | |||
| enabling the use of HTTP to interact with non-HTTP services. | enabling the use of HTTP to interact with non-HTTP services. | |||
| ":authority": Contains the authority portion of the target URI | ":authority": Contains the authority portion of the target URI | |||
| (Section 3.2 of [RFC3986]). The authority MUST NOT include the | (Section 3.2 of [URI]). The authority MUST NOT include the | |||
| deprecated "userinfo" subcomponent for "http" or "https" schemed | deprecated "userinfo" subcomponent for "http" or "https" schemed | |||
| URIs. | URIs. | |||
| To ensure that the HTTP/1.1 request line can be reproduced | To ensure that the HTTP/1.1 request line can be reproduced | |||
| accurately, this pseudo-header field MUST be omitted when | accurately, this pseudo-header field MUST be omitted when | |||
| translating from an HTTP/1.1 request that has a request target in | translating from an HTTP/1.1 request that has a request target in | |||
| origin or asterisk form; see Section 3.2 of [HTTP11]. Clients | origin or asterisk form; see Section 3.2 of [HTTP11]. Clients | |||
| that generate HTTP/3 requests directly SHOULD use the ":authority" | that generate HTTP/3 requests directly SHOULD use the ":authority" | |||
| pseudo-header field instead of the Host field. An intermediary | pseudo-header field instead of the Host field. An intermediary | |||
| that converts an HTTP/3 request to HTTP/1.1 MUST create a Host | that converts an HTTP/3 request to HTTP/1.1 MUST create a Host | |||
| skipping to change at page 21, line 42 ¶ | skipping to change at page 21, line 42 ¶ | |||
| * safe; see Section 8.2.1 of [SEMANTICS] | * safe; see Section 8.2.1 of [SEMANTICS] | |||
| * does not include a request body or trailer section | * does not include a request body or trailer section | |||
| The server MUST include a value in the ":authority" pseudo-header | The server MUST include a value in the ":authority" pseudo-header | |||
| field for which the server is authoritative; see Section 3.4. | field for which the server is authoritative; see Section 3.4. | |||
| Clients SHOULD send a CANCEL_PUSH frame upon receipt of a | Clients SHOULD send a CANCEL_PUSH frame upon receipt of a | |||
| PUSH_PROMISE frame carrying a request that is not cacheable, is not | PUSH_PROMISE frame carrying a request that is not cacheable, is not | |||
| known to be safe, that indicates the presence of a request body, or | known to be safe, that indicates the presence of a request body, or | |||
| for which it does not consider the server authoritative. | for which it does not consider the server authoritative. Any | |||
| corresponding responses MUST NOT be used or cached. | ||||
| Each pushed response is associated with one or more client requests. | Each pushed response is associated with one or more client requests. | |||
| The push is associated with the request stream on which the | The push is associated with the request stream on which the | |||
| PUSH_PROMISE frame was received. The same server push can be | PUSH_PROMISE frame was received. The same server push can be | |||
| associated with additional client requests using a PUSH_PROMISE frame | associated with additional client requests using a PUSH_PROMISE frame | |||
| with the same Push ID on multiple request streams. These | with the same Push ID on multiple request streams. These | |||
| associations do not affect the operation of the protocol, but MAY be | associations do not affect the operation of the protocol, but MAY be | |||
| considered by user agents when deciding how to use pushed resources. | considered by user agents when deciding how to use pushed resources. | |||
| Ordering of a PUSH_PROMISE frame in relation to certain parts of the | Ordering of a PUSH_PROMISE frame in relation to certain parts of the | |||
| skipping to change at page 43, line 41 ¶ | skipping to change at page 43, line 41 ¶ | |||
| tenant. For example, a server might offer multiple users each a | tenant. For example, a server might offer multiple users each a | |||
| small portion of its URI space. | small portion of its URI space. | |||
| Where multiple tenants share space on the same server, that server | Where multiple tenants share space on the same server, that server | |||
| MUST ensure that tenants are not able to push representations of | MUST ensure that tenants are not able to push representations of | |||
| resources that they do not have authority over. Failure to enforce | resources that they do not have authority over. Failure to enforce | |||
| this would allow a tenant to provide a representation that would be | this would allow a tenant to provide a representation that would be | |||
| served out of cache, overriding the actual representation that the | served out of cache, overriding the actual representation that the | |||
| authoritative tenant provides. | authoritative tenant provides. | |||
| Pushed responses for which an origin server is not authoritative (see | Clients are required to reject pushed responses for which an origin | |||
| Section 3.4) MUST NOT be used or cached. | server is not authoritative; see Section 4.4. | |||
| 10.5. Denial-of-Service Considerations | 10.5. Denial-of-Service Considerations | |||
| An HTTP/3 connection can demand a greater commitment of resources to | An HTTP/3 connection can demand a greater commitment of resources to | |||
| operate than an HTTP/1.1 or HTTP/2 connection. The use of field | operate than an HTTP/1.1 or HTTP/2 connection. The use of field | |||
| compression and flow control depend on a commitment of resources for | compression and flow control depend on a commitment of resources for | |||
| storing a greater amount of state. Settings for these features | storing a greater amount of state. Settings for these features | |||
| ensure that memory commitments for these features are strictly | ensure that memory commitments for these features are strictly | |||
| bounded. | bounded. | |||
| skipping to change at page 54, line 7 ¶ | skipping to change at page 54, line 7 ¶ | |||
| 12. References | 12. References | |||
| 12.1. Normative References | 12.1. Normative References | |||
| [ALTSVC] Nottingham, M., McManus, P., and J. Reschke, "HTTP | [ALTSVC] Nottingham, M., McManus, P., and J. Reschke, "HTTP | |||
| Alternative Services", RFC 7838, DOI 10.17487/RFC7838, | Alternative Services", RFC 7838, DOI 10.17487/RFC7838, | |||
| April 2016, <https://www.rfc-editor.org/info/rfc7838>. | April 2016, <https://www.rfc-editor.org/info/rfc7838>. | |||
| [CACHING] Fielding, R., Nottingham, M., and J. Reschke, "HTTP | [CACHING] Fielding, R., Nottingham, M., and J. Reschke, "HTTP | |||
| Caching", Work in Progress, Internet-Draft, draft-ietf- | Caching", Work in Progress, Internet-Draft, draft-ietf- | |||
| httpbis-cache-11, August 27, 2020, <http://www.ietf.org/ | httpbis-cache-11, 27 August 2020, <http://www.ietf.org/ | |||
| internet-drafts/draft-ietf-httpbis-cache-11.txt>. | internet-drafts/draft-ietf-httpbis-cache-11.txt>. | |||
| [HTTP-REPLAY] | [HTTP-REPLAY] | |||
| Thomson, M., Nottingham, M., and W. Tarreau, "Using Early | Thomson, M., Nottingham, M., and W. Tarreau, "Using Early | |||
| Data in HTTP", RFC 8470, DOI 10.17487/RFC8470, September | Data in HTTP", RFC 8470, DOI 10.17487/RFC8470, September | |||
| 2018, <https://www.rfc-editor.org/info/rfc8470>. | 2018, <https://www.rfc-editor.org/info/rfc8470>. | |||
| [QPACK] Krasic, C., Bishop, M., and A. Frindell, Ed., "QPACK: | [QPACK] Krasic, C., Bishop, M., and A. Frindell, Ed., "QPACK: | |||
| Header Compression for HTTP over QUIC", Work in Progress, | Header Compression for HTTP over QUIC", Work in Progress, | |||
| Internet-Draft, draft-ietf-quic-qpack-17, September 10, | Internet-Draft, draft-ietf-quic-qpack-18, 25 September | |||
| 2020, | 2020, | |||
| <https://tools.ietf.org/html/draft-ietf-quic-qpack-17>. | <https://tools.ietf.org/html/draft-ietf-quic-qpack-18>. | |||
| [QUIC-TRANSPORT] | [QUIC-TRANSPORT] | |||
| Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", Work in Progress, | Multiplexed and Secure Transport", Work in Progress, | |||
| Internet-Draft, draft-ietf-quic-transport-29, September | Internet-Draft, draft-ietf-quic-transport-31, 25 September | |||
| 10, 2020, <https://tools.ietf.org/html/draft-ietf-quic- | 2020, <https://tools.ietf.org/html/draft-ietf-quic- | |||
| transport-29>. | transport-31>. | |||
| [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | |||
| RFC 793, DOI 10.17487/RFC0793, September 1981, | RFC 793, DOI 10.17487/RFC0793, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc793>. | <https://www.rfc-editor.org/info/rfc793>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
| Resource Identifier (URI): Generic Syntax", STD 66, | ||||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | ||||
| <https://www.rfc-editor.org/info/rfc3986>. | ||||
| [RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS) | [RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS) | |||
| Extensions: Extension Definitions", RFC 6066, | Extensions: Extension Definitions", RFC 6066, | |||
| DOI 10.17487/RFC6066, January 2011, | DOI 10.17487/RFC6066, January 2011, | |||
| <https://www.rfc-editor.org/info/rfc6066>. | <https://www.rfc-editor.org/info/rfc6066>. | |||
| [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | |||
| Verification of Domain-Based Application Service Identity | Verification of Domain-Based Application Service Identity | |||
| within Internet Public Key Infrastructure Using X.509 | within Internet Public Key Infrastructure Using X.509 | |||
| (PKIX) Certificates in the Context of Transport Layer | (PKIX) Certificates in the Context of Transport Layer | |||
| Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March | Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March | |||
| skipping to change at page 55, line 30 ¶ | skipping to change at page 55, line 26 ¶ | |||
| HTTP/2", RFC 8164, DOI 10.17487/RFC8164, May 2017, | HTTP/2", RFC 8164, DOI 10.17487/RFC8164, May 2017, | |||
| <https://www.rfc-editor.org/info/rfc8164>. | <https://www.rfc-editor.org/info/rfc8164>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [SEMANTICS] | [SEMANTICS] | |||
| Fielding, R., Nottingham, M., and J. Reschke, "HTTP | Fielding, R., Nottingham, M., and J. Reschke, "HTTP | |||
| Semantics", Work in Progress, Internet-Draft, draft-ietf- | Semantics", Work in Progress, Internet-Draft, draft-ietf- | |||
| httpbis-semantics-11, August 27, 2020, | httpbis-semantics-11, 27 August 2020, | |||
| <http://www.ietf.org/internet-drafts/draft-ietf-httpbis- | <http://www.ietf.org/internet-drafts/draft-ietf-httpbis- | |||
| semantics-11.txt>. | semantics-11.txt>. | |||
| [URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
| Resource Identifier (URI): Generic Syntax", STD 66, | ||||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | ||||
| <https://www.rfc-editor.org/info/rfc3986>. | ||||
| 12.2. Informative References | 12.2. Informative References | |||
| [BREACH] Gluck, Y., Harris, N., and A. Prado, "BREACH: Reviving the | [BREACH] Gluck, Y., Harris, N., and A. Prado, "BREACH: Reviving the | |||
| CRIME Attack", July 2013, | CRIME Attack", July 2013, | |||
| <http://breachattack.com/resources/ | <http://breachattack.com/resources/ | |||
| BREACH%20-%20SSL,%20gone%20in%2030%20seconds.pdf>. | BREACH%20-%20SSL,%20gone%20in%2030%20seconds.pdf>. | |||
| [HPACK] Peon, R. and H. Ruellan, "HPACK: Header Compression for | [HPACK] Peon, R. and H. Ruellan, "HPACK: Header Compression for | |||
| HTTP/2", RFC 7541, DOI 10.17487/RFC7541, May 2015, | HTTP/2", RFC 7541, DOI 10.17487/RFC7541, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7541>. | <https://www.rfc-editor.org/info/rfc7541>. | |||
| [HTTP11] Fielding, R., Nottingham, M., and J. Reschke, "HTTP/1.1 | [HTTP11] Fielding, R., Nottingham, M., and J. Reschke, "HTTP/1.1 | |||
| Messaging", Work in Progress, Internet-Draft, draft-ietf- | Messaging", Work in Progress, Internet-Draft, draft-ietf- | |||
| httpbis-messaging-11, August 27, 2020, | httpbis-messaging-11, 27 August 2020, | |||
| <http://www.ietf.org/internet-drafts/draft-ietf-httpbis- | <http://www.ietf.org/internet-drafts/draft-ietf-httpbis- | |||
| messaging-11.txt>. | messaging-11.txt>. | |||
| [HTTP2] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | [HTTP2] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | |||
| Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | |||
| DOI 10.17487/RFC7540, May 2015, | DOI 10.17487/RFC7540, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7540>. | <https://www.rfc-editor.org/info/rfc7540>. | |||
| [RFC6585] Nottingham, M. and R. Fielding, "Additional HTTP Status | [RFC6585] Nottingham, M. and R. Fielding, "Additional HTTP Status | |||
| Codes", RFC 6585, DOI 10.17487/RFC6585, April 2012, | Codes", RFC 6585, DOI 10.17487/RFC6585, April 2012, | |||
| <https://www.rfc-editor.org/info/rfc6585>. | <https://www.rfc-editor.org/info/rfc6585>. | |||
| [TFO] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | [TFO] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | |||
| Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, | Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, | |||
| <https://www.rfc-editor.org/info/rfc7413>. | <https://www.rfc-editor.org/info/rfc7413>. | |||
| [TLS13] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [TLS13] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
| <https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
| [URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
| Resource Identifier (URI): Generic Syntax", STD 66, | ||||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | ||||
| <https://www.rfc-editor.org/info/rfc3986>. | ||||
| Appendix A. Considerations for Transitioning from HTTP/2 | Appendix A. Considerations for Transitioning from HTTP/2 | |||
| HTTP/3 is strongly informed by HTTP/2, and bears many similarities. | HTTP/3 is strongly informed by HTTP/2, and bears many similarities. | |||
| This section describes the approach taken to design HTTP/3, points | This section describes the approach taken to design HTTP/3, points | |||
| out important differences from HTTP/2, and describes how to map | out important differences from HTTP/2, and describes how to map | |||
| HTTP/2 extensions into HTTP/3. | HTTP/2 extensions into HTTP/3. | |||
| HTTP/3 begins from the premise that similarity to HTTP/2 is | HTTP/3 begins from the premise that similarity to HTTP/2 is | |||
| preferable, but not a hard requirement. HTTP/3 departs from HTTP/2 | preferable, but not a hard requirement. HTTP/3 departs from HTTP/2 | |||
| where QUIC differs from TCP, either to take advantage of QUIC | where QUIC differs from TCP, either to take advantage of QUIC | |||
| skipping to change at page 63, line 18 ¶ | skipping to change at page 63, line 10 ¶ | |||
| inappropriate or unknown error codes for the target version. An | inappropriate or unknown error codes for the target version. An | |||
| intermediary is permitted to promote stream errors to connection | intermediary is permitted to promote stream errors to connection | |||
| errors but they should be aware of the cost to the connection for | errors but they should be aware of the cost to the connection for | |||
| what might be a temporary or intermittent error. | what might be a temporary or intermittent error. | |||
| Appendix B. Change Log | Appendix B. Change Log | |||
| *RFC Editor's Note:* Please remove this section prior to | *RFC Editor's Note:* Please remove this section prior to | |||
| publication of a final version of this document. | publication of a final version of this document. | |||
| B.1. Since draft-ietf-quic-http-29 | B.1. Since draft-ietf-quic-http-30 | |||
| Editorial changes only. | ||||
| B.2. Since draft-ietf-quic-http-29 | ||||
| * Require a connection error if a reserved frame type that | * Require a connection error if a reserved frame type that | |||
| corresponds to a frame in HTTP/2 is received (#3991, #3993) | corresponds to a frame in HTTP/2 is received (#3991, #3993) | |||
| * Require a connection error if a reserved setting that corresponds | * Require a connection error if a reserved setting that corresponds | |||
| to a setting in HTTP/2 is received (#3954, #3955) | to a setting in HTTP/2 is received (#3954, #3955) | |||
| B.2. Since draft-ietf-quic-http-28 | B.3. Since draft-ietf-quic-http-28 | |||
| * CANCEL_PUSH is recommended even when the stream is reset (#3698, | * CANCEL_PUSH is recommended even when the stream is reset (#3698, | |||
| #3700) | #3700) | |||
| * Use H3_ID_ERROR when GOAWAY contains a larger identifier (#3631, | * Use H3_ID_ERROR when GOAWAY contains a larger identifier (#3631, | |||
| #3634) | #3634) | |||
| B.3. Since draft-ietf-quic-http-27 | B.4. Since draft-ietf-quic-http-27 | |||
| * Updated text to refer to latest HTTP revisions | * Updated text to refer to latest HTTP revisions | |||
| * Use the HTTP definition of authority for establishing and | * Use the HTTP definition of authority for establishing and | |||
| coalescing connections (#253, #2223, #3558) | coalescing connections (#253, #2223, #3558) | |||
| * Define use of GOAWAY from both endpoints (#2632, #3129) | * Define use of GOAWAY from both endpoints (#2632, #3129) | |||
| * Require either :authority or Host if the URI scheme has a | * Require either :authority or Host if the URI scheme has a | |||
| mandatory authority component (#3408, #3475) | mandatory authority component (#3408, #3475) | |||
| B.4. Since draft-ietf-quic-http-26 | B.5. Since draft-ietf-quic-http-26 | |||
| * No changes | * No changes | |||
| B.5. Since draft-ietf-quic-http-25 | B.6. Since draft-ietf-quic-http-25 | |||
| * Require QUICv1 for HTTP/3 (#3117, #3323) | * Require QUICv1 for HTTP/3 (#3117, #3323) | |||
| * Remove DUPLICATE_PUSH and allow duplicate PUSH_PROMISE (#3275, | * Remove DUPLICATE_PUSH and allow duplicate PUSH_PROMISE (#3275, | |||
| #3309) | #3309) | |||
| * Clarify the definition of "malformed" (#3352, #3345) | * Clarify the definition of "malformed" (#3352, #3345) | |||
| B.6. Since draft-ietf-quic-http-24 | B.7. Since draft-ietf-quic-http-24 | |||
| * Removed H3_EARLY_RESPONSE error code; H3_NO_ERROR is recommended | * Removed H3_EARLY_RESPONSE error code; H3_NO_ERROR is recommended | |||
| instead (#3130,#3208) | instead (#3130,#3208) | |||
| * Unknown error codes are equivalent to H3_NO_ERROR (#3276,#3331) | * Unknown error codes are equivalent to H3_NO_ERROR (#3276,#3331) | |||
| * Some error codes are reserved for greasing (#3325,#3360) | * Some error codes are reserved for greasing (#3325,#3360) | |||
| B.7. Since draft-ietf-quic-http-23 | B.8. Since draft-ietf-quic-http-23 | |||
| * Removed "quic" Alt-Svc parameter (#3061,#3118) | * Removed "quic" Alt-Svc parameter (#3061,#3118) | |||
| * Clients need not persist unknown settings for use in 0-RTT | * Clients need not persist unknown settings for use in 0-RTT | |||
| (#3110,#3113) | (#3110,#3113) | |||
| * Clarify error cases around CANCEL_PUSH (#2819,#3083) | * Clarify error cases around CANCEL_PUSH (#2819,#3083) | |||
| B.8. Since draft-ietf-quic-http-22 | B.9. Since draft-ietf-quic-http-22 | |||
| * Removed priority signaling (#2922,#2924) | * Removed priority signaling (#2922,#2924) | |||
| * Further changes to error codes (#2662,#2551): | * Further changes to error codes (#2662,#2551): | |||
| - Error codes renumbered | - Error codes renumbered | |||
| - HTTP_MALFORMED_FRAME replaced by HTTP_FRAME_ERROR, | - HTTP_MALFORMED_FRAME replaced by HTTP_FRAME_ERROR, | |||
| HTTP_ID_ERROR, and others | HTTP_ID_ERROR, and others | |||
| skipping to change at page 65, line 4 ¶ | skipping to change at page 64, line 46 ¶ | |||
| * Clarify how unknown frame types interact with required frame | * Clarify how unknown frame types interact with required frame | |||
| sequence (#2867,#2858) | sequence (#2867,#2858) | |||
| * Describe interactions with the transport in terms of defined | * Describe interactions with the transport in terms of defined | |||
| interface terms (#2857,#2805) | interface terms (#2857,#2805) | |||
| * Require the use of the "http-opportunistic" resource (RFC 8164) | * Require the use of the "http-opportunistic" resource (RFC 8164) | |||
| when scheme is "http" (#2439,#2973) | when scheme is "http" (#2439,#2973) | |||
| * Settings identifiers cannot be duplicated (#2979) | * Settings identifiers cannot be duplicated (#2979) | |||
| * Changes to SETTINGS frames in 0-RTT (#2972,#2790,#2945): | * Changes to SETTINGS frames in 0-RTT (#2972,#2790,#2945): | |||
| - Servers must send all settings with non-default values in their | - Servers must send all settings with non-default values in their | |||
| SETTINGS frame, even when resuming | SETTINGS frame, even when resuming | |||
| - If a client doesn't have settings associated with a 0-RTT | - If a client doesn't have settings associated with a 0-RTT | |||
| ticket, it uses the defaults | ticket, it uses the defaults | |||
| - Servers can't accept early data if they cannot recover the | - Servers can't accept early data if they cannot recover the | |||
| settings the client will have remembered | settings the client will have remembered | |||
| * Clarify that Upgrade and the 101 status code are prohibited | * Clarify that Upgrade and the 101 status code are prohibited | |||
| (#2898,#2889) | (#2898,#2889) | |||
| * Clarify that frame types reserved for greasing can occur on any | * Clarify that frame types reserved for greasing can occur on any | |||
| stream, but frame types reserved due to HTTP/2 correspondence are | stream, but frame types reserved due to HTTP/2 correspondence are | |||
| prohibited (#2997,#2692,#2693) | prohibited (#2997,#2692,#2693) | |||
| * Unknown error codes cannot be treated as errors (#2998,#2816) | * Unknown error codes cannot be treated as errors (#2998,#2816) | |||
| B.9. Since draft-ietf-quic-http-21 | B.10. Since draft-ietf-quic-http-21 | |||
| No changes | No changes | |||
| B.10. Since draft-ietf-quic-http-20 | B.11. Since draft-ietf-quic-http-20 | |||
| * Prohibit closing the control stream (#2509, #2666) | * Prohibit closing the control stream (#2509, #2666) | |||
| * Change default priority to use an orphan node (#2502, #2690) | * Change default priority to use an orphan node (#2502, #2690) | |||
| * Exclusive priorities are restored (#2754, #2781) | * Exclusive priorities are restored (#2754, #2781) | |||
| * Restrict use of frames when using CONNECT (#2229, #2702) | * Restrict use of frames when using CONNECT (#2229, #2702) | |||
| * Close and maybe reset streams if a connection error occurs for | * Close and maybe reset streams if a connection error occurs for | |||
| skipping to change at page 66, line 4 ¶ | skipping to change at page 65, line 46 ¶ | |||
| * Encourage provision of sufficient unidirectional streams for QPACK | * Encourage provision of sufficient unidirectional streams for QPACK | |||
| (#2100, #2529, #2762) | (#2100, #2529, #2762) | |||
| * Allow extensions to use server-initiated bidirectional streams | * Allow extensions to use server-initiated bidirectional streams | |||
| (#2711, #2773) | (#2711, #2773) | |||
| * Clarify use of maximum header list size setting (#2516, #2774) | * Clarify use of maximum header list size setting (#2516, #2774) | |||
| * Extensive changes to error codes and conditions of their sending | * Extensive changes to error codes and conditions of their sending | |||
| - Require connection errors for more error conditions (#2511, | - Require connection errors for more error conditions (#2511, | |||
| #2510) | #2510) | |||
| - Updated the error codes for illegal GOAWAY frames (#2714, | - Updated the error codes for illegal GOAWAY frames (#2714, | |||
| #2707) | #2707) | |||
| - Specified error code for HEADERS on control stream (#2708) | - Specified error code for HEADERS on control stream (#2708) | |||
| - Specified error code for servers receiving PUSH_PROMISE (#2709) | - Specified error code for servers receiving PUSH_PROMISE (#2709) | |||
| - Specified error code for receiving DATA before HEADERS (#2715) | - Specified error code for receiving DATA before HEADERS (#2715) | |||
| - Describe malformed messages and their handling (#2410, #2764) | - Describe malformed messages and their handling (#2410, #2764) | |||
| - Remove HTTP_PUSH_ALREADY_IN_CACHE error (#2812, #2813) | - Remove HTTP_PUSH_ALREADY_IN_CACHE error (#2812, #2813) | |||
| - Refactor Push ID related errors (#2818, #2820) | - Refactor Push ID related errors (#2818, #2820) | |||
| - Rationalize HTTP/3 stream creation errors (#2821, #2822) | - Rationalize HTTP/3 stream creation errors (#2821, #2822) | |||
| B.11. Since draft-ietf-quic-http-19 | B.12. Since draft-ietf-quic-http-19 | |||
| * SETTINGS_NUM_PLACEHOLDERS is 0x9 (#2443,#2530) | * SETTINGS_NUM_PLACEHOLDERS is 0x9 (#2443,#2530) | |||
| * Non-zero bits in the Empty field of the PRIORITY frame MAY be | * Non-zero bits in the Empty field of the PRIORITY frame MAY be | |||
| treated as an error (#2501) | treated as an error (#2501) | |||
| B.12. Since draft-ietf-quic-http-18 | B.13. Since draft-ietf-quic-http-18 | |||
| * Resetting streams following a GOAWAY is recommended, but not | * Resetting streams following a GOAWAY is recommended, but not | |||
| required (#2256,#2457) | required (#2256,#2457) | |||
| * Use variable-length integers throughout (#2437,#2233,#2253,#2275) | * Use variable-length integers throughout (#2437,#2233,#2253,#2275) | |||
| - Variable-length frame types, stream types, and settings | - Variable-length frame types, stream types, and settings | |||
| identifiers | identifiers | |||
| - Renumbered stream type assignments | - Renumbered stream type assignments | |||
| - Modified associated reserved values | - Modified associated reserved values | |||
| * Frame layout switched from Length-Type-Value to Type-Length-Value | * Frame layout switched from Length-Type-Value to Type-Length-Value | |||
| (#2395,#2235) | (#2395,#2235) | |||
| * Specified error code for servers receiving DUPLICATE_PUSH (#2497) | * Specified error code for servers receiving DUPLICATE_PUSH (#2497) | |||
| * Use connection error for invalid PRIORITY (#2507, #2508) | * Use connection error for invalid PRIORITY (#2507, #2508) | |||
| B.13. Since draft-ietf-quic-http-17 | B.14. Since draft-ietf-quic-http-17 | |||
| * HTTP_REQUEST_REJECTED is used to indicate a request can be retried | * HTTP_REQUEST_REJECTED is used to indicate a request can be retried | |||
| (#2106, #2325) | (#2106, #2325) | |||
| * Changed error code for GOAWAY on the wrong stream (#2231, #2343) | * Changed error code for GOAWAY on the wrong stream (#2231, #2343) | |||
| B.14. Since draft-ietf-quic-http-16 | B.15. Since draft-ietf-quic-http-16 | |||
| * Rename "HTTP/QUIC" to "HTTP/3" (#1973) | * Rename "HTTP/QUIC" to "HTTP/3" (#1973) | |||
| * Changes to PRIORITY frame (#1865, #2075) | * Changes to PRIORITY frame (#1865, #2075) | |||
| - Permitted as first frame of request streams | - Permitted as first frame of request streams | |||
| - Remove exclusive reprioritization | - Remove exclusive reprioritization | |||
| - Changes to Prioritized Element Type bits | - Changes to Prioritized Element Type bits | |||
| skipping to change at page 67, line 38 ¶ | skipping to change at page 67, line 31 ¶ | |||
| (#1809, #1846, #2038) | (#1809, #1846, #2038) | |||
| * Clarify message processing rules for streams that aren't closed | * Clarify message processing rules for streams that aren't closed | |||
| (#1972, #2003) | (#1972, #2003) | |||
| * Removed reservation of error code 0 and moved HTTP_NO_ERROR to | * Removed reservation of error code 0 and moved HTTP_NO_ERROR to | |||
| this value (#1922) | this value (#1922) | |||
| * Removed prohibition of zero-length DATA frames (#2098) | * Removed prohibition of zero-length DATA frames (#2098) | |||
| B.15. Since draft-ietf-quic-http-15 | B.16. Since draft-ietf-quic-http-15 | |||
| Substantial editorial reorganization; no technical changes. | Substantial editorial reorganization; no technical changes. | |||
| B.16. Since draft-ietf-quic-http-14 | B.17. Since draft-ietf-quic-http-14 | |||
| * Recommend sensible values for QUIC transport parameters | * Recommend sensible values for QUIC transport parameters | |||
| (#1720,#1806) | (#1720,#1806) | |||
| * Define error for missing SETTINGS frame (#1697,#1808) | * Define error for missing SETTINGS frame (#1697,#1808) | |||
| * Setting values are variable-length integers (#1556,#1807) and do | * Setting values are variable-length integers (#1556,#1807) and do | |||
| not have separate maximum values (#1820) | not have separate maximum values (#1820) | |||
| * Expanded discussion of connection closure (#1599,#1717,#1712) | * Expanded discussion of connection closure (#1599,#1717,#1712) | |||
| skipping to change at page 68, line 4 ¶ | skipping to change at page 67, line 46 ¶ | |||
| * Recommend sensible values for QUIC transport parameters | * Recommend sensible values for QUIC transport parameters | |||
| (#1720,#1806) | (#1720,#1806) | |||
| * Define error for missing SETTINGS frame (#1697,#1808) | * Define error for missing SETTINGS frame (#1697,#1808) | |||
| * Setting values are variable-length integers (#1556,#1807) and do | * Setting values are variable-length integers (#1556,#1807) and do | |||
| not have separate maximum values (#1820) | not have separate maximum values (#1820) | |||
| * Expanded discussion of connection closure (#1599,#1717,#1712) | * Expanded discussion of connection closure (#1599,#1717,#1712) | |||
| * HTTP_VERSION_FALLBACK falls back to HTTP/1.1 (#1677,#1685) | * HTTP_VERSION_FALLBACK falls back to HTTP/1.1 (#1677,#1685) | |||
| B.17. Since draft-ietf-quic-http-13 | B.18. Since draft-ietf-quic-http-13 | |||
| * Reserved some frame types for grease (#1333, #1446) | * Reserved some frame types for grease (#1333, #1446) | |||
| * Unknown unidirectional stream types are tolerated, not errors; | * Unknown unidirectional stream types are tolerated, not errors; | |||
| some reserved for grease (#1490, #1525) | some reserved for grease (#1490, #1525) | |||
| * Require settings to be remembered for 0-RTT, prohibit reductions | * Require settings to be remembered for 0-RTT, prohibit reductions | |||
| (#1541, #1641) | (#1541, #1641) | |||
| * Specify behavior for truncated requests (#1596, #1643) | * Specify behavior for truncated requests (#1596, #1643) | |||
| B.18. Since draft-ietf-quic-http-12 | B.19. Since draft-ietf-quic-http-12 | |||
| * TLS SNI extension isn't mandatory if an alternative method is used | * TLS SNI extension isn't mandatory if an alternative method is used | |||
| (#1459, #1462, #1466) | (#1459, #1462, #1466) | |||
| * Removed flags from HTTP/3 frames (#1388, #1398) | * Removed flags from HTTP/3 frames (#1388, #1398) | |||
| * Reserved frame types and settings for use in preserving | * Reserved frame types and settings for use in preserving | |||
| extensibility (#1333, #1446) | extensibility (#1333, #1446) | |||
| * Added general error code (#1391, #1397) | * Added general error code (#1391, #1397) | |||
| * Unidirectional streams carry a type byte and are extensible | * Unidirectional streams carry a type byte and are extensible | |||
| (#910,#1359) | (#910,#1359) | |||
| * Priority mechanism now uses explicit placeholders to enable | * Priority mechanism now uses explicit placeholders to enable | |||
| persistent structure in the tree (#441,#1421,#1422) | persistent structure in the tree (#441,#1421,#1422) | |||
| B.19. Since draft-ietf-quic-http-11 | B.20. Since draft-ietf-quic-http-11 | |||
| * Moved QPACK table updates and acknowledgments to dedicated streams | * Moved QPACK table updates and acknowledgments to dedicated streams | |||
| (#1121, #1122, #1238) | (#1121, #1122, #1238) | |||
| B.20. Since draft-ietf-quic-http-10 | B.21. Since draft-ietf-quic-http-10 | |||
| * Settings need to be remembered when attempting and accepting 0-RTT | * Settings need to be remembered when attempting and accepting 0-RTT | |||
| (#1157, #1207) | (#1157, #1207) | |||
| B.21. Since draft-ietf-quic-http-09 | B.22. Since draft-ietf-quic-http-09 | |||
| * Selected QCRAM for header compression (#228, #1117) | * Selected QCRAM for header compression (#228, #1117) | |||
| * The server_name TLS extension is now mandatory (#296, #495) | * The server_name TLS extension is now mandatory (#296, #495) | |||
| * Specified handling of unsupported versions in Alt-Svc (#1093, | * Specified handling of unsupported versions in Alt-Svc (#1093, | |||
| #1097) | #1097) | |||
| B.22. Since draft-ietf-quic-http-08 | B.23. Since draft-ietf-quic-http-08 | |||
| * Clarified connection coalescing rules (#940, #1024) | * Clarified connection coalescing rules (#940, #1024) | |||
| B.23. Since draft-ietf-quic-http-07 | B.24. Since draft-ietf-quic-http-07 | |||
| * Changes for integer encodings in QUIC (#595,#905) | * Changes for integer encodings in QUIC (#595,#905) | |||
| * Use unidirectional streams as appropriate (#515, #240, #281, #886) | * Use unidirectional streams as appropriate (#515, #240, #281, #886) | |||
| * Improvement to the description of GOAWAY (#604, #898) | * Improvement to the description of GOAWAY (#604, #898) | |||
| * Improve description of server push usage (#947, #950, #957) | * Improve description of server push usage (#947, #950, #957) | |||
| B.24. Since draft-ietf-quic-http-06 | B.25. Since draft-ietf-quic-http-06 | |||
| * Track changes in QUIC error code usage (#485) | * Track changes in QUIC error code usage (#485) | |||
| B.25. Since draft-ietf-quic-http-05 | B.26. Since draft-ietf-quic-http-05 | |||
| * Made push ID sequential, add MAX_PUSH_ID, remove | * Made push ID sequential, add MAX_PUSH_ID, remove | |||
| SETTINGS_ENABLE_PUSH (#709) | SETTINGS_ENABLE_PUSH (#709) | |||
| * Guidance about keep-alive and QUIC PINGs (#729) | * Guidance about keep-alive and QUIC PINGs (#729) | |||
| * Expanded text on GOAWAY and cancellation (#757) | * Expanded text on GOAWAY and cancellation (#757) | |||
| B.26. Since draft-ietf-quic-http-04 | B.27. Since draft-ietf-quic-http-04 | |||
| * Cite RFC 5234 (#404) | * Cite RFC 5234 (#404) | |||
| * Return to a single stream per request (#245,#557) | * Return to a single stream per request (#245,#557) | |||
| * Use separate frame type and settings registries from HTTP/2 (#81) | * Use separate frame type and settings registries from HTTP/2 (#81) | |||
| * SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477) | * SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477) | |||
| * Restored GOAWAY (#696) | * Restored GOAWAY (#696) | |||
| * Identify server push using Push ID rather than a stream ID | * Identify server push using Push ID rather than a stream ID | |||
| (#702,#281) | (#702,#281) | |||
| * DATA frames cannot be empty (#700) | * DATA frames cannot be empty (#700) | |||
| B.27. Since draft-ietf-quic-http-03 | B.28. Since draft-ietf-quic-http-03 | |||
| None. | None. | |||
| B.28. Since draft-ietf-quic-http-02 | B.29. Since draft-ietf-quic-http-02 | |||
| * Track changes in transport draft | * Track changes in transport draft | |||
| B.29. Since draft-ietf-quic-http-01 | B.30. Since draft-ietf-quic-http-01 | |||
| * SETTINGS changes (#181): | * SETTINGS changes (#181): | |||
| - SETTINGS can be sent only once at the start of a connection; no | - SETTINGS can be sent only once at the start of a connection; no | |||
| changes thereafter | changes thereafter | |||
| - SETTINGS_ACK removed | - SETTINGS_ACK removed | |||
| - Settings can only occur in the SETTINGS frame a single time | - Settings can only occur in the SETTINGS frame a single time | |||
| skipping to change at page 70, line 39 ¶ | skipping to change at page 70, line 35 ¶ | |||
| * Closing the connection control stream or any message control | * Closing the connection control stream or any message control | |||
| stream is a fatal error (#176) | stream is a fatal error (#176) | |||
| * HPACK Sequence counter can wrap (#173) | * HPACK Sequence counter can wrap (#173) | |||
| * 0-RTT guidance added | * 0-RTT guidance added | |||
| * Guide to differences from HTTP/2 and porting HTTP/2 extensions | * Guide to differences from HTTP/2 and porting HTTP/2 extensions | |||
| added (#127,#242) | added (#127,#242) | |||
| B.30. Since draft-ietf-quic-http-00 | B.31. Since draft-ietf-quic-http-00 | |||
| * Changed "HTTP/2-over-QUIC" to "HTTP/QUIC" throughout (#11,#29) | * Changed "HTTP/2-over-QUIC" to "HTTP/QUIC" throughout (#11,#29) | |||
| * Changed from using HTTP/2 framing within Stream 3 to new framing | * Changed from using HTTP/2 framing within Stream 3 to new framing | |||
| format and two-stream-per-request model (#71,#72,#73) | format and two-stream-per-request model (#71,#72,#73) | |||
| * Adopted SETTINGS format from draft-bishop-httpbis-extended- | * Adopted SETTINGS format from draft-bishop-httpbis-extended- | |||
| settings-01 | settings-01 | |||
| * Reworked SETTINGS_ACK to account for indeterminate inter-stream | * Reworked SETTINGS_ACK to account for indeterminate inter-stream | |||
| skipping to change at page 71, line 4 ¶ | skipping to change at page 70, line 49 ¶ | |||
| * Changed from using HTTP/2 framing within Stream 3 to new framing | * Changed from using HTTP/2 framing within Stream 3 to new framing | |||
| format and two-stream-per-request model (#71,#72,#73) | format and two-stream-per-request model (#71,#72,#73) | |||
| * Adopted SETTINGS format from draft-bishop-httpbis-extended- | * Adopted SETTINGS format from draft-bishop-httpbis-extended- | |||
| settings-01 | settings-01 | |||
| * Reworked SETTINGS_ACK to account for indeterminate inter-stream | * Reworked SETTINGS_ACK to account for indeterminate inter-stream | |||
| order (#75) | order (#75) | |||
| * Described CONNECT pseudo-method (#95) | * Described CONNECT pseudo-method (#95) | |||
| * Updated ALPN token and Alt-Svc guidance (#13,#87) | * Updated ALPN token and Alt-Svc guidance (#13,#87) | |||
| * Application-layer-defined error codes (#19,#74) | * Application-layer-defined error codes (#19,#74) | |||
| B.31. Since draft-shade-quic-http2-mapping-00 | B.32. Since draft-shade-quic-http2-mapping-00 | |||
| * Adopted as base for draft-ietf-quic-http | * Adopted as base for draft-ietf-quic-http | |||
| * Updated authors/editors list | * Updated authors/editors list | |||
| Acknowledgements | Acknowledgements | |||
| The original authors of this specification were Robbie Shade and Mike | The original authors of this specification were Robbie Shade and Mike | |||
| Warres. | Warres. | |||
| End of changes. 55 change blocks. | ||||
| 91 lines changed or deleted | 96 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/ | ||||