- From: Takeshi Yoshino <tyoshino@google.com>
- Date: Mon, 10 Mar 2014 17:37:53 +0900
- To: Roberto Peon <grmocg@gmail.com>
- Cc: William Chan (陈智昌) <willchan@chromium.org>, 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: <CAH9hSJbxwnTUJRCMzRRo_FM4TBL2h8bTWC64oafkcbW7Fg79Tw@mail.gmail.com>
On Wed, Mar 5, 2014 at 6:18 AM, Roberto Peon <grmocg@gmail.com> wrote: > 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. > How about using ALTSVC or similar to advertise supported protocols? - introduce a new parameter SETTINGS_PREFACE_ALTSVC_COUNT to the SETTINGS frame. if just ws, value=1 - a server MUST send ALTSVC frames of the count asap after the preface SETTINGS frame, if just ws, one frame - a client MUST wait until it receives the specified number of ALTSVC frames to be received before creating a stream As Will said, the ALTSVCs comes later than 2RTT from ClientHello (and then we need to re-establish non-h2 TLS for RFC6455/TLS/TCP), using structured ALPN to announce WS/h2 capability is preferred. I.e. a client lists h2ws (or something else indicating ws/h2 support is mandatory) and wss (RFC6455/h2) in its ClientHello. > 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. > I don't quite understand what you're talking about here. Do you mean that we need HTTP/2 level acceptance in addition to WebSocket level successful handshake response as a HEADERS frame? Or rather thinking about non-WS protocol that doesn't involve handshake response? > (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. > Agreed > 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 Monday, 10 March 2014 08:38:40 UTC