Re: [hybi] #1: HTTP Compliance

Vladimir Katardjiev <vladimir@d2dx.com> Mon, 17 May 2010 09:40 UTC

Return-Path: <vladimir@d2dx.com>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id CD65F3A692B for <hybi@core3.amsl.com>; Mon, 17 May 2010 02:40:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.001
X-Spam-Level:
X-Spam-Status: No, score=0.001 tagged_above=-999 required=5 tests=[BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DT3BJ-bVAd6d for <hybi@core3.amsl.com>; Mon, 17 May 2010 02:40:28 -0700 (PDT)
Received: from homiemail-a10.g.dreamhost.com (caiajhbdcagg.dreamhost.com [208.97.132.66]) by core3.amsl.com (Postfix) with ESMTP id 56D313A67F7 for <hybi@ietf.org>; Mon, 17 May 2010 02:40:10 -0700 (PDT)
Received: from dhcp118.verkstad.net (dhcp118.verkstad.net [192.36.157.118]) (Authenticated sender: vladimir@d2dx.com) by homiemail-a10.g.dreamhost.com (Postfix) with ESMTPA id A89FE28005C for <hybi@ietf.org>; Mon, 17 May 2010 02:40:01 -0700 (PDT)
From: Vladimir Katardjiev <vladimir@d2dx.com>
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: multipart/signed; boundary="Apple-Mail-5--570743258"; protocol="application/pkcs7-signature"; micalg="sha1"
Date: Mon, 17 May 2010 11:39:59 +0200
In-Reply-To: <4BF106AD.6020506@webtide.com>
To: Hybi <hybi@ietf.org>
References: <068.d07026741c6694cd80652d2a7d34f236@tools.ietf.org> <4BF106AD.6020506@webtide.com>
Message-Id: <D5AE558E-59FF-40E7-AB66-C01F0D26DF67@d2dx.com>
X-Mailer: Apple Mail (2.1078)
Subject: Re: [hybi] #1: HTTP Compliance
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 17 May 2010 09:40:29 -0000

I assume the problem/desire/requirement is to reduce the number of round-trips required for the establishment of a new connection. The "random bytes" are a byproduct of that -- ensure that a WebSocket connection's "open" event is fired when the client knows the connection is actually open, not just when the connection is "maybe" open.

...

Maybe it'd be good to rethink how the entire thing works. So far, the WebSocket handshake itself has been "baked into" whatever previous authentication there is/has been. So... Make a proper WS handshake. It can be asynchronous (a la SPDY), and thus not require an additional RTT. Allow WS data to be sent from the API before open is fired, at the risk of being lost. The current API always risks data being lost anyway, unless some ack protocol is introduced, so this is OK in my view. Fire open after the WS handshake finishes. There's no speed loss for expert programmers who desire the extra ms boost, while the contract of an established WS connection is preserved for amateurs.

Then what's left to define is the protocol switching. In this case, ensure the HTTP upgrade fulfils the requirements on the Upgrade contract in a general way (not just WebSockets). The actual defining is probably not the task of this group, but the requirement most certainly is. It might be something as "simple" as adding a Sec- prefix or something, but just ensure that Upgrade can be used. This paves the way for not just WS using Upgrade, but potentially other protocols as well (as was originally intended).

As for the TLS nextprotoneg, I think making that a requirement for a WebSocket connection always runs on TLS is overkill. If nothing else, it is going to severely delay the number of available implementations until libraries with nextprotoneg appear. Specifically, I wouldn't start implementing a TLS handshake myself, so I'd have to wait for a compliant library. Obviously, I don't like that.

Vladimir

On 17 maj 2010, at 11.04, Greg Wilkins wrote:

> 
> All,
> 
> I know this issues has been somewhat sidetracked by the
> discussion about TLS.
> 
> However, this particular requirements is conditional for only when
> sharing a port with HTTP, so I think it valuable to continue to
> try to finalize this requirement.
> 
> Currently there is no clear consensus either way, with perhaps
> a few more voices against compliance is not required.
> 
> For firstly, I'd like to encourage all list lurkers to
> speak up and help sway the debate one way or the other.
> 
> Also, in an attempt to move the conversation on, I'd like
> flip the question around and ask if somebody can clearly
> state what is the down side of adopting HTTP compliance
> other than it might force a breaking change in the
> -76 draft.   Is there some other requirement that can only
> be achieved by breaking compliance?
> 
> 
> regards