WebSocket 协议

1. WebSocket 协议开发.

  WebSocket 是 HTML5 开始提供的一种浏览器与服务器间进行全双工通信的网络技术,WebSocket通讯协议于2011年被IETF定为标准 RFC6455 , WebSocket API 被W3C定为标准.web

  在 WebSocket API中,浏览器和服务器只须要作一个握手的动做,而后浏览器和服务器之间就造成了一条快熟通道,二者就能够直接互相传送数据了,WebSocket基于TCP双向全双工进行消息传递,在同一时刻,既能够发送消息,也能够接受消息,相比于HTTP的半双工协议,性能获得很大的提高.浏览器

 

2. WebSocket 和 HTTP的弊端

2.1 HttP 协议的弊端

  1. HTTP协议为半双工协议;
  2. HTTP消息冗长而繁琐 ,例如 HTTP消息包含消息头,消息体,换行符等,一般状况下采用文本方式传输,相比于其余的二进制通信协议,冗长而繁琐
  3. 针对服务器推送的黑客攻击, 例如 长时间轮询

2.2 WebSocket 的特色.

  1. 单一的TCP连接,采用全双工模式通讯;
  2. 对代理,防火墙和路由透明;
  3. 无头部信息,Cookie 和身份验证;
  4. 无安全开销;
  5. 经过 "ping/pong" 帧保持链路活跃;
  6. 服务器能够主动传递消息给客户端,不在须要客户端轮询;

 

 

3. WebSocket 链接创建

创建 WebSocket 链接时,须要经过客户端或者浏览器发送握手请求, 消息示例以下:安全

  为了创建一个WebSocket链接,客户端浏览器首先要向服务器发起一个HTTP请求,这个请求和一般的HTTP请求不一样,它包含了一些附加的头信息, Upgrade: WebSocket 代表这是一个申请协议升级的HTTP请求,服务器解析这些附加的头信息,而后生成应答信息返回给客户端,客户端和服务端的WebSocket链接就创建起来了,双发能够经过这个链接诶通道自由地传递信息,而且这个链接会持续存在直到客户端或者服务端的某一方主动关闭链接服务器

  请求消息中的 "Sec-WebSocket-Key" 是随机的, 服务端会用这些数据来构造出一个 SHA-1 的信息摘要,把 "Sec-WebSocket-Key" 上一个魔幻字符串 , 使用 SHA-1加密,而后进行BASE-64编码,将结果做为 "Sec-websocket-Accept" 的值,返回给客户端.websocket

 

4.WebSocket 的生命周期

  握手成功以后,服务端和客户端就能够经过 "message" 的方式进行通信了,一个消息由一个或多个帧组成, WebSocket 的消息并不必定对应一个网络层的帧,他能够被分割成多个帧或者被合并.网络

 

 

 

内容初自 : <Netty 权威指南>socket

相关文章
相关标签/搜索