Socket vs WebSocket

三个字母,本质上差了一整层协议栈

层级 Socket WebSocket
所属层级 传输层(TCP/UDP) 应用层(HTTP之上)
连接方式 直接建立 TCP/UDP 连接 先通过 HTTP 握手,再升级为 WebSocket 连接
数据格式 二进制字节流 帧(Frame)结构,可是文本帧/二进制帧
通信方向 默认是双向(TCP流) 真正的全双工通信,浏览器可直接收发
典型端口 TCP: 80/443/任意 ws:// 用80,wss:// 用443
使用场景 程序间通信、嵌入式、底层传输 浏览器实时通信(IM、推送、视频)

Socket 是"机制",WebSocket 是"协议"

1、Socket 是操作系统提供的 通信接口

它是"怎么通信"的底层通道。

举个例子:

复制代码
// TCP Socket
int fd = socket(AF_INET, SOCK_STREAM, 0);
connect(fd, ...);
send(fd, buf, len, 0);
recv(fd, buf, len, 0);

这只是两端程序之间的字节流,谁都可以定义内容(比如你定义 JSON 协议、自定义命令)。


2、WebSocket 是建立在 HTTP 上的一种 应用层协议

它定义了"浏览器如何与服务器保持长连接"的标准做法。

握手过程(HTTP 请求头):

复制代码
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: ...

服务器响应:

复制代码
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: ...

握手成功后,HTTP连接升级为 WebSocket 通道(TCP 长连接),之后就可以实时收发数据。


⚙️ 三、关系图一看就懂

复制代码
浏览器 <---HTTP握手---> 服务器
           ↓ 升级
      <=== WebSocket 全双工通道 ===>

底层仍然是:
  TCP Socket → send()/recv()

也就是说:

WebSocket 本质上是用 HTTP 协商,然后在 TCP Socket 上跑自定义的帧格式。

场景 推荐协议 说明
C++ 程序 ↔ C++ 程序 原生 Socket (TCP/UDP) 性能高、自由度高
浏览器 ↔ 后端服务 WebSocket 兼容 Web 平台、可穿透防火墙
短期请求 HTTP/HTTPS 一次性通信(REST API)
长期实时通信 WebSocket 实时推送、消息同步
类比 Socket WebSocket
比喻 电话线路 打电话的"约定规则"
你负责 拨号、接通、收发电流 用标准话语通话
特点 自由、裸数据 标准化、跨平台

Socket 是通信的"工具"
WebSocket 是一种基于 Socket 的"通信协议"

专为浏览器实时通信设计。

相关推荐
马猴烧酒.3 分钟前
【面试八股|计算机网络】计算机网络常见面试题详解笔记
java·开发语言·网络·笔记·计算机网络·算法·面试
Hello World . .4 分钟前
51单片机——UART 串口通信
网络·嵌入式硬件·51单片机
Ronin3056 分钟前
【Qt系统相关】Qt系统相关
网络·qt·音视频·多线程·定时器·事件·qt文件
醇氧8 分钟前
【学习】封锁协议
网络·学习·oracle
徐子元竟然被占了!!22 分钟前
ISIS实验1
网络
广州赛远24 分钟前
埃夫特ER6L码垛机器人防护服等级解析:避开选型误区与性能陷阱
网络·人工智能
黄昏恋慕黎明26 分钟前
网络聊天室测试报告
网络
2301_8059629329 分钟前
ESP32 HTTP OTA 本地测试教程
网络·网络协议·http
小陈工32 分钟前
ModelEngine智能体开发实战:知识库自动生成与多Agent协作
大数据·网络·数据库·人工智能·python·django·异步
奥地利落榜美术生灬33 分钟前
图床项目总结
网络