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エクスポート
ガイド
WebSocketフレームとは?
WebSocket接続を通じて送信されるすべてのメッセージはフレームにラップされます。これは小さなバイナリヘッダー(RFC 6455 §5.2で定義)の後にペイロードデータが続く形です。ヘッダーは最初の1〜2バイトに複数のフィールドをコンパクトにパック: FINビット、3つのRSV(リザーブ)ビット、フレームタイプ(text、binary、ping、pong、close…)を識別する4ビットのopcode、MASKビット、およびペイロードのサイズに応じて3つの異なるバイト幅を取ることができるペイロード長。フレームがマスクされている場合、ペイロードはあなたがそれを読む前に4バイトのマスキングキーに対してXORされます。これらのことは目で読むことはできません — このツールはそれをフィールドごとにデコードします。
使い方
- 16進数として生フレームバイトを貼り付けます(スペース、コロン、または
0xで区切られた —81 05 48 65 6c 6c 6fと0x81,0x05,0x48,0x65,0x6c,0x6c,0x6fの両方が機能)、またはバイナリビット文字列として(例:10000001 00000101 ...)。 - Frame FieldsはFIN、RSV1–3、opcode(その名前付き)、MASK、生7ビット長フィールドと実際に解決されたペイロード長の両方、マスキングキー(ある場合)、およびプロトコル警告を表示します。
- Byte Structureはバイトオフセットでフレームを分割します — どのバイトがヘッダー、拡張長(存在する場合)、マスキングキー(存在する場合)、およびペイロードを構成するか — RFC 6455ダイアグラムのレイアウトをミラーリングします。
- Payloadは受信されたペイロード(適用可能な場合はまだマスクされている)、XOR非マスク16進数、およびテキストフレームの場合はデコードされたUTF-8テキストを表示します。クローズフレームは2バイトのステータスコードとUTF-8理由フレーズを個別に分割します。
- 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リクエスト行とヘッダーを解析。
このツールを使う他の方法
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_HEREIOTools 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クレジットから |
|---|