送信方向をそろえる
クライアントとサーバーではMASKの規則が異なります。方向を指定しない場合は方向チェックだけを省略します。双方向のキャプチャを自動分離する機能ではないため、一方向のデータを順序どおりに入力します。
プロトコル/バイナリ形式
フレームヘッダーから始まる16進数を入力してください。マスク付き・分割・欠損の例を選べます。
ヘッダーから入力:81 05 48 65 6c 6c 6f。完全なバイトを空白・コンマ・コロンで区切れます。0xは各バイトに付けます。
バイト列を入力するか例を選んでください。
このタブ内で処理します。入力の送信や保存は行いません。
バイト列を入力するか例を選んでください。
受信ログの一つの塊が、一つのメッセージとは限りません。WebSocketフレーム解析では各フレームの開始位置を残すため、分割されたデータの間に入るpingも独立して確認できます。自作パーサーの読み取り位置がずれたときは、次のヘッダーまでの距離を比べてください。
ブラウザーのmessageイベントでは、通常フレームヘッダーがすでに取り除かれています。WebSocketデコードの対象はHTTP Upgrade後の生のフレームです。アプリの文字列やTCPパケット全体を、そのまま入力形式と取り違えないことが大切です。
WebSocketフレーム解析は先頭の一つで止まらず、ヘッダーとペイロード長を使って次へ進みます。後続フレームが欠けていても、それ以前の完全なフレームは表示されます。不完全な解析を完全な報告として持ち出さないよう、エクスポートは停止します。
4バイトのキーがペイロード全体を繰り返しXORします。画面では通信路上の値と復元後の値を別々に表示します。次のフレームでは新しいキーの先頭から計算し直すため、前のフレームの位置を引き継ぎません。
クライアントとサーバーではMASKの規則が異なります。方向を指定しない場合は方向チェックだけを省略します。双方向のキャプチャを自動分離する機能ではないため、一方向のデータを順序どおりに入力します。
各ペイロードの表示は先頭256バイトまでです。これは表示上の制限です。宣言された長さに入力が足りない場合は構造エラーとなり、位置と必要な長さが示され、報告を保存できません。
自動解析は変更後350ミリ秒待ちます。オフにすると解析ボタンとCtrl/Cmd+Enterが使えます。入力や方向を変えた直後は旧結果をコピーできません。例とクリアは置換を確認して適用し、元の入力と結果を一度戻せます。
7ビットの値と、16ビットまたは64ビットの拡張長をネットワークバイト順で読みます。巨大な宣言値は精度を失わずに上限と比較します。必要以上に長い形式で表現された長さは警告として残ります。
close、ping、pongをデータと分けて表示します。closeの先頭2バイトはコード、残りはUTF-8の理由です。制御フレームの分割、過大な長さ、不正なコードを指摘しますが、接続終了の成功までは判定しません。
独立した完全なテキストは厳密なUTF-8で検査します。バイナリの読める表示は参考情報です。継続フレームと拡張データは完全な文字列に見せず、表示境界にまたがる文字も壊して表示しません。
ヘッダー、拡張長、マスクキー、載荷の不足は解析を止めます。バイト位置は0始まり、入力の行と列は1始まりです。RSVや予約opcodeは警告とともに保持し、元データを調べられるようにします。
クライアントが通信路の載荷を自由に選んで中継機器を誤認させないよう、4バイトのキーでXORします。キー自体がフレームに含まれるため秘密を守る仕組みではありません。基本仕様ではサーバーからのフレームはマスクしません。
126と127は長さそのものではなく、後続の2バイトまたは8バイトを使う印です。値はビッグエンディアンで読み、8バイト形式の最上位ビットは0でなければなりません。長さにヘッダーやマスクキーは含めません。
はい。一方向のフレームを順に連結して入力できます。空の載荷や途中の制御フレームも別々に表示します。途中で不足が見つかった場合は、キャプチャを補ってから報告を保存してください。
空の載荷ならコードはありません。それ以外は先頭2バイトがコード、残りがUTF-8の理由です。1バイトだけの載荷、送信できないコード、不正なUTF-8は警告になります。空のcloseに正常終了コードを補うことはしません。
いいえ。HTTP Upgradeの要求と応答はフレームより前の段階です。その後の生のフレームを取り出してください。TCP/IPやTLSの外枠の除去、接続、サーバーのハンドシェイク検証には対応しません。
計算や入力判定に問題がありましたか?