You may feel that the wording of your note is not pejorative (because what
you wanted to say is so much more so), but the tone and wording come across
that way even if it is technically accurate.
Having a note in the spec that WebSocket connections over port 80 and 443
wlll have traffic patterns that are substantially different than normal HTTP
patterns and how this might impact existing infrastructure is probably
worthwhile but I don't think most of your note is helpful or serves much
purpose (except as a passive aggressive way to express an opinion that the
current WebSocket protocol is fatally flawed).
Just one example: "convoluted and inefficient". A simple 4-byte running XOR
hash is convoluted? Certainly it's slightly more complicated than raw bytes
or plain text. But convoluted seems like a stretch by any measure.
Inefficient? Again, it's obviously more inefficient than just passing bytes,
but if you are going to do an operation to a series of bytes, it doesn't get
much more efficient than XOR. And there was a fair bit of testing of the
efficiency of different hashing algorithms on different platforms and this
current algorithm was deemed not overly inefficient (if you disagree, please
So I think your real objection is that the current WebSocket protocol is
more complicated and more inefficient than if WebSockets used a new set of
well defined ports (without the ability to pick other ports, or with 80 and
443 explicitly disallowed or the same problem crops up again) and was able
to safely send data without hashing. In which case I think your real
disagreement is not with the outcome of the working group but with
requirement #7 (#6 in the original) of the WebSocket requirements document:
Personally, I think the ability to use port 80 and 443 for WebSockets is
valuable and worthwhile and I agree with the requirement. But those ports
are not mandatory (just defaults) and if it turns out that this is a mistake
then it really isn't that difficult for web servers to deny WebSocket
handshakes on port 80,443 and force WebSocket services to use other ports.
It would also be simple to update the spec in the future and make
client-to-server masking optional for ports that are not 80/443.
On Sat, Sep 3, 2011 at 12:03 PM, Roy T. Fielding <fielding(_at_)gbiv(_dot_)com>
I don't know if this is a cultural issue or not, but neither of those
changes is an improvement, nor should they be any less offensive.
Convoluted and inefficient describes the hashing algorithm in the
least offensive way possible -- "complex" doesn't say anything.
There are a lot of complex algorithms (e.g., TLS) that are
And I gave the sole reason the WG has for using those ports -- I don't
want people to imagine there might be any other (sane, unselfish, etc.)
Besides, what I wrote is entirely factual -- the offensive version
would have melted your LCD.
On Sep 3, 2011, at 6:17 AM, Julian Reschke wrote:
On 2011-09-03 12:54, Julian Reschke wrote:
I believe that almost everything Roy says below is non-controversial; if
we can tune the language to be less offensive it might fit well into the
Introduction (and not require an IESG Note to get into the document).
Best regards, Julian
The WebSocket protocol is designed with an assumption that
TCP port 80 or 443 will be used for the sake of tunneling raw
socket exchanges over HTTP. The result is a convoluted and
inefficient exchange of hashed data for the sake of bypassing
s/convoluted and inefficient/complex/
intermediaries that may be routing, authenticating, filtering,
or verifying traffic on those ports. The sole reason for using
ports 80 and 443, and hence requiring the hashed data exchange,
is because many organizations use TCP port blocking at firewalls
to prevent unexpected network traffic, but allow the HTTP ports
to remain open because they are expected to be used for normal
Web request traffic. WebSocket deliberately bypasses network
management constraints in order to enable Web application
developers to send arbitrary data though a trusted port.
Naturally, the WebSocket protocol does not have the same network
characteristics as HTTP. The messages exchanged are likely to
be smaller, more interactive, and delivered asynchronously over
a long-lived connection. Unfortunately, those are the same
characteristics of typical denial-of-service attacks over HTTP.
Organizations deploying WebSockets should be aware that existing
network equipment or software monitoring on those ports may need
to be updated or replaced.
Best regards, Julian
hybi mailing list
hybi mailing list
Ietf mailing list