- From: Roberto Peon <grmocg@gmail.com>
- Date: Tue, 4 Mar 2014 13:18:19 -0800
- To: William Chan (陈智昌) <willchan@chromium.org>
- Cc: Mark Nottingham <mnot@mnot.net>, Martin Thomson <martin.thomson@gmail.com>, Matthew Kerwin <matthew@kerwin.net.au>, Amos Jeffries <squid3@treenet.co.nz>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
- Message-ID: <CAP+FsNeeaOB6xOz4bBBk02JzSrKcxDHPTSKcdD49H3v6cnFuCQ@mail.gmail.com>
Lets say a browser supports WS over HTTP2. In that case, I agree that seeing h2, and creating a stream with ws (which the server decides to not reject) can work. However, SETTINGS isn't currently flexible enough to say something about supported protocols given that SETTINGS cannot be upgraded without a protocol rev. The other issue is that there is no positive acknowledgement that the WS stream (or scheme) is accepted unless payload is sent (window-update can be taken for ack/acceptance), which implies the client must use timeouts to wait for a RST, which is suboptimal. (There are obvious solutions to some of these problems, e.g. a WINDOW_UPDATE of zero after accepting headers, defining settings or some equivalent which allows the server to state what it accepts, or setting up ALPN in such a way that the client already knows as part of the TLS handshake). And then there is the case where the browser does not support WS over HTTP2, but does support WS over TLS (i.e. WS or WSS). There is no token for this right now, and if there is it must not conflict with any token that declares WS support over HTTP2. Separate from how to do WS, but related: The worry about structured ALPN tokens was about future proofing this kind of thing for whatever other protocols get carried (and I know in our case we're thinking about at least two other application-layer protocols, and perhaps another transport). (ALPN as currently defined does not preclude doing this-- the TLS layer does not currently place semantic restrictions on the data negotiated in the handshake -=R On Tue, Mar 4, 2014 at 10:29 AM, William Chan (陈智昌) <willchan@chromium.org>wrote: > On Tue, Mar 4, 2014 at 9:07 AM, Mark Nottingham <mnot@mnot.net> wrote: > >> >> On 4 Mar 2014, at 11:25 am, Roberto Peon <grmocg@gmail.com> wrote: >> >> > How does one determine WS usnig HTTP2/TLS/TCP as compared to WS over >> TLS/TCP? >> >> We haven’t discussed much yet, but there are two (not necessarily >> exclusive) proposals: >> >> - You try; if the other end doesn’t support WS, it refuses with an error >> code. >> >> - You discover what schemes the server supports using a SETTINGS. >> > > I just want to point out that both of these approaches requires an extra > roundtrip in the TLS-ALPN HTTP/2 establishment case. Which is unfortunate > and might lead clients to race more connections. > > >> This assumes you already have an HTTP/2 connection open to the server; if >> you don’t, you have to figure out what to do, but I *think* that’s a WS/1 >> problem, not ours. >> >> Cheers, >> >> >> -- >> Mark Nottingham http://www.mnot.net/ >> >> >> >> >> >
Received on Tuesday, 4 March 2014 21:18:47 UTC