Re: 6455 Websockets and the relationship to HTTP

Mark Nottingham <> Fri, 02 December 2016 01:04 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D2E20129A12 for <>; Thu, 1 Dec 2016 17:04:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -9.797
X-Spam-Status: No, score=-9.797 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-2.896, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id yTBM7l4rGKsV for <>; Thu, 1 Dec 2016 17:04:36 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 32B6A1293DF for <>; Thu, 1 Dec 2016 17:04:36 -0800 (PST)
Received: from lists by with local (Exim 4.80) (envelope-from <>) id 1cCcE4-0004GX-Fe for; Fri, 02 Dec 2016 01:01:20 +0000
Resent-Date: Fri, 02 Dec 2016 01:01:20 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <>) id 1cCcDx-0004DK-Lw for; Fri, 02 Dec 2016 01:01:13 +0000
Received: from ([]) by with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <>) id 1cCcDl-0007Mt-ML for; Fri, 02 Dec 2016 01:01:03 +0000
Received: from [] (unknown []) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPSA id 98FC022E256; Thu, 1 Dec 2016 20:00:37 -0500 (EST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 10.1 \(3251\))
From: Mark Nottingham <>
In-Reply-To: <>
Date: Fri, 02 Dec 2016 12:00:34 +1100
Cc: Martin Thomson <>, Patrick McManus <>, HTTP Working Group <>
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <> <>
To: Kazuho Oku <>
X-Mailer: Apple Mail (2.3251)
Received-SPF: pass client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-8.1
X-W3C-Hub-Spam-Report: AWL=1.473, BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_DB=-1, W3C_IRA=-1, W3C_IRR=-3, W3C_WL=-1
X-W3C-Scan-Sig: 1cCcDl-0007Mt-ML 3da54815a23d4d85b06725b8abfc402e
Subject: Re: 6455 Websockets and the relationship to HTTP
Archived-At: <>
X-Mailing-List: <> archive/latest/33079
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

> On 2 Dec. 2016, at 11:56 am, Kazuho Oku <> wrote:
> 2016-12-02 9:19 GMT+09:00 Martin Thomson <>:
> On 2 December 2016 at 11:09, Mark Nottingham <> wrote:
> > In particular, my recollection of the outcome of the discussion of WS in H2 was that a new SETTING or a new ALPN token could be used to indicate that a connection supports both H2 and WS. If there's a problem with doing so, that would be good to talk about as well. Especially considering QUIC.
> There seems to be some reluctance to exercise that option.  I don't
> understand why; I've a bunch of candidate theories, but none of them
> make a lot of sense.
> My understanding is that the cons of using SETTINGS only is that it requires an additional roundtrip on connection establishment. I've heard people oppose to the use of ALPN since they want to use both H2 and WS (and possibly DNS?) on the same connection.

The semantics of the ALPN token can be "this connection supports H2 *and* WS."

It's true that taken to an extreme, this could lead to a combinatorial explosion. If I remember discussions at the time correctly, it was felt that having some positive pressure on implementations to identify and implement common profiles of protocols to support was a good thing.

> Personally, I think using both SETTINGS (or introducing a new frame) and ALPN solves the shortcomings (and the reluctance). We could consider ALPN as a method to specify the application protocol (e.g. HTTP or WS or DNS), and use SETTINGS for permitting additional protocols to be coalesced.

That's another way to do it too, provided the latency hit isn't critical. Since you've already got the H2 connection open in the typical case for WS, I think that'd work well, but I could be unaware of some use case that requires WS on the first RT.


Mark Nottingham