使用 websocket 的过程中,对它的概念产生了模糊,随即整理下,以便今后回顾。
WebSocket vs Socket
- Socket 是操作系统提供的一组网络编程接口(API),用于实现 TCP 或 UDP 协议通信,属于一种 编程接口抽象,工作在 传输层之上,为开发者提供对网络协议栈的访问能力。
- WebSocket 是一种基于 TCP 的 应用层协议,在连接建立初期通过 HTTP 协议进行握手,成功建立连接后,在这个 TCP 连接上进行全双工通信,它的设计目的是为了实现浏览器与服务器之间的 持久化、低开销、双向通信。
对比
对比项 | Socket | WebSocket |
---|---|---|
层级位置 | 抽象于传输层之上 | 应用层协议 |
基础协议 | TCP(或 UDP) | TCP |
连接方式 | 手动创建、管理连接 | 通过 HTTP 握手升级协议后建立 |
是否跨平台 | 是 | 是,且广泛用于浏览器环境 |
主要用途 | 网络通信底层接口(如 C/S 架构) | 浏览器与服务器实时通信(如聊天、游戏) |
使用语言 | 多语言支持(C/C++/Java/Python 等) | 多用于 Web 环境(JS/Node.js/Python 等) |
基于 TCP 的应用层协议
协议 | 说明 |
---|---|
WebSocket | 基于 TCP 的双向通信协议,先通过 HTTP/HTTPS 握手,然后升级到 TCP 连接 |
HTTP | 万维网传输协议 |
HTTPS | HTTP + TLS 加密 |
FTP | 传统文件传输协议 |
SFTP | 通过 SSH 实现的安全文件传输协议 |
SSH | 安全远程登录协议 |
SMTP | 邮件发送协议 |