websocket
梓泓 2020-07-12 h5
# 1. websocket简介
Websocket是应用层第七层上的一个高级协议,其目的是实现服务器和客户端双向平等对话,进行长连接交流。它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输(传输层),与 HTTP 无关了。即:websocket分为握手和数据传输阶段,即进行了HTTP握手 + 双工的TCP连接。
# 2. websocket原理
1. 第一次连接通过http协议告诉服务器进行websocket协议数据连接(第一次握手)
2. 通过验证后,通过tcp协议进行数据连接(n次握手,n不等于1)
# 3. websocket特点
1. 建立在 TCP 协议之上,服务器端的实现比较容易。
2. 与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
3. 数据格式比较轻量,性能开销小,通信高效。
4. 可以发送文本,也可以发送二进制数据。
5. 没有同源限制,客户端可以与任意服务器通信。
6. 协议标识符是ws(如果加密,则为wss)。
- Socket 其实并不是一个协议。它工作在 OSI 模型会话层(第5层),是为了方便大家直接使用更底层协议(一般是 TCP 或 UDP )而存在的一个抽象层。
- tcp协议属于传输层,大部分高级协议都是对tcp的封装。
- http,websocket协议属于高级协议,在应用层。