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 的"通信协议"

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

相关推荐
踏浪无痕1 小时前
线上偶发 502 排查:用 Netty 成功复现 KeepAlive 时间窗口案例实战(附完整源码)
运维·网络协议
shmexon1 小时前
上海兆越亮相无锡新能源盛会,以硬核通信科技赋能“能碳未来”
网络·人工智能
javaの历练之路1 小时前
基于 SpringBoot+Vue2 的前后端分离博客管理系统(含 WebSocket+ECharts)
spring boot·websocket·echarts
北京耐用通信2 小时前
告别“牵一发而动全身”:耐达讯自动化Profibus PA分线器为石化流量计网络构筑安全屏障
人工智能·网络协议·安全·自动化·信息与通信
Sinowintop2 小时前
易连EDI-EasyLink无缝集成之消息队列Kafka
分布式·网络协议·kafka·集成·国产化·as2·国产edi
Lay_鑫辰2 小时前
西门子诊断-状态和错误位(“轴”工艺对象 V1...3)
服务器·网络·单片机·嵌入式硬件·自动化
车载测试工程师3 小时前
CAPL学习-IP API函数-2
网络·学习·tcp/ip·capl·canoe
Xの哲學3 小时前
Linux 指针工作原理深入解析
linux·服务器·网络·架构·边缘计算
Pocker_Spades_A4 小时前
在家搭个私人网盘?用 Nextcloud+cpolar 突破局域网限制
网络
车载测试工程师4 小时前
CAPL学习-IP API函数-1
网络·学习·tcp/ip·capl·canoe·doip