For those who are interested in relation between QUICStream and
HQClientTransaction,

I draw a rough picture to help your understanding.

>From protocol perspective, HTTP is on top of TCP or QUIC. From ATS design
perspective, Transactions are on top of a Session. A difference between TCP
and QUIC is transport layer multiplexing, QUIC streams.

QUIC applications (e.g. HTTP, DNS, FTP) need to use QUIC streams to
transfer data (use of multiplexed transport is not optional, applications
may transfer all data on a stream though). Since current HTTP/QUIC spec
uses 1 stream for 1 request, we simply mapped Transactions to Streams 1:1.
However, it was 2 streams for 1 request previously. Number of streams for 1
request / query is up to QUIC applications.

Also, QUIC applications may use specific streams for specific purpose.
HTTP/QUIC uses stream 1 for control frames, like stream 0 of HTTP/2, and
HTTP/QUIC uses even number stream IDs for server initiated streams. So,
QUIC applications need to be aware of QUIC streams.

As for Session, it's the same as HTTP/1.1 over TCP. QUICConnection and
ClientSession is 1:1. You can see a QUIC connection as a persistent TCP
connection.

Thanks,
Masakazu

[image: Inline image 1]

Reply via email to