websocket底层处理粘包_WebSocket 原理与常见问题及解决方法

定义

WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。

原理

WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。

产生背景

HTTP只能由客户端发起,如果服务器连续状态变化,只能使用"轮询",效率低,资源浪费。

比较HTTP

相同点

基于TCP的应用层的传输协议

不同点

WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的

特点

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

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

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

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

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

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

连接过程

浏览器、服务器建立TCP连接,三次握手。这是通信的基础,传输控制层,若失败后续都不执行。

TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket支持的版本号等信息。(开始前的HTTP握手)

服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。<

你可能感兴趣的:(websocket底层处理粘包)