diff --git a/draft-ietf-quic-http.html b/draft-ietf-quic-http.html index 256e3684a9..e7b41fbc45 100644 --- a/draft-ietf-quic-http.html +++ b/draft-ietf-quic-http.html @@ -929,398 +929,398 @@
1. Introduction¶
1.1. Prior versions of HTTP¶
1.2. Delegation to QUIC¶
2. HTTP/3 Protocol Overview¶
2.1. Document Organization¶
2.2. Conventions and Terminology¶
3. Connection Setup and Management¶
3.1. Discovering an HTTP/3 Endpoint¶
3.1.1. HTTP Alternative Services¶
3.1.2. Other Schemes¶
3.2. Connection Establishment¶
3.3. Connection Reuse¶
4. HTTP Request Lifecycle¶
4.1. HTTP Message Exchanges¶
4.1.1. Field Formatting and Compression¶
4.1.2. Request Cancellation and Rejection¶
4.1.3. Malformed Requests and Responses¶
4.2. The CONNECT Method¶
4.3. HTTP Upgrade¶
4.4. Server Push¶
5. Connection Closure¶
5.1. Idle Connections¶
5.2. Connection Shutdown¶
5.3. Immediate Application Closure¶
5.4. Transport Closure¶
6. Stream Mapping and Usage¶
6.1. Bidirectional Streams¶
6.2. Unidirectional Streams¶
6.2.1. Control Streams¶
6.2.2. Push Streams¶
6.2.3. Reserved Stream Types¶
7. HTTP Framing Layer¶
7.1. Frame Layout¶
7.2. Frame Definitions¶
7.2.1. DATA¶
7.2.2. HEADERS¶
7.2.3. CANCEL_PUSH¶
7.2.4. SETTINGS¶
7.2.5. PUSH_PROMISE¶
7.2.6. GOAWAY¶
7.2.7. MAX_PUSH_ID¶
7.2.8. Reserved Frame Types¶
8. Error Handling¶
8.1. HTTP/3 Error Codes¶
9. Extensions to HTTP/3¶
10. Security Considerations¶
10.1. Server Authority¶
10.2. Cross-Protocol Attacks¶
10.3. Intermediary Encapsulation Attacks¶
10.4. Cacheability of Pushed Responses¶
10.5. Denial-of-Service Considerations¶
10.5.1. Limits on Field Section Size¶
10.5.2. CONNECT Issues¶
10.6. Use of Compression¶
10.7. Padding and Traffic Analysis¶
10.8. Frame Parsing¶
10.9. Early Data¶
10.10. Migration¶
10.11. Privacy Considerations¶
11. IANA Considerations¶
11.1. Registration of HTTP/3 Identification String¶
11.2. New Registries¶
11.2.1. Frame Types¶
11.2.2. Settings Parameters¶
11.2.3. Error Codes¶
11.2.4. Stream Types¶
12. References¶
12.1. Normative References¶
12.2. Informative References¶
Appendix A. Considerations for Transitioning from HTTP/2¶
A.1. Streams¶
A.2. HTTP Frame Types¶
A.2.1. Prioritization Differences¶
A.2.2. Field Compression Differences¶
A.2.3. Flow Control Differences¶
A.2.4. Guidance for New Frame Type Definitions¶
A.2.5. Mapping Between HTTP/2 and HTTP/3 Frame Types¶
A.3. HTTP/2 SETTINGS Parameters¶
A.4. HTTP/2 Error Codes¶
A.4.1. Mapping Between HTTP/2 and HTTP/3 Errors¶
Appendix B. Change Log¶
B.1. Since draft-ietf-quic-http-32¶
B.2. Since draft-ietf-quic-http-31¶
B.3. Since draft-ietf-quic-http-30¶
B.4. Since draft-ietf-quic-http-29¶
B.5. Since draft-ietf-quic-http-28¶
B.6. Since draft-ietf-quic-http-27¶
B.7. Since draft-ietf-quic-http-26¶
B.8. Since draft-ietf-quic-http-25¶
B.9. Since draft-ietf-quic-http-24¶
B.10. Since draft-ietf-quic-http-23¶
B.11. Since draft-ietf-quic-http-22¶
B.12. Since draft-ietf-quic-http-21¶
B.13. Since draft-ietf-quic-http-20¶
B.14. Since draft-ietf-quic-http-19¶
B.15. Since draft-ietf-quic-http-18¶
B.16. Since draft-ietf-quic-http-17¶
B.17. Since draft-ietf-quic-http-16¶
B.18. Since draft-ietf-quic-http-15¶
B.19. Since draft-ietf-quic-http-14¶
B.20. Since draft-ietf-quic-http-13¶
B.21. Since draft-ietf-quic-http-12¶
B.22. Since draft-ietf-quic-http-11¶
B.23. Since draft-ietf-quic-http-10¶
B.24. Since draft-ietf-quic-http-09¶
B.25. Since draft-ietf-quic-http-08¶
B.26. Since draft-ietf-quic-http-07¶
B.27. Since draft-ietf-quic-http-06¶
B.28. Since draft-ietf-quic-http-05¶
B.29. Since draft-ietf-quic-http-04¶
B.30. Since draft-ietf-quic-http-03¶
B.31. Since draft-ietf-quic-http-02¶
B.32. Since draft-ietf-quic-http-01¶
B.33. Since draft-ietf-quic-http-00¶
B.34. Since draft-shade-quic-http2-mapping-00¶
Acknowledgments¶
Author's Address¶
1. An Extremely Abstract Description of QUIC¶
2. Fixed Properties of All QUIC Versions¶
3. Conventions and Definitions¶
4. Notational Conventions¶
5. QUIC Packets¶
5.1. Long Header¶
5.2. Short Header¶
5.3. Connection ID¶
5.4. Version¶
6. Version Negotiation¶
7. Security and Privacy Considerations¶
8. IANA Considerations¶
9. References¶
9.1. Normative References¶
9.2. Informative References¶
Appendix A. Incorrect Assumptions¶
1.1. Conventions and Definitions¶
1.2. Notational Conventions¶
2. Compression Process Overview¶
2.1. Encoder¶
2.1.1. Limits on Dynamic Table Insertions¶
2.1.2. Blocked Streams¶
2.1.3. Avoiding Flow Control Deadlocks¶
2.1.4. Known Received Count¶
2.2. Decoder¶
2.2.1. Blocked Decoding¶
2.2.2. State Synchronization¶
2.2.3. Invalid References¶
3. Reference Tables¶
3.1. Static Table¶
3.2. Dynamic Table¶
3.2.1. Dynamic Table Size¶
3.2.2. Dynamic Table Capacity and Eviction¶
3.2.3. Maximum Dynamic Table Capacity¶
3.2.4. Absolute Indexing¶
3.2.5. Relative Indexing¶
3.2.6. Post-Base Indexing¶
4. Wire Format¶
4.1. Primitives¶
4.1.1. Prefixed Integers¶
4.1.2. String Literals¶
4.2. Encoder and Decoder Streams¶
4.3. Encoder Instructions¶
4.3.1. Set Dynamic Table Capacity¶
4.3.2. Insert With Name Reference¶
4.3.3. Insert With Literal Name¶
4.3.4. Duplicate¶
4.4. Decoder Instructions¶
4.4.1. Section Acknowledgment¶
4.4.2. Stream Cancellation¶
4.4.3. Insert Count Increment¶
4.5. Field Line Representations¶
4.5.1. Encoded Field Section Prefix¶
4.5.2. Indexed Field Line¶
4.5.3. Indexed Field Line With Post-Base Index¶
4.5.4. Literal Field Line With Name Reference¶
4.5.5. Literal Field Line With Post-Base Name Reference¶
4.5.6. Literal Field Line With Literal Name¶
5. Configuration¶
6. Error Handling¶
7. Security Considerations¶
7.1. Probing Dynamic Table State¶
7.1.1. Applicability to QPACK and HTTP¶
7.1.2. Mitigation¶
7.1.3. Never-Indexed Literals¶
7.2. Static Huffman Encoding¶
7.3. Memory Consumption¶
7.4. Implementation Limits¶
8.1. Settings Registration¶
8.2. Stream Type Registration¶
8.3. Error Code Registration¶
Appendix A. Static Table¶
Appendix B. Encoding and Decoding Examples¶
B.1. Literal Field Line With Name Reference¶
B.2. Dynamic Table¶
B.3. Speculative Insert¶
B.4. Duplicate Instruction, Stream Cancellation¶
B.5. Dynamic Table Insert, Eviction¶
Appendix C. Sample One Pass Encoding Algorithm¶
Appendix D. Change Log¶
D.1. Since draft-ietf-quic-qpack-19¶
D.2. Since draft-ietf-quic-qpack-18¶
D.3. Since draft-ietf-quic-qpack-17¶
D.4. Since draft-ietf-quic-qpack-16¶
D.5. Since draft-ietf-quic-qpack-15¶
D.6. Since draft-ietf-quic-qpack-14¶
D.7. Since draft-ietf-quic-qpack-13¶
D.8. Since draft-ietf-quic-qpack-12¶
D.9. Since draft-ietf-quic-qpack-11¶
D.10. Since draft-ietf-quic-qpack-10¶
D.11. Since draft-ietf-quic-qpack-09¶
D.12. Since draft-ietf-quic-qpack-08¶
D.13. Since draft-ietf-quic-qpack-06¶
D.14. Since draft-ietf-quic-qpack-05¶
D.15. Since draft-ietf-quic-qpack-04¶
D.16. Since draft-ietf-quic-qpack-03¶
D.17. Since draft-ietf-quic-qpack-02¶
D.18. Since draft-ietf-quic-qpack-01¶
D.19. Since draft-ietf-quic-qpack-00¶
D.20. Since draft-ietf-quic-qcram-00¶
Authors' Addresses¶
2. Conventions and Definitions¶
3. Design of the QUIC Transmission Machinery¶
4. Relevant Differences Between QUIC and TCP¶
5. Estimating the Round-Trip Time¶
6. Loss Detection¶
7. Congestion Control¶
8. Security Considerations¶
9. IANA Considerations¶
10. References¶
Appendix A. Loss Recovery Pseudocode¶
Appendix B. Congestion Control Pseudocode¶
Appendix C. Change Log¶
Appendix D. Contributors¶
2. Notational Conventions¶
2.1. TLS Overview¶
3. Protocol Overview¶
4. Carrying TLS Messages¶
4.1. Interface to TLS¶
4.1.1. Handshake Complete¶
4.1.2. Handshake Confirmed¶
4.1.3. Sending and Receiving Handshake Messages¶
4.1.4. Encryption Level Changes¶
4.1.5. TLS Interface Summary¶
4.2. TLS Version¶
4.3. ClientHello Size¶
4.4. Peer Authentication¶
4.5. Session Resumption¶
4.6. 0-RTT¶
4.6.1. Enabling 0-RTT¶
4.6.2. Accepting and Rejecting 0-RTT¶
4.6.3. Validating 0-RTT Configuration¶
4.7. HelloRetryRequest¶
4.8. TLS Errors¶
4.9. Discarding Unused Keys¶
4.9.1. Discarding Initial Keys¶
4.9.2. Discarding Handshake Keys¶
4.9.3. Discarding 0-RTT Keys¶
5. Packet Protection¶
5.1. Packet Protection Keys¶
5.2. Initial Secrets¶
5.3. AEAD Usage¶
5.4. Header Protection¶
5.4.1. Header Protection Application¶
5.4.2. Header Protection Sample¶
5.4.3. AES-Based Header Protection¶
5.4.4. ChaCha20-Based Header Protection¶
5.5. Receiving Protected Packets¶
5.6. Use of 0-RTT Keys¶
5.7. Receiving Out-of-Order Protected Packets¶
5.8. Retry Packet Integrity¶
6. Key Update¶
6.1. Initiating a Key Update¶
6.2. Responding to a Key Update¶
6.3. Timing of Receive Key Generation¶
6.4. Sending with Updated Keys¶
6.5. Receiving with Different Keys¶
6.6. Limits on AEAD Usage¶
6.7. Key Update Error Code¶
7. Security of Initial Messages¶
8. QUIC-Specific Adjustments to the TLS Handshake¶
8.1. Protocol Negotiation¶
8.2. QUIC Transport Parameters Extension¶
8.3. Removing the EndOfEarlyData Message¶
8.4. Prohibit TLS Middlebox Compatibility Mode¶
9. Security Considerations¶
9.1. Session Linkability¶
9.2. Replay Attacks with 0-RTT¶
9.3. Packet Reflection Attack Mitigation¶
9.4. Header Protection Analysis¶
9.5. Header Protection Timing Side-Channels¶
9.6. Key Diversity¶
9.7. Randomness¶
10. IANA Considerations¶
11. References¶
11.1. Normative References¶
11.2. Informative References¶
Appendix A. Sample Packet Protection¶
A.1. Keys¶
A.2. Client Initial¶
A.3. Server Initial¶
A.4. Retry¶
A.5. ChaCha20-Poly1305 Short Header Packet¶
Appendix B. AEAD Algorithm Analysis¶
B.1. Analysis of AEAD_AES_128_GCM and AEAD_AES_256_GCM Usage Limits¶
B.1.1. Confidentiality Limit¶
B.1.2. Integrity Limit¶
B.2. Analysis of AEAD_AES_128_CCM Usage Limits¶
C.1. Since draft-ietf-quic-tls-32¶
C.2. Since draft-ietf-quic-tls-31¶
C.3. Since draft-ietf-quic-tls-30¶
C.4. Since draft-ietf-quic-tls-29¶
C.5. Since draft-ietf-quic-tls-28¶
C.6. Since draft-ietf-quic-tls-27¶
C.7. Since draft-ietf-quic-tls-26¶
C.8. Since draft-ietf-quic-tls-25¶
C.9. Since draft-ietf-quic-tls-24¶
C.10. Since draft-ietf-quic-tls-23¶
C.11. Since draft-ietf-quic-tls-22¶
C.12. Since draft-ietf-quic-tls-21¶
C.13. Since draft-ietf-quic-tls-20¶
C.14. Since draft-ietf-quic-tls-18¶
C.15. Since draft-ietf-quic-tls-17¶
C.16. Since draft-ietf-quic-tls-14¶
C.17. Since draft-ietf-quic-tls-13¶
C.18. Since draft-ietf-quic-tls-12¶
C.19. Since draft-ietf-quic-tls-11¶
C.20. Since draft-ietf-quic-tls-10¶
C.21. Since draft-ietf-quic-tls-09¶
C.22. Since draft-ietf-quic-tls-08¶
C.23. Since draft-ietf-quic-tls-07¶
C.24. Since draft-ietf-quic-tls-05¶
C.25. Since draft-ietf-quic-tls-04¶
C.26. Since draft-ietf-quic-tls-03¶
C.27. Since draft-ietf-quic-tls-02¶
C.28. Since draft-ietf-quic-tls-01¶
C.29. Since draft-ietf-quic-tls-00¶
C.30. Since draft-thomson-quic-tls-01¶
Contributors¶
1. Overview¶
1.1. Document Structure¶
1.2. Terms and Definitions¶
1.3. Notational Conventions¶
2. Streams¶
2.1. Stream Types and Identifiers¶
2.2. Sending and Receiving Data¶
2.3. Stream Prioritization¶
2.4. Operations on Streams¶
3. Stream States¶
3.1. Sending Stream States¶
3.2. Receiving Stream States¶
3.3. Permitted Frame Types¶
3.4. Bidirectional Stream States¶
3.5. Solicited State Transitions¶
4. Flow Control¶
4.1. Data Flow Control¶
4.2. Increasing Flow Control Limits¶
4.3. Flow Control Performance¶
4.4. Handling Stream Cancellation¶
4.5. Stream Final Size¶
4.6. Controlling Concurrency¶
5. Connections¶
5.1. Connection ID¶
5.1.1. Issuing Connection IDs¶
5.1.2. Consuming and Retiring Connection IDs¶
5.2. Matching Packets to Connections¶
5.2.1. Client Packet Handling¶
5.2.2. Server Packet Handling¶
5.2.3. Considerations for Simple Load Balancers¶
5.3. Operations on Connections¶
6.1. Sending Version Negotiation Packets¶
6.2. Handling Version Negotiation Packets¶
6.2.1. Version Negotiation Between Draft Versions¶
6.3. Using Reserved Versions¶
7. Cryptographic and Transport Handshake¶
7.1. Example Handshake Flows¶
7.2. Negotiating Connection IDs¶
7.3. Authenticating Connection IDs¶
7.4. Transport Parameters¶
7.4.1. Values of Transport Parameters for 0-RTT¶
7.4.2. New Transport Parameters¶
7.5. Cryptographic Message Buffering¶
8. Address Validation¶
8.1. Address Validation During Connection Establishment¶
8.1.1. Token Construction¶
8.1.2. Address Validation using Retry Packets¶
8.1.3. Address Validation for Future Connections¶
8.1.4. Address Validation Token Integrity¶
8.2. Path Validation¶
8.2.1. Initiating Path Validation¶
8.2.2. Path Validation Responses¶
8.2.3. Successful Path Validation¶
8.2.4. Failed Path Validation¶
9. Connection Migration¶
9.1. Probing a New Path¶
9.2. Initiating Connection Migration¶
9.3. Responding to Connection Migration¶
9.3.1. Peer Address Spoofing¶
9.3.2. On-Path Address Spoofing¶
9.3.3. Off-Path Packet Forwarding¶
9.4. Loss Detection and Congestion Control¶
9.5. Privacy Implications of Connection Migration¶
9.6. Server's Preferred Address¶
9.6.1. Communicating a Preferred Address¶
9.6.2. Migration to a Preferred Address¶
9.6.3. Interaction of Client Migration and Preferred Address¶
9.7. Use of IPv6 Flow-Label and Migration¶
10. Connection Termination¶
10.1. Idle Timeout¶
10.1.1. Liveness Testing¶
10.1.2. Deferring Idle Timeout¶
10.2. Immediate Close¶
10.2.1. Closing Connection State¶
10.2.2. Draining Connection State¶
10.2.3. Immediate Close During the Handshake¶
10.3. Stateless Reset¶
10.3.1. Detecting a Stateless Reset¶
10.3.2. Calculating a Stateless Reset Token¶
10.3.3. Looping¶
11. Error Handling¶
11.1. Connection Errors¶
11.2. Stream Errors¶
12. Packets and Frames¶
12.1. Protected Packets¶
12.2. Coalescing Packets¶
12.3. Packet Numbers¶
12.4. Frames and Frame Types¶
12.5. Frames and Number Spaces¶
13. Packetization and Reliability¶
13.1. Packet Processing¶
13.2. Generating Acknowledgments¶
13.2.1. Sending ACK Frames¶
13.2.2. Acknowledgment Frequency¶
13.2.3. Managing ACK Ranges¶
13.2.4. Limiting Ranges by Tracking ACK Frames¶
13.2.5. Measuring and Reporting Host Delay¶
13.2.6. ACK Frames and Packet Protection¶
13.2.7. PADDING Frames Consume Congestion Window¶
13.3. Retransmission of Information¶
13.4. Explicit Congestion Notification¶
13.4.1. Reporting ECN Counts¶
13.4.2. ECN Validation¶
14. Datagram Size¶
14.1. Initial Datagram Size¶
14.2. Path Maximum Transmission Unit¶
14.2.1. Handling of ICMP Messages by PMTUD¶
14.3. Datagram Packetization Layer PMTU Discovery¶
14.3.1. DPLPMTUD and Initial Connectivity¶
14.3.2. Validating the Network Path with DPLPMTUD¶
14.3.3. Handling of ICMP Messages by DPLPMTUD¶
14.4. Sending QUIC PMTU Probes¶
14.4.1. PMTU Probes Containing Source Connection ID¶
15. Versions¶
16. Variable-Length Integer Encoding¶
17. Packet Formats¶
17.1. Packet Number Encoding and Decoding¶
17.2. Long Header Packets¶
17.2.1. Version Negotiation Packet¶
17.2.2. Initial Packet¶
17.2.3. 0-RTT¶
17.2.4. Handshake Packet¶
17.2.5. Retry Packet¶
17.3. Short Header Packets¶
17.3.1. 1-RTT Packet¶
17.4. Latency Spin Bit¶
18. Transport Parameter Encoding¶
18.1. Reserved Transport Parameters¶
18.2. Transport Parameter Definitions¶
19. Frame Types and Formats¶
19.1. PADDING Frames¶
19.2. PING Frames¶
19.3. ACK Frames¶
19.3.1. ACK Ranges¶
19.3.2. ECN Counts¶
19.4. RESET_STREAM Frames¶
19.5. STOP_SENDING Frames¶
19.6. CRYPTO Frames¶
19.7. NEW_TOKEN Frames¶
19.8. STREAM Frames¶
19.9. MAX_DATA Frames¶
19.10. MAX_STREAM_DATA Frames¶
19.11. MAX_STREAMS Frames¶
19.12. DATA_BLOCKED Frames¶
19.13. STREAM_DATA_BLOCKED Frames¶
19.14. STREAMS_BLOCKED Frames¶
19.15. NEW_CONNECTION_ID Frames¶
19.16. RETIRE_CONNECTION_ID Frames¶
19.17. PATH_CHALLENGE Frames¶
19.18. PATH_RESPONSE Frames¶
19.19. CONNECTION_CLOSE Frames¶
19.20. HANDSHAKE_DONE Frames¶
19.21. Extension Frames¶
20. Error Codes¶
20.1. Transport Error Codes¶
20.2. Application Protocol Error Codes¶
21. Security Considerations¶
21.1. Overview of Security Properties¶
21.1.1. Handshake¶
21.1.2. Protected Packets¶
21.1.3. Connection Migration¶
21.2. Handshake Denial of Service¶
21.3. Amplification Attack¶
21.4. Optimistic ACK Attack¶
21.5. Request Forgery Attacks¶
21.5.1. Control Options for Endpoints¶
21.5.2. Request Forgery with Client Initial Packets¶
21.5.3. Request Forgery with Preferred Addresses¶
21.5.4. Request Forgery with Spoofed Migration¶
21.5.5. Request Forgery with Version Negotiation¶
21.5.6. Generic Request Forgery Countermeasures¶
21.6. Slowloris Attacks¶
21.7. Stream Fragmentation and Reassembly Attacks¶
21.8. Stream Commitment Attack¶
21.9. Peer Denial of Service¶
21.10. Explicit Congestion Notification Attacks¶
21.11. Stateless Reset Oracle¶
21.12. Version Downgrade¶
21.13. Targeted Attacks by Routing¶
21.14. Traffic Analysis¶
22. IANA Considerations¶
22.1. Registration Policies for QUIC Registries¶
22.1.1. Provisional Registrations¶
22.1.2. Selecting Codepoints¶
22.1.3. Reclaiming Provisional Codepoints¶
22.1.4. Permanent Registrations¶
22.2. QUIC Versions Registry¶
22.3. QUIC Transport Parameter Registry¶
22.4. QUIC Frame Types Registry¶
22.5. QUIC Transport Error Codes Registry¶
23. References¶
23.1. Normative References¶
23.2. Informative References¶
Appendix A. Pseudocode¶
A.1. Sample Variable-Length Integer Decoding¶
A.2. Sample Packet Number Encoding Algorithm¶
A.3. Sample Packet Number Decoding Algorithm¶
A.4. Sample ECN Validation Algorithm¶
B.1. Since draft-ietf-quic-transport-32¶
B.2. Since draft-ietf-quic-transport-31¶
B.3. Since draft-ietf-quic-transport-30¶
B.4. Since draft-ietf-quic-transport-29¶
B.5. Since draft-ietf-quic-transport-28¶
B.6. Since draft-ietf-quic-transport-27¶
B.7. Since draft-ietf-quic-transport-26¶
B.8. Since draft-ietf-quic-transport-25¶
B.9. Since draft-ietf-quic-transport-24¶
B.10. Since draft-ietf-quic-transport-23¶
B.11. Since draft-ietf-quic-transport-22¶
B.12. Since draft-ietf-quic-transport-21¶
B.13. Since draft-ietf-quic-transport-20¶
B.14. Since draft-ietf-quic-transport-19¶
B.15. Since draft-ietf-quic-transport-18¶
B.16. Since draft-ietf-quic-transport-17¶
B.17. Since draft-ietf-quic-transport-16¶
B.18. Since draft-ietf-quic-transport-15¶
B.19. Since draft-ietf-quic-transport-14¶
B.20. Since draft-ietf-quic-transport-13¶
B.21. Since draft-ietf-quic-transport-12¶
B.22. Since draft-ietf-quic-transport-11¶
B.23. Since draft-ietf-quic-transport-10¶
B.24. Since draft-ietf-quic-transport-09¶
B.25. Since draft-ietf-quic-transport-08¶
B.26. Since draft-ietf-quic-transport-07¶
B.27. Since draft-ietf-quic-transport-06¶
B.28. Since draft-ietf-quic-transport-05¶
B.29. Since draft-ietf-quic-transport-04¶
B.30. Since draft-ietf-quic-transport-03¶
B.31. Since draft-ietf-quic-transport-02¶
B.32. Since draft-ietf-quic-transport-01¶
B.33. Since draft-ietf-quic-transport-00¶
B.34. Since draft-hamilton-quic-transport-protocol-01¶
Version Negotiation packets are designed to allow future versions of QUIC to -negotiate the version in use between endpoints. Future versions of QUIC might -change how implementations that support multiple versions of QUIC react to -Version Negotiation packets when attempting to establish a connection using this -version.¶
Version Negotiation packets are designed to allow for functionality to be +defined in the future that allows QUIC to negotiate the version of QUIC to use +for a connection. Future standards-track specifications might change how +implementations that support multiple versions of QUIC react to Version +Negotiation packets received in response to an attempt to establish a +connection using this version.¶
A client that supports only this version of QUIC MUST abandon the current connection attempt if it receives a Version Negotiation packet, with the following two exceptions. A client MUST discard any Version Negotiation packet @@ -3248,8 +3249,9 @@
How to perform version negotiation is left as future work defined by future -versions of QUIC. In particular, that future work will ensure robustness -against version downgrade attacks; see Section 21.12.¶
View saved issues, or the latest GitHub issues and pull requests.