网络应用层之websocket

发布于 2017-11-01 · 本文总共 1336 字 · 阅读大约需要 4 分钟

websocket

WebSocket允许服务器和客户端进行全双工通信,传统的HTTP是单双工通信,它只能允许客户端向服务器发出请求,服务端被动返回数据,而不能主动向客户端传递数据。 WebSocket可以完全取代Ajax,用来向服务器传递字符串,二进制等多种类型的数据,而且还不存在跨域问题。

特点

WebSocket协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。

最大的特点:服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

(1)建立在 TCP 协议之上,服务器端的实现比较容易。

(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

(3)数据格式比较轻量,性能开销小,通信高效。

(4)可以发送文本,也可以发送二进制数据。

(5)没有同源限制,客户端可以与任意服务器通信。

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

传输流程

为了建立一个WebSocket连接,客户端浏览器首先要向服务器发起一个HTTP请求, 这个请求和通常的HTTP请求不同,包含了一些附加头信息, 其中附加头信息”Upgrade: WebSocket”表明这是一个申请协议升级的 HTTP 请求, 服务器端解析这些附加的头信息然后产生应答信息返回给客户端, 客户端和服务器端的WebSocket连接就建立起来了,双方就可以通过这个连接通道自由的传递信息, 并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。

WebSocket的通信协议

WebSocket与TCP、HTTP的关系:WebSocket与http协议一样都是基于TCP的,所以他们都是可靠的协议, Web开发者调用的WebSocket的send函数在browser的实现中最终都是通过TCP的系统接口进行传输的。

WebSocket和Http协议一样都属于应用层的协议:
WebSocket在建立握手连接时,数据是通过http协议传输的,但是在建立连接之后, 真正的数据传输阶段是不需要http协议参与的。

WebSocket的优点

a)、服务器与客户端之间交换的标头信息很小,大概只有2字节;

b)、客户端与服务器都可以主动传送数据给对方;

c)、不用频繁创建TCP请求及销毁请求,减少网络带宽资源的占用,同时也节省服务器资源;

WebSocket的数据传输

WebScoket协议中,数据以帧序列的形式传输。 若服务器接收到客户端的未经掩码处理的数据帧时,必须主动关闭连接。 若客户端收到经过掩码处理过的数据帧时,必须主动关闭连接,即客户端收到的数据帧不能进行掩码处理。

WebSocket和HTTP的比较

相同点:

都属于应用层的协议。
都使用Request/Response模型进行连接的建立。
都可以在网络中传输数据。

不同点:

ws使用HTTP来建立连接,但是定义了一系列新的header域,这些域在HTTP中并不会使用。
ws连接建立之后,通信双方都可以在任何时刻向另一方发送数据。
ws连接建立之后,数据的传输使用帧来传递,不再需要Request消息。
ws的数据帧有序。




本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:邱文奇(qiuwenqi)的博客;
内容系本人学习、研究和总结,如有雷同,实属荣幸!
阅读次数:

文章评论

comments powered by Disqus


章节列表