Movatterモバイル変換


[0]ホーム

URL:


RFC 9297HTTP DatagramsAugust 2022
Schinazi & PardueStandards Track[Page]
Stream:
Internet Engineering Task Force (IETF)
RFC:
9297
Category:
Standards Track
Published:
ISSN:
2070-1721
Authors:
D. Schinazi
Google LLC
L. Pardue
Cloudflare

RFC 9297

HTTP Datagrams and the Capsule Protocol

Abstract

This document describes HTTP Datagrams, a convention for conveying multiplexed,potentially unreliable datagrams inside an HTTP connection.

In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAMextension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTPDatagrams can be sent using the Capsule Protocol, which is a more generalconvention for conveying data in HTTP connections.

HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions,not applications.

Status of This Memo

This is an Internet Standards Track document.

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained athttps://www.rfc-editor.org/info/rfc9297.

Copyright Notice

Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.

Table of Contents

1.Introduction

HTTP extensions (as defined inSection 16 of [HTTP]) sometimes needto access underlying transport protocol features such as unreliable delivery (asoffered by[QUIC-DGRAM]) to enable desirable features. For example,this could allow for the introduction of an unreliable version of the CONNECTmethod and the addition of unreliable delivery to WebSockets[WEBSOCKET].

InSection 2, this document describes HTTP Datagrams, a conventionfor conveying bidirectional and potentially unreliable datagrams insidean HTTP connection, with multiplexing when possible. While HTTP Datagrams are associated with HTTP requests, theyare not a part of message content. Instead, they are intended for use by HTTPextensions (such as the CONNECT method) and are compatible with all versions ofHTTP.

When HTTP is running over a transport protocol that supports unreliable delivery(such as when the QUIC DATAGRAM extension[QUIC-DGRAM] is available to HTTP/3[HTTP/3]), HTTP Datagrams can use that capability.

InSection 3, this document describes the HTTP Capsule Protocol, which allows the conveyance of HTTP Datagrams using reliable delivery. This addresses HTTP/3 cases whereuse of the QUIC DATAGRAM frame is unavailable or undesirable or where thetransport protocol only provides reliable delivery, such as with HTTP/1.1[HTTP/1.1]or HTTP/2[HTTP/2] over TCP[TCP].

1.1.Conventions and Definitions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED","MAY", and "OPTIONAL" in this document are to be interpreted asdescribed in BCP 14[RFC2119][RFC8174] when, and only when, theyappear in all capitals, as shown here.

This document uses terminology from[QUIC].

Where this document defines protocol types, the definition format uses thenotation fromSection 1.3 of [QUIC]. Where fields within types are integers,they are encoded using the variable-length integer encoding fromSection 16 of [QUIC]. Integer values do not need to be encoded on the minimum number of bytesnecessary.

In this document, the term "intermediary" refers to an HTTP intermediary asdefined inSection 3.7 of [HTTP].

2.HTTP Datagrams

HTTP Datagrams are a convention for conveying bidirectional and potentiallyunreliable datagrams inside an HTTP connection with multiplexing whenpossible. All HTTP Datagrams are associated with an HTTP request.

When HTTP Datagrams are conveyed on an HTTP/3 connection, the QUIC DATAGRAMframe can be used to provide demultiplexing and unreliable delivery; seeSection 2.1. Negotiating the use of QUIC DATAGRAM frames for HTTP Datagrams isachieved via the exchange of HTTP/3 settings; seeSection 2.1.1.

When running over HTTP/2, demultiplexing is provided by the HTTP/2 framinglayer, but unreliable delivery is unavailable. HTTP Datagrams are negotiatedand conveyed using the Capsule Protocol; seeSection 3.5.

When running over HTTP/1.x, requests are strictly serialized in the connection;therefore, demultiplexing is not available. Unreliable delivery is likewise notavailable. HTTP Datagrams are negotiated and conveyed using the CapsuleProtocol; seeSection 3.5.

HTTP DatagramsMUST only be sent with an association to an HTTP request thatexplicitly supports them. For example, existing HTTP methods GET and POST do notdefine semantics for associated HTTP Datagrams; therefore, HTTP Datagramsassociated with GET or POST request streams cannot be sent.

If an HTTP Datagram is received and it is associated with a request that has noknown semantics for HTTP Datagrams, the receiverMUST terminate the request. IfHTTP/3 is in use, the request streamMUST be aborted with H3_DATAGRAM_ERROR(0x33). HTTP extensionsMAY override these requirements by defining anegotiation mechanism and semantics for HTTP Datagrams.

2.1.HTTP/3 Datagrams

When used with HTTP/3, the Datagram Data field of QUIC DATAGRAM frames uses thefollowing format:

HTTP/3 Datagram {  Quarter Stream ID (i),  HTTP Datagram Payload (..),}
Figure 1:HTTP/3 Datagram Format
Quarter Stream ID:

A variable-length integer that contains the value of the client-initiatedbidirectional stream that this datagram is associated with divided by four (thedivision by four stems from the fact that HTTP requests are sent onclient-initiated bidirectional streams, which have stream IDs that are divisibleby four). The largest legal QUIC stream ID value is 262-1, so thelargest legal value of the Quarter Stream ID field is 260-1. Receiptof an HTTP/3 Datagram that includes a larger valueMUST be treated as an HTTP/3connection error of type H3_DATAGRAM_ERROR (0x33).

HTTP Datagram Payload:

The payload of the datagram, whose semantics are defined by the extension thatis using HTTP Datagrams. Note that this field can be empty.

Receipt of a QUIC DATAGRAM frame whose payload is too short to allow parsing theQuarter Stream ID fieldMUST be treated as an HTTP/3 connection error of typeH3_DATAGRAM_ERROR (0x33).

HTTP/3 DatagramsMUST NOT be sent unless the corresponding stream's send side isopen. If a datagram is received after the corresponding stream's receive side isclosed, the received datagramsMUST be silently dropped.

If an HTTP/3 Datagram is received and its Quarter Stream ID field maps to astream that has not yet been created, the receiverSHALL either drop thatdatagram silently or buffer it temporarily (on the order of a round trip) whileawaiting the creation of the corresponding stream.

If an HTTP/3 Datagram is received and its Quarter Stream ID field maps to astream that cannot be created due to client-initiated bidirectional streamlimits, itSHOULD be treated as an HTTP/3 connection error of type H3_ID_ERROR.Generating an error is not mandatory because the QUIC stream limit might beunknown to the HTTP/3 layer.

Prioritization of HTTP/3 Datagrams is not defined in this document. FutureextensionsMAY define how to prioritize datagrams andMAY define signaling toallow communicating prioritization preferences.

2.1.1.The SETTINGS_H3_DATAGRAM HTTP/3 Setting

An endpoint can indicate to its peer that it is willing to receive HTTP/3Datagrams by sending the SETTINGS_H3_DATAGRAM (0x33) setting with a value of 1.

The value of the SETTINGS_H3_DATAGRAM settingMUST be either 0 or 1. A valueof 0 indicates that the implementation is not willing to receive HTTP Datagrams.If the SETTINGS_H3_DATAGRAM setting is received with a value that is neither 0nor 1, the receiverMUST terminate the connection with error H3_SETTINGS_ERROR.

QUIC DATAGRAM framesMUST NOT be sent until the SETTINGS_H3_DATAGRAM settinghas been both sent and received with a value of 1.

When clients use 0-RTT, theyMAY store the value of the server'sSETTINGS_H3_DATAGRAM setting. Doing so allows the client to send QUIC DATAGRAMframes in 0-RTT packets. When servers decide to accept 0-RTT data, theyMUSTsend a SETTINGS_H3_DATAGRAM setting greater than or equal to the value they sentto the client in the connection where they sent them the NewSessionTicketmessage. If a client stores the value of the SETTINGS_H3_DATAGRAM setting withtheir 0-RTT state, theyMUST validate that the new value of theSETTINGS_H3_DATAGRAM setting sent by the server in the handshake is greater thanor equal to the stored value; if not, the clientMUST terminate the connectionwith error H3_SETTINGS_ERROR. In all cases, the maximum permitted value of theSETTINGS_H3_DATAGRAM setting parameter is 1.

It isRECOMMENDED that implementations that support receiving HTTP/3 Datagramsalways send the SETTINGS_H3_DATAGRAM setting with a value of 1,even if the application does not intend to use HTTP/3 Datagrams. This helps toavoid "sticking out"; seeSection 4.

2.2.HTTP Datagrams Using Capsules

When HTTP/3 Datagrams are unavailable or undesirable, HTTP Datagrams can be sentusing the Capsule Protocol; seeSection 3.5.

3.Capsules

One mechanism to extend HTTP is to introduce new HTTP upgrade tokens; seeSection 16.7 of [HTTP]. In HTTP/1.x, these tokens are used via the Upgrademechanism; seeSection 7.8 of [HTTP]. In HTTP/2 and HTTP/3, these tokens areused via the Extended CONNECT mechanism; see[EXT-CONNECT2] and[EXT-CONNECT3].

This specification introduces the Capsule Protocol. The Capsule Protocol is asequence of type-length-value tuples that definitions of new HTTP upgrade tokenscan choose to use. It allows endpoints to reliably communicate request-relatedinformation end-to-end on HTTP request streams, even in the presence of HTTPintermediaries. The Capsule Protocol can be used to exchange HTTP Datagrams,which is necessary when HTTP is running over a transport that does not supportthe QUIC DATAGRAM frame. The Capsule Protocol can also be used to communicatereliable and bidirectional control messages associated with a datagram-basedprotocol even when HTTP/3 Datagrams are in use.

3.1.HTTP Data Streams

This specification defines the "data stream" of an HTTP request as thebidirectional stream of bytes that follows the header section of the requestmessage and the final response message that is either successful (i.e., 2xx) orupgraded (i.e., 101).

In HTTP/1.x, the data stream consists of all bytes on the connection that followthe blank line that concludes either the request header section or the finalresponse header section. As a result, only the last HTTP request on an HTTP/1.xconnection can start the Capsule Protocol.

In HTTP/2 and HTTP/3, the data stream of a given HTTP request consists of allbytes sent in DATA frames with the corresponding stream ID.

The concept of a data stream is particularly relevant for methods such asCONNECT, where there is no HTTP message content after the headers.

Data streams can be prioritized using any means suited to stream or requestprioritization. For example, seeSection 11 of [PRIORITY].

Data streams are subject to the flow control mechanisms of the underlyinglayers; examples include HTTP/2 stream flow control, HTTP/2 connection flowcontrol, and TCP flow control.

3.2.The Capsule Protocol

Definitions of new HTTP upgrade tokens can state that their associated request'sdata stream uses the Capsule Protocol. If they do so, the contents of theassociated request's data stream uses the following format:

Capsule Protocol {  Capsule (..) ...,}
Figure 2:Capsule Protocol Stream Format
Capsule {  Capsule Type (i),  Capsule Length (i),  Capsule Value (..),}
Figure 3:Capsule Format
Capsule Type:

A variable-length integer indicating the type of the capsule. An IANA registryis used to manage the assignment of Capsule Types; seeSection 5.4.

Capsule Length:

The length, in bytes, of the Capsule Value field, which follows this field,encoded as a variable-length integer. Note that this field can have a value ofzero.

Capsule Value:

The payload of this Capsule. Its semantics are determined by the value of theCapsule Type field.

An intermediary can identify the use of the Capsule Protocol either through thepresence of the Capsule-Protocol header field (Section 3.4) or by understanding thechosen HTTP Upgrade token.

Because new protocols or extensions might define new Capsule Types,intermediaries that wish to allow for future extensibilitySHOULD forwardCapsules without modification unless the definition of the Capsule Type in usespecifies additional intermediary processing. One such Capsule Type is theDATAGRAM Capsule; seeSection 3.5. In particular, intermediariesSHOULDforward Capsules with an unknown Capsule Type without modification.

Endpoints that receive a Capsule with an unknown Capsule TypeMUST silentlydrop that Capsule and skip over it to parse the next Capsule.

By virtue of the definition of the data stream:

  • The Capsule Protocol is not in use unless the response includes a 2xx(Successful) or 101 (Switching Protocols) status code.
  • When the Capsule Protocol is in use, the associated HTTP request and responsedo not carry HTTP content. A future extensionMAY define a new Capsule Type tocarry HTTP content.

The Capsule Protocol only applies to definitions of new HTTP upgrade tokens;thus, in HTTP/2 and HTTP/3, it can only be used with the CONNECT method.Therefore, once both endpoints agree to use the Capsule Protocol, the frameusage requirements of the stream change as specified inSection 8.5 of [HTTP/2]andSection 4.4 of [HTTP/3].

The Capsule ProtocolMUST NOT be used with messages that contain Content-Length,Content-Type, or Transfer-Encoding header fields. Additionally, HTTP statuscodes 204 (No Content), 205 (Reset Content), and 206 (Partial Content)MUST NOTbe sent on responses that use the Capsule Protocol. A receiver that observes aviolation of these requirementsMUST treat the HTTP message as malformed.

When processing Capsules, a receiver might be tempted to accumulate the fulllength of the Capsule Value field in the data stream before handling it. ThisapproachSHOULD be avoided because it can consume flow control in underlyinglayers, and that might lead to deadlocks if the Capsule data exhausts the flowcontrol window.

3.3.Error Handling

When a receiver encounters an error processing the Capsule Protocol, thereceiverMUST treat it as if it had received a malformed or incomplete HTTPmessage. For HTTP/3, the handling of malformed messages is described inSection 4.1.2 of [HTTP/3]. For HTTP/2, the handling of malformed messages isdescribed inSection 8.1.1 of [HTTP/2]. For HTTP/1.x, the handling of incompletemessages is described inSection 8 of [HTTP/1.1].

Each Capsule's payloadMUST contain exactly the fields identified in itsdescription. A Capsule payload that contains additional bytes after theidentified fields or a Capsule payload that terminates before the end of theidentified fieldsMUST be treated as it if were a malformed or incompletemessage. In particular, redundant length encodingsMUST be verified to beself-consistent.

If the receive side of a stream carrying Capsules is terminated cleanly (forexample, in HTTP/3 this is defined as receiving a QUIC STREAM frame with the FINbit set) and the last Capsule on the stream was truncated, thisMUST be treatedas if it were a malformed or incomplete message.

3.4.The Capsule-Protocol Header Field

The "Capsule-Protocol" header field is an Item Structured Field; seeSection 3.3 of [STRUCTURED-FIELDS]. Its valueMUST be a Boolean; any othervalue typeMUST be handled as if the field were not present by recipients (forexample, if this field is included multiple times, its type will become a Listand the field will be ignored). This document does not define any parameters forthe Capsule-Protocol header field value, but future documents might defineparameters. ReceiversMUST ignore unknown parameters.

Endpoints indicate that the Capsule Protocol is in use on a data stream bysending a Capsule-Protocol header field with a true value. A Capsule-Protocolheader field with a false value has the same semantics as when the header is notpresent.

IntermediariesMAY use this header field to allow processing of HTTP Datagramsfor unknown HTTP upgrade tokens. Note that this is only possible for HTTPUpgrade or Extended CONNECT.

The Capsule-Protocol header fieldMUST NOT be used on HTTP responses with astatus code that is both different from 101 (Switching Protocols) and outsidethe 2xx (Successful) range.

When using the Capsule Protocol, HTTP endpointsSHOULD send the Capsule-Protocolheader field to simplify intermediary processing. Definitions of new HTTPupgrade tokens that use the Capsule ProtocolMAY alter this recommendation.

3.5.The DATAGRAM Capsule

This document defines the DATAGRAM (0x00) Capsule Type. This Capsule allows HTTPDatagrams to be sent on a stream using the Capsule Protocol. This isparticularly useful when HTTP is running over a transport that does not supportthe QUIC DATAGRAM frame.

Datagram Capsule {  Type (i) = 0x00,  Length (i),  HTTP Datagram Payload (..),}
Figure 4:DATAGRAM Capsule Format
HTTP Datagram Payload:

The payload of the datagram, whose semantics are defined by the extension thatis using HTTP Datagrams. Note that this field can be empty.

HTTP Datagrams sent using the DATAGRAM Capsule have the same semantics as thosesent in QUIC DATAGRAM frames. In particular, the restrictions on when it isallowed to send an HTTP Datagram and how to process them (fromSection 2.1) alsoapply to HTTP Datagrams sent and received using the DATAGRAM Capsule.

An intermediary can re-encode HTTP Datagrams as it forwards them. In otherwords, an intermediaryMAY send a DATAGRAM Capsule to forward an HTTP Datagramthat was received in a QUIC DATAGRAM frame and vice versa. IntermediariesMUST NOT perform this re-encoding unless they have identified the use of the CapsuleProtocol on the corresponding request stream; seeSection 3.2.

Note that while DATAGRAM Capsules, which are sent on a stream, are reliablydelivered in order, intermediaries can re-encode DATAGRAM Capsules into QUICDATAGRAM frames when forwarding messages, which could result in loss orreordering.

If an intermediary receives an HTTP Datagram in a QUIC DATAGRAM frame and isforwarding it on a connection that supports QUIC DATAGRAM frames, theintermediarySHOULD NOT convert that HTTP Datagram to a DATAGRAM Capsule. If theHTTP Datagram is too large to fit in a DATAGRAM frame (for example, because thePath MTU (PMTU) of that QUIC connection is too low or if the maximum UDP payloadsize advertised on that connection is too low), the intermediarySHOULD drop theHTTP Datagram instead of converting it to a DATAGRAM Capsule. This preserves theend-to-end unreliability characteristic that methods such as DatagramPacketization Layer PMTU Discovery (DPLPMTUD) depend on[DPLPMTUD].An intermediary that converts QUIC DATAGRAM frames to DATAGRAM Capsules allowsHTTP Datagrams to be arbitrarily large without suffering any loss. This canmisrepresent the true path properties, defeating methods such as DPLPMTUD.

While DATAGRAM Capsules can theoretically carry a payload of length262-1, most HTTP extensions that use HTTP Datagrams will have theirown limits on what datagram payload sizes are practical. ImplementationsSHOULDtake those limits into account when parsing DATAGRAM Capsules. If an incomingDATAGRAM Capsule has a length that is known to be so large as to not be usable,the implementationSHOULD discard the Capsule without buffering its contentsinto memory.

Since QUIC DATAGRAM frames are required to fit within a QUIC packet,implementations that re-encode DATAGRAM Capsules into QUIC DATAGRAM frames mightbe tempted to accumulate the entire Capsule in the stream before re-encoding it.ThisSHOULD be avoided, because it can cause flow control problems; seeSection 3.2.

Note that it is possible for an HTTP extension to use HTTP Datagrams withoutusing the Capsule Protocol. For example, if an HTTP extension that uses HTTPDatagrams is only defined over transports that support QUIC DATAGRAM frames, itmight not need a stream encoding. Additionally, HTTP extensions can use HTTPDatagrams with their own data stream protocol. However, new HTTP extensions thatwish to use HTTP DatagramsSHOULD use the Capsule Protocol, as failing to do sowill make it harder for the HTTP extension to support versions of HTTP otherthan HTTP/3 and will prevent interoperability with intermediaries that onlysupport the Capsule Protocol.

4.Security Considerations

Since transmitting HTTP Datagrams using QUIC DATAGRAM frames requires sendingthe HTTP/3 SETTINGS_H3_DATAGRAM setting, it "sticks out". In other words,probing clients can learn whether a server supports HTTP Datagrams over QUICDATAGRAM frames. As some servers might wish to obfuscate the fact that theyoffer application services that use HTTP Datagrams, it's best for allimplementations that support this feature to always send this setting; seeSection 2.1.1.

Since use of the Capsule Protocol is restricted to new HTTP upgrade tokens, itis not directly accessible from Web Platform APIs (such as those commonly accessed viaJavaScript in web browsers).

Definitions of new HTTP upgrade tokens that use the Capsule Protocol need toinclude a security analysis that considers the impact of HTTP Datagrams andCapsules in the context of their protocol.

5.IANA Considerations

5.1.HTTP/3 Setting

IANA has registered the following entry in the "HTTP/3 Settings" registrymaintained at <https://www.iana.org/assignments/http3-parameters>:

Value:

0x33

Setting Name:

SETTINGS_H3_DATAGRAM

Default:

0

Status:

permanent

Reference:

RFC 9297

Change Controller:

IETF

Contact:

HTTP_WG; HTTP working group; ietf-http-wg@w3.org

Notes:

None

5.2.HTTP/3 Error Code

IANA has registered the following entry in the "HTTP/3 Error Codes" registrymaintained at <https://www.iana.org/assignments/http3-parameters>:

Value:

0x33

Name:

H3_DATAGRAM_ERROR

Description:

Datagram or Capsule Protocol parse error

Status:

permanent

Reference:

RFC 9297

Change Controller:

IETF

Contact:

HTTP_WG; HTTP working group; ietf-http-wg@w3.org

Notes:

None

5.3.HTTP Header Field Name

IANA has registered the following entry in the "Hypertext Transfer Protocol(HTTP) Field Name Registry" maintained at<https://www.iana.org/assignments/http-fields>:

Field Name:

Capsule-Protocol

Template:

None

Status:

permanent

Reference:

RFC 9297

Comments:

None

5.4.Capsule Types

This document establishes a registry for HTTP Capsule Type codes. The "HTTPCapsule Types" registry governs a 62-bit space and operates under the QUICregistration policy documented inSection 22.1 of [QUIC]. This new registryincludes the common set of fields listed inSection 22.1.1 of [QUIC]. Inaddition to those common fields, all registrations in this registryMUST includea "Capsule Type" field that contains a short name or label for the Capsule Type.

Permanent registrations in this registry are assigned using the SpecificationRequired policy (Section 4.6 of [IANA-POLICY]), except for valuesbetween 0x00 and 0x3f (in hexadecimal; inclusive), which are assigned usingStandards Action or IESG Approval as defined in Sections4.9 and4.10 of[IANA-POLICY].

Capsule Types with a value of the form 0x29 * N + 0x17 for integer values of Nare reserved to exercise the requirement that unknown Capsule Types be ignored.These Capsules have no semantics and can carry arbitrary values. These valuesMUST NOT be assigned by IANA andMUST NOT appear in the listing of assignedvalues.

This registry initially contains the following entry:

Value:

0x00

Capsule Type:

DATAGRAM

Status:

permanent

Reference:

RFC 9297

Change Controller:

IETF

Contact:

MASQUE Working Groupmasque@ietf.org

Notes:

None

6.References

6.1.Normative References

[HTTP]
Fielding, R., Ed.,Nottingham, M., Ed., andJ. Reschke, Ed.,"HTTP Semantics",STD 97,RFC 9110,DOI 10.17487/RFC9110,,<https://www.rfc-editor.org/info/rfc9110>.
[HTTP/1.1]
Fielding, R., Ed.,Nottingham, M., Ed., andJ. Reschke, Ed.,"HTTP/1.1",STD 99,RFC 9112,DOI 10.17487/RFC9112,,<https://www.rfc-editor.org/info/rfc9112>.
[HTTP/2]
Thomson, M., Ed. andC. Benfield, Ed.,"HTTP/2",RFC 9113,DOI 10.17487/RFC9113,,<https://www.rfc-editor.org/info/rfc9113>.
[HTTP/3]
Bishop, M., Ed.,"HTTP/3",RFC 9114,DOI 10.17487/RFC9114,,<https://www.rfc-editor.org/info/rfc9114>.
[IANA-POLICY]
Cotton, M.,Leiba, B., andT. Narten,"Guidelines for Writing an IANA Considerations Section in RFCs",BCP 26,RFC 8126,DOI 10.17487/RFC8126,,<https://www.rfc-editor.org/info/rfc8126>.
[QUIC]
Iyengar, J., Ed. andM. Thomson, Ed.,"QUIC: A UDP-Based Multiplexed and Secure Transport",RFC 9000,DOI 10.17487/RFC9000,,<https://www.rfc-editor.org/info/rfc9000>.
[QUIC-DGRAM]
Pauly, T.,Kinnear, E., andD. Schinazi,"An Unreliable Datagram Extension to QUIC",RFC 9221,DOI 10.17487/RFC9221,,<https://www.rfc-editor.org/info/rfc9221>.
[RFC2119]
Bradner, S.,"Key words for use in RFCs to Indicate Requirement Levels",BCP 14,RFC 2119,DOI 10.17487/RFC2119,,<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174]
Leiba, B.,"Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words",BCP 14,RFC 8174,DOI 10.17487/RFC8174,,<https://www.rfc-editor.org/info/rfc8174>.
[STRUCTURED-FIELDS]
Nottingham, M. andP-H. Kamp,"Structured Field Values for HTTP",RFC 8941,DOI 10.17487/RFC8941,,<https://www.rfc-editor.org/info/rfc8941>.
[TCP]
Eddy, W., Ed.,"Transmission Control Protocol (TCP)",STD 7,RFC 9293,DOI 10.17487/RFC9293,,<https://www.rfc-editor.org/info/rfc9293>.

6.2.Informative References

[DPLPMTUD]
Fairhurst, G.,Jones, T.,Tüxen, M.,Rüngeler, I., andT. Völker,"Packetization Layer Path MTU Discovery for Datagram Transports",RFC 8899,DOI 10.17487/RFC8899,,<https://www.rfc-editor.org/info/rfc8899>.
[EXT-CONNECT2]
McManus, P.,"Bootstrapping WebSockets with HTTP/2",RFC 8441,DOI 10.17487/RFC8441,,<https://www.rfc-editor.org/info/rfc8441>.
[EXT-CONNECT3]
Hamilton, R.,"Bootstrapping WebSockets with HTTP/3",RFC 9220,DOI 10.17487/RFC9220,,<https://www.rfc-editor.org/info/rfc9220>.
[PRIORITY]
Oku, K. andL. Pardue,"Extensible Prioritization Scheme for HTTP",RFC 9218,DOI 10.17487/RFC9218,,<https://www.rfc-editor.org/info/rfc9218>.
[WEBSOCKET]
Fette, I. andA. Melnikov,"The WebSocket Protocol",RFC 6455,DOI 10.17487/RFC6455,,<https://www.rfc-editor.org/info/rfc6455>.

Acknowledgments

Portions of this document were previously part of the QUIC DATAGRAM framedefinition itself; the authors would like to acknowledge the authors of thatdocument and the members of the IETF MASQUE working group for their suggestions.Additionally, the authors would like to thankMartin Thomson for suggesting theuse of an HTTP/3 setting. Furthermore, the authors would like tothankBen Schwartz for substantive input. The final design in this document came out of the HTTP DatagramsDesign Team, whose members wereAlan Frindell,Alex Chernyakhovsky,Ben Schwartz,Eric Rescorla,Marcus Ihlar,Martin Thomson,Mike Bishop,Tommy Pauly,Victor Vasiliev, and the authors of this document. The authors thankMark Nottingham andPhilipp Tiesel for their helpful comments.

Authors' Addresses

David Schinazi
Google LLC
1600 Amphitheatre Parkway
Mountain View,CA94043
United States of America
Email:dschinazi.ietf@gmail.com
Lucas Pardue
Cloudflare
Email:lucaspardue.24.7@gmail.com

[8]ページ先頭

©2009-2025 Movatter.jp