
http://jinnianshilongnian.iteye.com/
Internet Engineering Task Force (IETF) I. Fette
Request for Comments: 6455 Google, Inc.
Category: Standards Track A. Melnikov
ISSN: 2070-1721 Isode Ltd.
December 2011
张开涛 [译]
WebSocket 协议

http://jinnianshilongnian.iteye.com/
摘要
WebSocket 协议实现在受控环境中运行不受信任代码的一个客户端到一个从该
代码已经选择加入通信的远程主机之间的全双工通信。用于这个的安全模型是通
常由 web 浏览器使用的基于来源的安全模型。该协议包括一个打开阶段握手、接
着是基本消息帧、TCP 之上的分层(layered over TCP)。该技术的目标是为需
要与服务器全双工通信且不需要依赖打开多个 HTTP 连接(例如,使用
XMLHttpRequest 或<iframe>和长轮询)的基于浏览器应用的提供一种机制。
本备忘录状态
这是一个 Internet 标准跟踪文档。
本文档是互联网工程任务组(IETF)的一个产物。它代表了 IETF 社区的共识。
它已接受公共审查和已经被互联网工程指导委员会(IESG)认可发布。Internet
标准的更多信息可在 RFC 5741第2节找到。
本文档的当前状态信息、任何勘误表以及如何提供它的反馈,可于
http://www.rfc-editor.org/info/rfc6455获取。
版权声明
版权所有(C) 2011 IETF 信托和确认为文档作者的人。保留所有权利。
本文档遵守 BCP 78 和涉及 IETF 文档(http://trustee.ietf.org/license-info
)
的在本文档发布之日起生效的 IETF 信托的法律条文。请仔细阅读这些文档,因
为他们描述了关于本文档的你的权利和限制。从本文档中提取的代码组件必须包
括描述在第四章的简体 BSD License 文件。e 的信托法律条文并提供,不保证描
述在简体 BSD License 中。

http://jinnianshilongnian.iteye.com/
目录
摘要 ..............................................................................................................................2
本备忘录状态 ..............................................................................................................2
版权声明 ......................................................................................................................2
目录 ..............................................................................................................................3
1.引言 ............................................................................................................................6
1.1.背景 .................................................................................................................6
1.2.协议概述 .........................................................................................................7
1.3.打开阶段握手 .................................................................................................8
1.4.关闭阶段握手 ...............................................................................................10
1.5.设计理念 .......................................................................................................11
1.6.安全模型 .......................................................................................................12
1.7.与 TCP 和 HTTP 的关系 .............................................................................12
1.8.建立连接 .......................................................................................................12
1.9.使用 WebSocket 协议的子协议 ..................................................................13
2.一致性要求 ..............................................................................................................14
2.1.术语和其他约定 ...........................................................................................14
3.WebSocket URI.........................................................................................................16
4.打开阶段握手 ..........................................................................................................17
4.1.客户端要求 ...................................................................................................17
4.2.服务器端要求 ...............................................................................................21
4.2.1.读取客户端的打开阶段握手 ............................................................21
4.2.2.发送服务器的打开阶段握手 ............................................................22
4.3.为握手中使用的新的头字段整理的 ABNF................................................25
4.4.支持多个版本的 WebSocket 协议 ..............................................................27
5.数据帧 ......................................................................................................................29
5.1 概述 ...............................................................................................................29
5.2 基本帧协议 ...................................................................................................29
5.3.客户端到服务器掩码 ...................................................................................35
5.4.分片(Fragmentation) ................................................................................36
5.5.控制帧 ...........................................................................................................37
5.5.1.Close ...................................................................................................38
5.5.2. Ping ....................................................................................................38
5.5.3. Pong ...................................................................................................39
5.6.数据帧 ...........................................................................................................39
5.7.示例 ...............................................................................................................40
5.8.可扩展性 .......................................................................................................40
6.发送和接收数据 ......................................................................................................42
6.1.发送数据 .......................................................................................................42
6.2.接收数据 .......................................................................................................42
7.关闭连接 ..................................................................................................................44
7.1.定义 ...............................................................................................................44

http://jinnianshilongnian.iteye.com/
7.1.1.关闭 WebSocket 连接 .......................................................................44
7.1.2.启动 WebSocket 关闭阶段握手 .......................................................44
7.1.3. WebSocket 关闭阶段握手已启动 ...................................................44
7.1.4. WebSocket 已关闭 ...........................................................................44
7.1.5.WebSocket 连接关闭代码 ................................................................45
7.1.6. WebSocket 连接关闭原因 ...............................................................45
7.1.7.失败 WebSocket 连接 .......................................................................45
7.2.异常关闭 .......................................................................................................46
7.2.1.客户端发起的关闭 ............................................................................46
7.2.2.服务端发起的关闭 ............................................................................46
7.2.3.从异常关闭中恢复 ............................................................................46
7.3.正常连接关闭 ...............................................................................................47
7.4.状态码 ...........................................................................................................47
7.4.1 定义的状态码 ...................................................................................47
7.4.2. 保留的状态码范围 ..........................................................................49
8.错误处理 ..................................................................................................................50
8.1.处理 UTF-8 编码数据的错误 ......................................................................50
9.扩展 ..........................................................................................................................50
9.1.协商扩展 .......................................................................................................50
9.2.已知扩展 .......................................................................................................52
10.安全注意事项 ........................................................................................................52
10.1.非浏览器客户端 .........................................................................................52
10.2. Origin 注意事项 ........................................................................................52
10.3.攻击基础设施(掩码)..............................................................................52
10.4.实现特定限制 .............................................................................................54
10.5.WebSocket 客户端验证 .............................................................................54
10.6.连接的保密性和完整性 .............................................................................54
10.7.处理无效数据 .............................................................................................54
10.8.使用 SHA-1 的 W
ebSocket 握手 ...............................................................55
11. IANA 考虑 ............................................................................................................55
11.1.注册新的 URI 模式 ....................................................................................55
11.1.1.注册“ws“模式 ..................................................................................55
11.1.2.注册”wss“模式 ................................................................................56
11.2.注册”WebSocket“ HTTP Upgrade 关键字 ................................................58
11.3.注册新的 HTTP 头字段 .............................................................................58
11.3.1. Sec-WebSocket-Key ........................................................................58
11.3.2. Sec-WebSocket-Extensions..............................................................59
11.3.3. Sec-WebSocket-Accept....................................................................60
11.3.4. Sec-WebSocket-Protocol..................................................................61
11.3.5.Sec-WebSocket-Version....................................................................62
11.4.WebSocket 扩展名注册 ..............................................................................63
11.5.WebSocket 子协议名注册 ..........................................................................63
11.6.WebSocket 版本号注册 ..............................................................................64
11.7.WebSocket 关闭代码注册 ..........................................................................65

http://jinnianshilongnian.iteye.com/
11.8.WebSocket 操作码注册 ..............................................................................67
11.9.WebSocket 帧头位注册 ..............................................................................68
12.其他规范使用 WebSocket 协议 ...........................................................................68
13.致谢 ........................................................................................................................69
14.参考资料 ................................................................................................................70
14.1.参考标准 .....................................................................................................70
14.2.参考资料 .....................................................................................................70