メインコンテンツにスキップ

WebSocketフレームデコーダー (RFC 6455)

WebSocketフレームの生バイト (16進数またはバイナリ) を貼り付けて、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で定義)の後にペイロードデータが続く形です。ヘッダーは最初の1〜2バイトに複数のフィールドをコンパクトにパック: FINビット、3つのRSV(リザーブ)ビット、フレームタイプ(text、binary、ping、pong、close…)を識別する4ビットのopcodeMASKビット、およびペイロードのサイズに応じて3つの異なるバイト幅を取ることができるペイロード長。フレームがマスクされている場合、ペイロードはあなたがそれを読む前に4バイトのマスキングキーに対してXORされます。これらのことは目で読むことはできません — このツールはそれをフィールドごとにデコードします。

使い方

  1. 16進数として生フレームバイトを貼り付けます(スペース、コロン、または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非マスク16進数、およびテキストフレームの場合はデコードされたUTF-8テキストを表示します。クローズフレームは2バイトのステータスコードとUTF-8理由フレーズを個別に分割します。
  5. JSON Exportは同じデコードされたフィールドを単一のJSONオブジェクトとして提供し、スクリプティングまたはバグレポートに使用できます。

3つのペイロード長形式

2番目のバイトの下位7ビットは長さをエンコードしますが、値に応じて異なる意味を持ちます:

  • 0–125 — これが実際のペイロード長です。
  • 126実際の長さは次の2バイトとして続きます(ビッグエンディアン、符号なし16ビット)。
  • 127実際の長さは次の8バイトとして続きます(ビッグエンディアン、符号なし64ビット; 最上位ビットはRFCあたり0である必要があります)。

マスキング

クライアント-サーバー間フレームはマスクされている必要があります(MASK=1) — ペイロードは長さフィールドの直後にある4バイトのマスキングキーに対してバイトごとにXORされ、キーは4バイトごとにサイクルします(payload[i] XOR key[i mod 4])。サーバー-クライアント間フレームは通常マスクされません。このツールはMAK=1の場合は常に自動的にマスクを解除し、比較できるように生マスク16進数と非マスク16進数の両方を表示します。

このツールが警告としてフラグを立てるもの

  • 制御フレーム(close/ping/pong、opcode 0x8–0xA)がFIN=0の場合、またはペイロードが125バイトを超える場合 — 両方ともRFC 6455 §5.5に準じて無効です(制御フレームは断片化されたり大きなペイロードを運ぶことはできません)。
  • それを定義するためのネゴシエートされた拡張なしに設定されたRSVビット
  • リザーブopcode(0x3–0x7または0xB–0xF) — 拡張なしでは定義されません。
  • 切り詰められたフレーム — 宣言された長さが実際に提供されたバイトを超えています。

このツールがしないこと

既に取得した単一フレームのヘッダーをデコードします — ライブWebSocket接続を開かず、フラグメント化されたフレーム(opcode 0x0継続フレーム)のシーケンスを1つの論理メッセージに再構成せず、WebSocketトラフィックに先行するHTTP Upgradeハンドシェイクを検証しません。

FAQ

貼り付けるための生フレームバイトはどこで取得できますか? ブラウザーのDevToolsネットワークパネル(WSタブ → フレームをクリック → 生バイト)、パケットキャプチャ(Wireshark's "Follow → WebSocket Stream"またはTCPペイロードの16進数ビュー)、またはBurp/mitmproxyなどのプロキシツールからキャプチャします。

入力が解析に失敗するのはなぜですか? フレームヘッダーは最低2バイトです。ペイロードだけでなく、完全なフレームを貼り付けたことを確認してください。16進数入力は偶数個の16進数字が必要です; バイナリ入力はビット数が8の倍数である必要があります。

私のデータはどこかにアップロードされますか? いいえ — デコードはブラウザー内で完全に実行されます。貼り付けたものがデバイスを離れることはありません。

関連ツール

  • Hex Dump Viewer — 任意のバイナリブロブの一般的なバイトレベルビュー用。
  • HTTP Header Analyzer — WebSocket接続に先行するHTTP Upgradeハンドシェイクをデコード。
  • Raw HTTP Request Parser — 生のHTTPリクエスト行とヘッダーを解析。
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>

ご自身のページに貼り付けるだけ——無料、キー不要、リンクを掲載するだけです。

1回あたりの費用5クレジットから

次の方法でも利用可能

ツールが気に入りましたか?広告をなくしましょう。

1回のお支払いでアカウントから広告が完全になくなります。サブスクリプションも追跡もありません。