I understand. It would be only useful when having HTTP/3 on TCP without SSL/TLS. I should read more to find out if that is even possible, but if it is, I think you need a preface. HTTP/3 over unsecured TCP would not be useful except for debugging/test purposes, so there is no need for adding preface to the spec, unless this feature will be covered too.

Piers O'Hanlon schreef op 2021-07-08 11:38:

Hi Ben,

It is also being proposed (and implemented by a number of organisations including Apple see: https://github.com/MikeBishop/dns-alt-svc/blob/master/svcb-implementations.md) that the ALPN (and IP address(es)) may be obtained via the new proposed "HTTPS" DNS resource record request:
https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https

Using this approach one can in principle pre-empt a "preface", though clients would need to handle a potential discrepancy.

Best,

Piers O'Hanlon

On 29 Jun 2021, at 20:10, [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

Reply via email to