[html5] r5175 - [e] (0) Clarify what clients and servers are for conformance in Web Sockets.
whatwg at whatwg.org
whatwg at whatwg.org
Wed Jul 21 14:24:16 PDT 2010
Author: ianh
Date: 2010-07-21 14:24:15 -0700 (Wed, 21 Jul 2010)
New Revision: 5175
Modified:
complete.html
source
Log:
[e] (0) Clarify what clients and servers are for conformance in Web Sockets.
Modified: complete.html
===================================================================
--- complete.html 2010-07-21 07:05:56 UTC (rev 5174)
+++ complete.html 2010-07-21 21:24:15 UTC (rev 5175)
@@ -1051,39 +1051,39 @@
<li><a href=#security-model><span class=secno>10.3.4.1.6 </span>Security model</a></li>
<li><a href=#relationship-to-tcp-and-http><span class=secno>10.3.4.1.7 </span>Relationship to TCP and HTTP</a></li>
<li><a href=#establishing-a-connection><span class=secno>10.3.4.1.8 </span>Establishing a connection</a></li>
- <li><a href=#subprotocols-using-the-websocket-protocol><span class=secno>10.3.4.1.9 </span>Subprotocols using the WebSocket protocol</a></li>
- <li><a href=#terminology-1><span class=secno>10.3.4.1.10 </span>Terminology</a></ol></li>
- <li><a href=#websocket-urls><span class=secno>10.3.4.2 </span>WebSocket URLs</a>
+ <li><a href=#subprotocols-using-the-websocket-protocol><span class=secno>10.3.4.1.9 </span>Subprotocols using the WebSocket protocol</a></ol></li>
+ <li><a href=#terminology-1><span class=secno>10.3.4.2 </span>Terminology</a></li>
+ <li><a href=#websocket-urls><span class=secno>10.3.4.3 </span>WebSocket URLs</a>
<ol>
- <li><a href=#parsing-websocket-urls><span class=secno>10.3.4.2.1 </span>Parsing WebSocket URLs</a></li>
- <li><a href=#constructing-websocket-urls><span class=secno>10.3.4.2.2 </span>Constructing WebSocket URLs</a></ol></li>
- <li><a href=#client-side-requirements><span class=secno>10.3.4.3 </span>Client-side requirements</a>
+ <li><a href=#parsing-websocket-urls><span class=secno>10.3.4.3.1 </span>Parsing WebSocket URLs</a></li>
+ <li><a href=#constructing-websocket-urls><span class=secno>10.3.4.3.2 </span>Constructing WebSocket URLs</a></ol></li>
+ <li><a href=#client-side-requirements><span class=secno>10.3.4.4 </span>Client-side requirements</a>
<ol>
- <li><a href=#opening-handshake-0><span class=secno>10.3.4.3.1 </span>Opening handshake</a></li>
- <li><a href=#data-framing><span class=secno>10.3.4.3.2 </span>Data framing</a></li>
- <li><a href=#handling-errors-in-utf-8-from-the-server><span class=secno>10.3.4.3.3 </span>Handling errors in UTF-8 from the server</a></ol></li>
- <li><a href=#server-side-requirements><span class=secno>10.3.4.4 </span>Server-side requirements</a>
+ <li><a href=#opening-handshake-0><span class=secno>10.3.4.4.1 </span>Opening handshake</a></li>
+ <li><a href=#data-framing><span class=secno>10.3.4.4.2 </span>Data framing</a></li>
+ <li><a href=#handling-errors-in-utf-8-from-the-server><span class=secno>10.3.4.4.3 </span>Handling errors in UTF-8 from the server</a></ol></li>
+ <li><a href=#server-side-requirements><span class=secno>10.3.4.5 </span>Server-side requirements</a>
<ol>
- <li><a href="#reading-the-client's-opening-handshake"><span class=secno>10.3.4.4.1 </span>Reading the client's opening handshake</a></li>
- <li><a href="#sending-the-server's-opening-handshake"><span class=secno>10.3.4.4.2 </span>Sending the server's opening handshake</a></li>
- <li><a href=#ws-sd-framing><span class=secno>10.3.4.4.3 </span>Data framing</a></li>
- <li><a href=#handling-errors-in-utf-8-from-the-client><span class=secno>10.3.4.4.4 </span>Handling errors in UTF-8 from the client</a></ol></li>
- <li><a href=#closing-the-connection><span class=secno>10.3.4.5 </span>Closing the connection</a>
+ <li><a href="#reading-the-client's-opening-handshake"><span class=secno>10.3.4.5.1 </span>Reading the client's opening handshake</a></li>
+ <li><a href="#sending-the-server's-opening-handshake"><span class=secno>10.3.4.5.2 </span>Sending the server's opening handshake</a></li>
+ <li><a href=#ws-sd-framing><span class=secno>10.3.4.5.3 </span>Data framing</a></li>
+ <li><a href=#handling-errors-in-utf-8-from-the-client><span class=secno>10.3.4.5.4 </span>Handling errors in UTF-8 from the client</a></ol></li>
+ <li><a href=#closing-the-connection><span class=secno>10.3.4.6 </span>Closing the connection</a>
<ol>
- <li><a href=#client-initiated-closure><span class=secno>10.3.4.5.1 </span>Client-initiated closure</a></li>
- <li><a href=#server-initiated-closure><span class=secno>10.3.4.5.2 </span>Server-initiated closure</a></li>
- <li><a href=#closure><span class=secno>10.3.4.5.3 </span>Closure</a></ol></li>
- <li><a href=#security-considerations><span class=secno>10.3.4.6 </span>Security considerations</a></li>
- <li><a href=#iana-considerations-0><span class=secno>10.3.4.7 </span>IANA considerations</a>
+ <li><a href=#client-initiated-closure><span class=secno>10.3.4.6.1 </span>Client-initiated closure</a></li>
+ <li><a href=#server-initiated-closure><span class=secno>10.3.4.6.2 </span>Server-initiated closure</a></li>
+ <li><a href=#closure><span class=secno>10.3.4.6.3 </span>Closure</a></ol></li>
+ <li><a href=#security-considerations><span class=secno>10.3.4.7 </span>Security considerations</a></li>
+ <li><a href=#iana-considerations-0><span class=secno>10.3.4.8 </span>IANA considerations</a>
<ol>
- <li><a href=#registration-of-ws:-scheme><span class=secno>10.3.4.7.1 </span>Registration of <code title="">ws:</code> scheme</a></li>
- <li><a href=#registration-of-wss:-scheme><span class=secno>10.3.4.7.2 </span>Registration of <code title="">wss:</code> scheme</a></li>
- <li><a href=#registration-of-the-websocket-http-upgrade-keyword><span class=secno>10.3.4.7.3 </span>Registration of the "<code title="">WebSocket</code>" HTTP Upgrade keyword</a></li>
- <li><a href=#sec-websocket-key1-and-sec-websocket-key2><span class=secno>10.3.4.7.4 </span><code>Sec-WebSocket-Key1</code> and <code>Sec-WebSocket-Key2</code></a></li>
- <li><a href=#sec-websocket-location><span class=secno>10.3.4.7.5 </span><code>Sec-WebSocket-Location</code></a></li>
- <li><a href=#sec-websocket-origin><span class=secno>10.3.4.7.6 </span><code>Sec-WebSocket-Origin</code></a></li>
- <li><a href=#sec-websocket-protocol><span class=secno>10.3.4.7.7 </span><code>Sec-WebSocket-Protocol</code></a></ol></li>
- <li><a href=#using-the-websocket-protocol-from-other-specifications><span class=secno>10.3.4.8 </span>Using the WebSocket protocol from other specifications</a></ol></ol></li>
+ <li><a href=#registration-of-ws:-scheme><span class=secno>10.3.4.8.1 </span>Registration of <code title="">ws:</code> scheme</a></li>
+ <li><a href=#registration-of-wss:-scheme><span class=secno>10.3.4.8.2 </span>Registration of <code title="">wss:</code> scheme</a></li>
+ <li><a href=#registration-of-the-websocket-http-upgrade-keyword><span class=secno>10.3.4.8.3 </span>Registration of the "<code title="">WebSocket</code>" HTTP Upgrade keyword</a></li>
+ <li><a href=#sec-websocket-key1-and-sec-websocket-key2><span class=secno>10.3.4.8.4 </span><code>Sec-WebSocket-Key1</code> and <code>Sec-WebSocket-Key2</code></a></li>
+ <li><a href=#sec-websocket-location><span class=secno>10.3.4.8.5 </span><code>Sec-WebSocket-Location</code></a></li>
+ <li><a href=#sec-websocket-origin><span class=secno>10.3.4.8.6 </span><code>Sec-WebSocket-Origin</code></a></li>
+ <li><a href=#sec-websocket-protocol><span class=secno>10.3.4.8.7 </span><code>Sec-WebSocket-Protocol</code></a></ol></li>
+ <li><a href=#using-the-websocket-protocol-from-other-specifications><span class=secno>10.3.4.9 </span>Using the WebSocket protocol from other specifications</a></ol></ol></li>
<li><a href=#web-messaging><span class=secno>10.4 </span>Cross-document messaging</a>
<ol>
<li><a href=#introduction-8><span class=secno>10.4.1 </span>Introduction</a></li>
@@ -72709,7 +72709,7 @@
- <h6 id=terminology-1><span class=secno>10.3.4.1.10 </span>Terminology</h6>
+ <h5 id=terminology-1><span class=secno>10.3.4.2 </span>Terminology</h5>
<p>When an implementation is required to <i>send</i> data as part of
@@ -72718,9 +72718,9 @@
packets.</p>
- <h5 id=websocket-urls><span class=secno>10.3.4.2 </span>WebSocket URLs</h5>
+ <h5 id=websocket-urls><span class=secno>10.3.4.3 </span>WebSocket URLs</h5>
- <h6 id=parsing-websocket-urls><span class=secno>10.3.4.2.1 </span>Parsing WebSocket URLs</h6>
+ <h6 id=parsing-websocket-urls><span class=secno>10.3.4.3.1 </span>Parsing WebSocket URLs</h6>
<p>The steps to <dfn id="parse-a-websocket-url's-components">parse a WebSocket URL's components</dfn> from
a string <var title="">url</var> are as follows. These steps return
@@ -72784,7 +72784,7 @@
<li><p>Return <var title="">host</var>, <var title="">port</var>,
<var title="">resource name</var>, and <var title="">secure</var>.</li>
- </ol><h6 id=constructing-websocket-urls><span class=secno>10.3.4.2.2 </span>Constructing WebSocket URLs</h6>
+ </ol><h6 id=constructing-websocket-urls><span class=secno>10.3.4.3.2 </span>Constructing WebSocket URLs</h6>
<p>The steps to <dfn id=construct-a-websocket-url>construct a WebSocket URL</dfn> from a <var title="">host</var>, a <var title="">port</var>, a <var title="">resource name</var>, and a <var title="">secure</var> flag,
are as follows:</p>
@@ -72805,17 +72805,24 @@
<li>Return <var title="">url</var>.</li>
- </ol><h5 id=client-side-requirements><span class=secno>10.3.4.3 </span>Client-side requirements</h5>
+ </ol><h5 id=client-side-requirements><span class=secno>10.3.4.4 </span>Client-side requirements</h5>
<p><i>This section only applies to user agents, not to
servers.</i></p>
+ <p>User agents running in controlled environments, e.g. browsers on
+ mobile handsets tied to specific carriers, may offload the
+ management of the connection to another agent on the network. In
+ such a situation, the user agent for the purposes of conformance is
+ considered to include both the handset software and any such
+ agents.</p>
+
<p class=note>This specification doesn't currently define a limit
to the number of simultaneous connections that a client can
establish to a server.</p>
- <h6 id=opening-handshake-0><span class=secno>10.3.4.3.1 </span>Opening handshake</h6>
+ <h6 id=opening-handshake-0><span class=secno>10.3.4.4.1 </span>Opening handshake</h6>
<p>When the user agent is to <dfn id=establish-a-websocket-connection>establish a WebSocket
connection</dfn> to a host <var title="">host</var>, on a port <var title="">port</var>, from an origin whose <a href=#ascii-serialization-of-an-origin title="ASCII
@@ -73651,7 +73658,7 @@
</li>
- </ol><h6 id=data-framing><span class=secno>10.3.4.3.2 </span>Data framing</h6>
+ </ol><h6 id=data-framing><span class=secno>10.3.4.4.2 </span>Data framing</h6>
<p>Once a <a href=#websocket-connection-is-established>WebSocket connection is established</a>, the user
agent must run through the following state machine for the bytes
@@ -73836,7 +73843,7 @@
data. -->
- <h6 id=handling-errors-in-utf-8-from-the-server><span class=secno>10.3.4.3.3 </span>Handling errors in UTF-8 from the server</h6>
+ <h6 id=handling-errors-in-utf-8-from-the-server><span class=secno>10.3.4.4.3 </span>Handling errors in UTF-8 from the server</h6>
<p>When a client is to interpret a byte stream as UTF-8 but finds
that the byte stream is not in fact a valid UTF-8 stream, then any
@@ -73845,13 +73852,31 @@
- <h5 id=server-side-requirements><span class=secno>10.3.4.4 </span>Server-side requirements</h5>
+ <h5 id=server-side-requirements><span class=secno>10.3.4.5 </span>Server-side requirements</h5>
<p><i>This section only applies to servers.</i></p>
+ <p>Servers may offload the management of the connection to other
+ agents on the network, for example load balancers and reverse
+ proxies. In such a situation, the server for the purposes of
+ conformance is considered to include all parts of the server-side
+ infrastructure from the first device to terminate the TCP connection
+ all the way to the server that processes requests and sends
+ responses.</p>
- <h6 id="reading-the-client's-opening-handshake"><span class=secno>10.3.4.4.1 </span>Reading the client's opening handshake</h6>
+ <div class=example>
+ <p>For example, a data center might have a server that responds to
+ Web Socket requests with an appropriate handshake, and then passes
+ the connection to another server to actually process the data
+ frames. For the purposes of this specification, the "server" is the
+ combination of both computers.</p>
+
+ </div>
+
+
+ <h6 id="reading-the-client's-opening-handshake"><span class=secno>10.3.4.5.1 </span>Reading the client's opening handshake</h6>
+
<p>When a client starts a WebSocket connection, it sends its part of
the opening handshake. The server must parse at least part of this
handshake in order to obtain the necessary information to generate
@@ -74037,7 +74062,7 @@
doesn't support.</p>
- <h6 id="sending-the-server's-opening-handshake"><span class=secno>10.3.4.4.2 </span>Sending the server's opening handshake</h6>
+ <h6 id="sending-the-server's-opening-handshake"><span class=secno>10.3.4.5.2 </span>Sending the server's opening handshake</h6>
<p>When a client establishes a WebSocket connection to a server, the
server must run the following steps.</p>
@@ -74338,7 +74363,7 @@
- <h6 id=ws-sd-framing><span class=secno>10.3.4.4.3 </span>Data framing</h6>
+ <h6 id=ws-sd-framing><span class=secno>10.3.4.5.3 </span>Data framing</h6>
<p>The server must run through the following steps to process the
bytes sent by the client. If at any point during these steps a read
@@ -74461,7 +74486,7 @@
- <h6 id=handling-errors-in-utf-8-from-the-client><span class=secno>10.3.4.4.4 </span>Handling errors in UTF-8 from the client</h6>
+ <h6 id=handling-errors-in-utf-8-from-the-client><span class=secno>10.3.4.5.4 </span>Handling errors in UTF-8 from the client</h6>
<p>When a server is to interpret a byte stream as UTF-8 but finds
that the byte stream is not in fact a valid UTF-8 stream, behavior
@@ -74473,9 +74498,9 @@
- <h5 id=closing-the-connection><span class=secno>10.3.4.5 </span>Closing the connection</h5>
+ <h5 id=closing-the-connection><span class=secno>10.3.4.6 </span>Closing the connection</h5>
- <h6 id=client-initiated-closure><span class=secno>10.3.4.5.1 </span>Client-initiated closure</h6>
+ <h6 id=client-initiated-closure><span class=secno>10.3.4.6.1 </span>Client-initiated closure</h6>
<p>Certain algorithms require the user agent to <dfn id=fail-the-websocket-connection>fail the
WebSocket connection</dfn>. To do so, the user agent must
@@ -74510,7 +74535,7 @@
<li>A WebSocket server that abruptly closed the connection after
successfully completing the opening handshake.</li>
- </ul><h6 id=server-initiated-closure><span class=secno>10.3.4.5.2 </span>Server-initiated closure</h6>
+ </ul><h6 id=server-initiated-closure><span class=secno>10.3.4.6.2 </span>Server-initiated closure</h6>
<p>Certain algorithms require or recommend that the server
<dfn id=abort-the-websocket-connection>abort the WebSocket connection</dfn> during the opening
@@ -74518,7 +74543,7 @@
WebSocket connection</a>.</p>
- <h6 id=closure><span class=secno>10.3.4.5.3 </span>Closure</h6>
+ <h6 id=closure><span class=secno>10.3.4.6.3 </span>Closure</h6>
<p>To <dfn id=close-the-websocket-connection>close the WebSocket connection</dfn>, the user agent or
server must close the TCP connection, using whatever mechanism
@@ -74537,7 +74562,7 @@
- <h5 id=security-considerations><span class=secno>10.3.4.6 </span>Security considerations</h5>
+ <h5 id=security-considerations><span class=secno>10.3.4.7 </span>Security considerations</h5>
<p>While this protocol is intended to be used by scripts in Web
pages, it can also be used directly by hosts. Such hosts are acting
@@ -74574,9 +74599,9 @@
attacker could inject arbitrary frames into the data stream.</p>
- <h5 id=iana-considerations-0><span class=secno>10.3.4.7 </span>IANA considerations</h5>
+ <h5 id=iana-considerations-0><span class=secno>10.3.4.8 </span>IANA considerations</h5>
- <h6 id=registration-of-ws:-scheme><span class=secno>10.3.4.7.1 </span>Registration of <code title="">ws:</code> scheme</h6>
+ <h6 id=registration-of-ws:-scheme><span class=secno>10.3.4.8.1 </span>Registration of <code title="">ws:</code> scheme</h6>
<p>A <code title="">ws:</code> URL identifies a WebSocket server
and resource name.</p>
@@ -74639,7 +74664,7 @@
<dt>References.</dt>
<dd>This document.</dd>
- </dl><h6 id=registration-of-wss:-scheme><span class=secno>10.3.4.7.2 </span>Registration of <code title="">wss:</code> scheme</h6>
+ </dl><h6 id=registration-of-wss:-scheme><span class=secno>10.3.4.8.2 </span>Registration of <code title="">wss:</code> scheme</h6>
<p>A <code title="">wss:</code> URL identifies a WebSocket server
and resource name, and indicates that traffic over that connection
@@ -74702,7 +74727,7 @@
<dt>References.</dt>
<dd>This document.</dd>
- </dl><h6 id=registration-of-the-websocket-http-upgrade-keyword><span class=secno>10.3.4.7.3 </span>Registration of the "<code title="">WebSocket</code>" HTTP Upgrade keyword</h6>
+ </dl><h6 id=registration-of-the-websocket-http-upgrade-keyword><span class=secno>10.3.4.8.3 </span>Registration of the "<code title="">WebSocket</code>" HTTP Upgrade keyword</h6>
<dl><dt>Name of token.</dt>
<dd>WebSocket</dd>
@@ -74716,7 +74741,7 @@
<dt>References.</dt>
<dd>This document.</dd>
- </dl><h6 id=sec-websocket-key1-and-sec-websocket-key2><span class=secno>10.3.4.7.4 </span><dfn title=http-sec-websocket-key1><code>Sec-WebSocket-Key1</code></dfn> and <dfn title=http-sec-websocket-key2><code>Sec-WebSocket-Key2</code></dfn></h6>
+ </dl><h6 id=sec-websocket-key1-and-sec-websocket-key2><span class=secno>10.3.4.8.4 </span><dfn title=http-sec-websocket-key1><code>Sec-WebSocket-Key1</code></dfn> and <dfn title=http-sec-websocket-key2><code>Sec-WebSocket-Key2</code></dfn></h6>
<p>This section describes two header fields for registration in the
Permanent Message Header Field Registry. <a href=#refsRFC3864>[RFC3864]</a></p>
@@ -74758,7 +74783,7 @@
send data to unsuspecting WebSocket servers.</p>
- <h6 id=sec-websocket-location><span class=secno>10.3.4.7.5 </span><dfn title=http-sec-websocket-location><code>Sec-WebSocket-Location</code></dfn></h6>
+ <h6 id=sec-websocket-location><span class=secno>10.3.4.8.5 </span><dfn title=http-sec-websocket-location><code>Sec-WebSocket-Location</code></dfn></h6>
<p>This section describes a header field for registration in the
Permanent Message Header Field Registry. <a href=#refsRFC3864>[RFC3864]</a></p>
@@ -74786,7 +74811,7 @@
path are correct.</p>
- <h6 id=sec-websocket-origin><span class=secno>10.3.4.7.6 </span><dfn title=http-sec-websocket-origin><code>Sec-WebSocket-Origin</code></dfn></h6>
+ <h6 id=sec-websocket-origin><span class=secno>10.3.4.8.6 </span><dfn title=http-sec-websocket-origin><code>Sec-WebSocket-Origin</code></dfn></h6>
<p>This section describes a header field for registration in the
Permanent Message Header Field Registry. <a href=#refsRFC3864>[RFC3864]</a></p>
@@ -74813,7 +74838,7 @@
connection.</p>
- <h6 id=sec-websocket-protocol><span class=secno>10.3.4.7.7 </span><dfn title=http-sec-websocket-protocol><code>Sec-WebSocket-Protocol</code></dfn></h6>
+ <h6 id=sec-websocket-protocol><span class=secno>10.3.4.8.7 </span><dfn title=http-sec-websocket-protocol><code>Sec-WebSocket-Protocol</code></dfn></h6>
<p>This section describes a header field for registration in the
Permanent Message Header Field Registry. <a href=#refsRFC3864>[RFC3864]</a></p>
@@ -74842,7 +74867,7 @@
- <h5 id=using-the-websocket-protocol-from-other-specifications><span class=secno>10.3.4.8 </span>Using the WebSocket protocol from other specifications</h5>
+ <h5 id=using-the-websocket-protocol-from-other-specifications><span class=secno>10.3.4.9 </span>Using the WebSocket protocol from other specifications</h5>
<p>The WebSocket protocol is intended to be used by another
specification to provide a generic mechanism for dynamic
Modified: source
===================================================================
--- source 2010-07-21 07:05:56 UTC (rev 5174)
+++ source 2010-07-21 21:24:15 UTC (rev 5175)
@@ -81782,7 +81782,7 @@
<!--BOILERPLATE middle-ietf-conformance-->
<!--START complete--><!--START epub-->
- <h6>Terminology</h6>
+ <h5>Terminology</h5>
<!--END complete--><!--END epub-->
<p><dfn title="converted to ASCII lowercase">Converting a string to
@@ -81935,6 +81935,13 @@
<p><i>This section only applies to user agents, not to
servers.</i></p>
+ <p>User agents running in controlled environments, e.g. browsers on
+ mobile handsets tied to specific carriers, may offload the
+ management of the connection to another agent on the network. In
+ such a situation, the user agent for the purposes of conformance is
+ considered to include both the handset software and any such
+ agents.</p>
+
<p class="note">This specification doesn't currently define a limit
to the number of simultaneous connections that a client can
establish to a server.</p>
@@ -83125,7 +83132,25 @@
<p><i>This section only applies to servers.</i></p>
+ <p>Servers may offload the management of the connection to other
+ agents on the network, for example load balancers and reverse
+ proxies. In such a situation, the server for the purposes of
+ conformance is considered to include all parts of the server-side
+ infrastructure from the first device to terminate the TCP connection
+ all the way to the server that processes requests and sends
+ responses.</p>
+ <div class="example">
+
+ <p>For example, a data center might have a server that responds to
+ Web Socket requests with an appropriate handshake, and then passes
+ the connection to another server to actually process the data
+ frames. For the purposes of this specification, the "server" is the
+ combination of both computers.</p>
+
+ </div>
+
+
<h6>Reading the client's opening handshake</h6>
<p>When a client starts a WebSocket connection, it sends its part of
More information about the Commit-Watchers
mailing list