跳到主要内容

WebSocket帧解码器 (RFC 6455)

粘贴原始WebSocket帧字节(十六进制或二进制)并逐字段解码RFC 6455头部 — FIN、RSV、opcode、MASK、7/16/64位负载长度形式、掩码密钥和XOR反掩码负载 — 包括字节偏移量详细信息。

输入

输出

帧字段

结果
字段
No data yet

字节结构

结果
偏移量字节 (hex)部分解码后
No data yet

负载

结果
字段
No data yet

JSON导出

JSON
 
这对您有帮助吗?

使用指南

什么是WebSocket帧?

通过WebSocket连接发送的每条消息都被包装在一个中 — 一个小的二进制头部(RFC 6455 §5.2定义)后跟有效载荷数据。头部将几个字段紧凑地打包到前一或两个字节中:FIN位、三个RSV(保留)位、标识帧类型(text、binary、ping、pong、close…)的4位opcodeMASK位和有效载荷长度,可以根据有效载荷大小采用三种不同的字节宽度。如果帧被掩码化,有效载荷也会在您读取之前与4字节的掩码密钥进行XOR运算。这些东西肉眼看不出来 — 该工具逐字段解码。

如何使用

  1. 十六进制粘贴原始帧字节(用空格、冒号或0x分隔 — 81 05 48 65 6c 6c 6f0x81,0x05,0x48,0x65,0x6c,0x6c,0x6f都可以工作)或作为二进制位字符串(例如10000001 00000101 ...)。
  2. Frame Fields显示FIN、RSV1–3、opcode(带其名称)、MASK、原始7位长度字段和实际解析的有效载荷长度、掩码密钥(如果有)和任何协议警告。
  3. Byte Structure按字节偏移量分解帧 — 哪些字节组成头部、扩展长度(如果存在)、掩码密钥(如果存在)和有效载荷 — 镜像RFC 6455图表中的布局。
  4. Payload显示接收到的有效载荷(如果适用,仍被掩码化)、XOR未掩码的十六进制以及 — 对于文本帧 — 解码的UTF-8文本。关闭帧将其2字节状态码和UTF-8原因短语单独分割。
  5. JSON Export将相同的解码字段作为单个JSON对象提供,用于脚本或错误报告。

三种有效载荷长度形式

第二个字节的低7位编码长度,但它们携带的含义取决于该值:

  • 0–125 — 这是实际的有效载荷长度。
  • 126实际长度作为接下来的2个字节(大端字节序、无符号16位)。
  • 127实际长度作为接下来的8个字节(大端字节序、无符号64位;最高有效位必须按RFC为0)。

掩码化

客户端到服务器的帧必须被掩码化(MASK=1) — 有效载荷针对紧跟长度字段之后的4字节掩码密钥进行XOR运算,密钥每4字节循环一次(payload[i] XOR key[i mod 4])。服务器到客户端的帧通常不被掩码化。该工具在MASK=1时自动进行反掩码,并显示原始的和未掩码的十六进制,以便您可以比较。

该工具标记为警告的内容

  • 控制帧(close/ping/pong、opcode 0x8–0xA)的FIN=0,或有效载荷超过125字节 — 按RFC 6455 §5.5两者都无效(控制帧不能被分片或携带大有效载荷)。
  • 任何设置的RSV位,但没有商定的扩展来定义它。
  • 保留opcode(0x3–0x7或0xB–0xF) — 没有扩展则未定义。
  • 截断的帧 — 声明的长度超过实际提供的字节。

该工具执行的操作

解码已捕获的单个帧的头部 — 不打开活动WebSocket连接、不将碎片化帧序列(opcode 0x0继续帧)重新组装为一条逻辑消息、不验证任何WebSocket流量之前的HTTP Upgrade握手。

FAQ

我在哪里可以获得要粘贴的原始帧字节? 从浏览器的DevTools网络面板(WS选项卡 → 单击一个帧 → 原始字节)、从数据包捕获(Wireshark的"Follow → WebSocket Stream"或TCP有效载荷的十六进制视图)或从代理工具如Burp/mitmproxy获取它们。

为什么我的输入无法解析? 帧头部至少为2字节 — 确保您粘贴了完整的帧,而不仅仅是有效载荷。十六进制输入需要偶数个十六进制数字;二进制输入需要位数为8的倍数。

我的数据会上传到任何地方吗? 不会 — 解码完全在您的浏览器中运行。您粘贴的任何内容都不会离开您的设备。

相关工具

rfc6455wsopcodehandshakehexprotocolmaskpingpongnetwork

使用此工具的更多方式

REST API

curl -X POST https://api.iotools.cloud/v1/tool/websocket-frame-decoder \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "frameInput": "81 05 48 65 6c 6c 6f"
  }'

替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。

让 AI 代理执行

Use the IOTools `websocket-frame-decoder` tool (WebSocket Frame Decoder (RFC 6455)) on this input:

YOUR_INPUT_HERE

将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。

嵌入式小组件

<iframe
  src="https://iotools.cloud/embed/websocket-frame-decoder/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="WebSocket帧解码器 (RFC 6455) — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

把它放到您自己的页面上——免费,无需密钥,只需保留一个反向链接。

每次调用费用5 积分起

也可通过

喜欢这些工具?去掉广告吧。

一次性付款即可永久移除您账户中的所有广告。无需订阅,不追踪。