Re: [hybi] CONNECT handshake text

Dave Cridland <dave@cridland.net> Wed, 08 December 2010 09:32 UTC

Return-Path: <dave@cridland.net>
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 892593A6880 for <hybi@core3.amsl.com>; Wed, 8 Dec 2010 01:32:27 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.256
X-Spam-Level:
X-Spam-Status: No, score=-2.256 tagged_above=-999 required=5 tests=[AWL=-0.257, BAYES_00=-2.599, J_CHICKENPOX_37=0.6]
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 v7qLjfZZyjI9 for <hybi@core3.amsl.com>; Wed, 8 Dec 2010 01:32:26 -0800 (PST)
Received: from peirce.dave.cridland.net (peirce.dave.cridland.net [IPv6:2001:470:1f09:882:2e0:81ff:fe29:d16a]) by core3.amsl.com (Postfix) with ESMTP id 2EADA3A6879 for <hybi@ietf.org>; Wed, 8 Dec 2010 01:32:26 -0800 (PST)
Received: from localhost (localhost.localdomain [127.0.0.1]) by peirce.dave.cridland.net (Postfix) with ESMTP id 39059116810F; Wed, 8 Dec 2010 09:33:52 +0000 (GMT)
X-Virus-Scanned: Debian amavisd-new at peirce.dave.cridland.net
Received: from peirce.dave.cridland.net ([127.0.0.1]) by localhost (peirce.dave.cridland.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id y6rUeIsJTZ3I; Wed, 8 Dec 2010 09:33:47 +0000 (GMT)
Received: from puncture (puncture.dave.cridland.net [IPv6:2001:470:1f09:882:221:85ff:fe3f:1696]) by peirce.dave.cridland.net (Postfix) with ESMTPA id 706E611680FB; Wed, 8 Dec 2010 09:33:47 +0000 (GMT)
References: <AANLkTinEXHBeaUPo4gK2CHbq7ZHYnY2PE3Vb+Oi+K1NM@mail.gmail.com> <AANLkTimgrC2nehYE=Dnt11naKRY55nMzn=zTmzx+AYpH@mail.gmail.com> <AANLkTik4QUxMVTt=NTMq-Wo7GhOX3ie=eHQRMHZ8fEqd@mail.gmail.com> <AANLkTikEMwkY9G2RXjTrX+Uf97kvyfmm2Qi5CdK=_Cr+@mail.gmail.com> <AANLkTiknHq_hmdErypdydOpZpRk1y+DQm7aZh1qej3Ao@mail.gmail.com>
In-Reply-To: <AANLkTiknHq_hmdErypdydOpZpRk1y+DQm7aZh1qej3Ao@mail.gmail.com>
MIME-Version: 1.0
Message-Id: <3605.1291800827.456737@puncture>
Date: Wed, 08 Dec 2010 09:33:47 +0000
From: Dave Cridland <dave@cridland.net>
To: Greg Wilkins <gregw@webtide.com>, Server-Initiated HTTP <hybi@ietf.org>, Adam Barth <ietf@adambarth.com>
Content-Type: text/plain; delsp="yes"; charset="iso-8859-1"; format="flowed"
Content-Transfer-Encoding: 8bit
Subject: Re: [hybi] CONNECT handshake text
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: Wed, 08 Dec 2010 09:32:27 -0000

On Wed Dec  8 09:13:59 2010, Greg Wilkins wrote:
> Thus regardless of using CONNECT of Get+Upgrade,  I believe my
> proposals for Hello frames and inverting some bits the header are  
> good
> defences to include.   I've attached my proposed text/diff for them
> again... please feel free to swap out Upgrade for CONNECT if that is
> your preference.

I think your bit-flipping is good, as it can only serve to make the  
framing more stable. I certainly don't see any argument against,  
whereas I can see the argument for. As such, I think this is a good  
idea and should be done.

I think the method for checking the websocket support in the server  
and "choking" any transparent intermediaries (of the type described  
in Adam's paper) needn't be Hello frames. That's why my proposal is  
essentially yours, but with a 101/CONNECT exchange in lieu of a Hello  
frame exchange - this should provide the utility of both methods with  
no difference in RTT counts at startup. In addition since the CONNECT  
is no longer unilaterally sent, it should never appear at the  
end-server as an HTTP request - its sole purpose is to look  
sufficiently like one to a naïve intermediary - as such the arguments  
against it cease to apply.

Hence:

RTT@RX
0.5	Mandatory:	 [C->S] Upgrade	 "Do you support websockets?"
1.0	Mandatory:	 [S->C] 101		 "Yes, yes I do. Here's my proof."
1.0	Optional:		 [S->C] <frame>	 "I'm starting to send frames now."
1.5	Mandatory:	 [C->S] CONNECT	 "OK, so let's choke out the  
intermediaries we don't know about and exchange."
1.5	Optional:		 [C->S] <frame>	 "I start sending frames here."

Dave.
-- 
Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net
  - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
  - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade