惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
S
Security @ Cisco Blogs
S
Secure Thoughts
Attack and Defense Labs
Attack and Defense Labs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hacker News: Front Page
博客园 - 叶小钗
H
Heimdal Security Blog
Microsoft Security Blog
Microsoft Security Blog
Forbes - Security
Forbes - Security
AI
AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
爱范儿
爱范儿
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Schneier on Security
Schneier on Security
C
Cisco Blogs
美团技术团队
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
月光博客
月光博客
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
Arctic Wolf
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
N
News and Events Feed by Topic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
G
GRAHAM CLULEY
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News

博客园 - 悠哉大斌

AI Agent 安全沙箱技术对比:E2B、Cube Sandbox 与 Docker Sandboxes linux 升级 claude code的坑 debian(WSL) apt 代理配置 linux内核之Namespaces、Cgroups、Capabilities、Seccomp和Landlock 大语言模型推理中的隐藏瓶颈及其解决方法 Docker Sandboxes 技术是什么,和docker容器有什么区别 什么是 Docker Agent以及一个Docker Agent示例 windows wsl 安装 Temurin® JDK claude Code 和 codex 作为编程代理,前者使用typescript开发,后者使用rust,他们的决策依据是什么 Java 并发编程发展史与 java.util.concurrent 全景解析 LLM 真的改变了编码风格吗? 如果人工智能会犯错且不精确,为什么它正在改变世界? Python 的协程模型和 JavaScript 的 async/await python闭包和function.__closure__特殊属性 python 的 dunder name和 sunder name 基于nodejs设计REST API的知名开源框架 windows上使用node-oracledb Thick 模式连接 Oracle 11g Claude Code CLI连接 DeepSeek V4模型后调用报400错误 python里对象(object)到底是什么 Python 泛型演变史 Python 类型别名的演变 Python 类型提示的演变史 PEP 593 新增的Annotated 类型 Alibaba AgentScope 和 microsoft agent framework 详细对比分析 spring AI Alibaba Agent Framework 和 agentscope有什么区别和联系 AI Agent协作模式以及主流开源框架对协作模式的支持 Tailscale 是如何接管 DNS 的? Agent = Model + Harness 使用rust编写typescript编译器的难点在什么地方,哪些数据结构是rust不擅长的? TypeScript/JavaScript 中的异步迭代语句 js中的生成器函数 Tailscale Serve and Funnel openclaw gateway的网络绑定模式 MCP通信的双方是谁? claude code MCP 安装范围 如何在wsl2环境下给claude code cli 配置 playwright-mcp wsl的网络模式有哪几种,有哪些区别? AI Agent memory是什么? ai agent skills是什么? Go测试生态系统工具与最佳实践深度调研(聚焦认证授权系统) 线性代数中常见矩阵类型的概念关系思维导图 三种主流授权策略
websocket协议和http协议有何依赖关系?
悠哉大斌 · 2026-02-02 · via 博客园 - 悠哉大斌

WebSocket 协议与 HTTP 协议的依赖关系可精准概括为:WebSocket 在连接建立阶段单向依赖 HTTP/HTTPS 协议完成握手升级,但连接建立后的通信完全脱离 HTTP,使用独立的二进制帧协议。二者并非父子协议或全程绑定关系。

🔑 核心依赖细节

  1. 握手阶段(唯一依赖点)

    • 客户端发起标准 HTTP/1.1 GET 请求(含关键头):
      Upgrade: websocket
      Connection: Upgrade
      Sec-WebSocket-Key: [随机值]
      Sec-WebSocket-Version: 13
      
    • 服务器验证后返回 HTTP/101 Switching Protocols 响应,完成协议切换。
    • 此过程必须通过 HTTP/HTTPS 语义实现,是 WebSocket 唯一依赖 HTTP 的环节。
  2. 连接建立后(完全独立)

    • TCP 连接被复用,但通信协议切换为 WebSocket 专属帧格式(含文本/二进制数据帧、Ping/Pong 心跳、关闭帧等)。
    • 不再解析 HTTP 头、无请求-响应模型、无状态管理,与 HTTP 协议栈彻底解耦。

🌐 设计意图与优势

  • 基础设施兼容:复用 HTTP 默认端口(80/443),轻松穿越防火墙、代理、负载均衡器(这些设备通常放行 HTTP 流量)。
  • 平滑演进:利用现有 HTTP 服务器生态(如 Nginx 反向代理 WebSocket 握手),降低部署成本。
  • 安全延续wss:// 基于 HTTPS(TLS 加密),握手在加密通道内完成,继承 TLS 安全性。

⚠️ 常见误区澄清

误区 正确理解
“WebSocket 是 HTTP 的扩展” WebSocket 是独立协议(RFC 6455),仅握手借用 HTTP 语法
“全程使用 HTTP 传输数据” 握手后数据通过 WebSocket 帧传输,与 HTTP 无关
“HTTP 依赖 WebSocket” 依赖是单向的(WebSocket → HTTP),HTTP 可完全独立存在
“HTTP/2 原生支持 WebSocket” HTTP/2 对 WebSocket 支持有限(RFC 8441 定义,但主流实现仍基于 HTTP/1.1 握手;部分服务器/客户端兼容性存疑)

⚠️ 为什么不能绕过 HTTP 握手?

  1. 安全机制

    • Sec-WebSocket-Key/Origin 头防止跨协议攻击(如缓存投毒、代理混淆)。
    • 早期草案(hixie-76)因安全缺陷被废弃,HTTP 握手是安全加固结果。
  2. 基础设施兼容

    • 复用 80/443 端口,穿越防火墙/代理/CDN(这些设备识别 HTTP 语义)。
    • 若自定义握手,会被中间设备(如 Squid 代理)丢弃或篡改。
  3. 标准化要求

    • IETF 将 WebSocket 定义为 HTTP 的协议升级机制(RFC 6455 §1.9),非独立传输层协议。

💡 附加说明

  • URI 对应ws:// ≈ HTTP(明文),wss:// ≈ HTTPS(加密)。
  • 代理挑战:部分老旧代理可能丢弃 Upgrade 头,导致握手失败(需配置代理支持)。
  • 协议定位:HTTP 适用于无状态请求-响应场景;WebSocket 专为全双工、低延迟、长连接场景设计(如实时聊天、游戏、金融行情)。

总结:WebSocket 巧妙“借用” HTTP 完成初始握手以提升部署可行性,但其核心价值恰恰在于摆脱 HTTP 的语义束缚,实现高效双向通信。这种“握手依赖、通信独立”的设计是协议工程中兼容性与创新性的经典平衡。