Hi Ben, This issue in general, if I'm understanding you correctly, is solved via the ALPN[1]. I.e., as part of the TLS handshake the server will be able to know which application is being used. For example, "h2" corresponds to HTTP/2 and "h3" corresponds to HTTP/3. Also note that there are no standardized mappings of HTTP over QUIC except for the currently-pending HTTP/3 specification. Future versions of HTTP over QUIC would also be distinguished via ALPN, presumably.
Best, Matt Joras [1] https://datatracker.ietf.org/doc/html/rfc7301 On Tue, Jun 29, 2021 at 12:11 PM <[email protected]> wrote: > Hello all, > > When reading about QUIC, it comes to me as a better alternative of TCP, > build upon UDP. > In this case, servers that run on TCP could easily also run on UDP/QUIC; > think about DNS, SMTP, FTP. > > Now there is also a new version of HTTP. HTTP/3. This version will be > transfered over QUIC by default. > However, as I mentioned above, it could be possible to have "TCP > protocols" that use QUIC too. > That makes me think about also transfering some old HTTP versions, for > example HTTP/0.9 (I came across a library that transfered HTTP/0.9 over > QUIC). > But also HTTP/1.0, HTTP/1.1 and HTTP/2 are possible. > > All older HTTP versions send the following request line: <METHOD> <PATH> > [VERSION] \n > If an endpoint is directly accessed (without some negotiation), it will > find out the version directly by reading the first line. > For 0.9 the version will be absent. For 2.0 this will be a preface with > a PRI method and * as path. > > When I think about running a HTTP server, I think about this: > > TCP (80) or TCP/SSL (443): > - HTTP/0.9 > - HTTP/1.0 > - HTTP/1.1 > - HTTP/2.0 > - HTTP/3.0 (I think this is possible too) > > UDP/QUIC: > - HTTP/0.9 (HTTP/0.9 but over QUIC) > - HTTP/1.0 (HTTP/1.0 but over QUIC) > - HTTP/1.1 (HTTP/1.1 but over QUIC) > - HTTP/2.0 (HTTP/2.0 but over QUIC) > - HTTP/3.0 (Default) > > However, if I listen for all versions on my HTTP-QUIC server, how am I > supposed to know that it is HTTP/3? Does HTTP/3 has a preface? And if > not, why not? > I think the preface of HTTP/2 is great and I think it would be great in > HTTP/3 too: PRI * HTTP/3.0 > > I would like to see a preface added to HTTP/3.0. It is only 18 extra > bytes at the beginning of the request. It could be ignored by some > servers if they want, but for servers that want to have backwards > compatibility it would be a great feature. (Luckily HTTP/3 is not a > released standard yet.) > > Ben > >
