Dekoder Frame WebSocket (RFC 6455)
Tempel byte frame WebSocket mentah (hex atau biner) dan dekode header RFC 6455 field demi field — FIN, RSV, opcode, MASK, bentuk panjang payload 7/16/64-bit, kunci masking, dan payload yang tidak dienkripsi XOR — dengan rincian offset byte.
Input
Output
Field Frame
| Field | Nilai |
|---|---|
| No data yet | |
Struktur Byte
| Offset | Byte (hex) | Bagian | Dekode |
|---|---|---|---|
| No data yet | |||
Payload
| Field | Nilai |
|---|---|
| No data yet | |
Ekspor JSON
Panduan
Apa itu frame WebSocket?
Setiap pesan yang dikirim melalui koneksi WebSocket dibungkus dalam sebuah frame — header biner kecil (didefinisikan oleh RFC 6455 §5.2) diikuti oleh data payload. Header mengemas beberapa field ke dalam byte pertama atau dua: bit FIN, tiga bit RSV (reserved), opcode 4-bit yang mengidentifikasi tipe frame (text, binary, ping, pong, close…), bit MASK, dan panjang payload yang dapat mengambil tiga lebar byte yang berbeda tergantung seberapa besar payload-nya. Jika frame dimasking, payload juga di-XOR terhadap kunci masking 4-byte sebelum Anda dapat membacanya. Tidak ada dari itu yang dapat dibaca dengan mata — alat ini mendekode field demi field.
Cara menggunakannya
- Tempel byte frame mentah sebagai hex (dipisahkan oleh spasi, titik dua, atau
0x—81 05 48 65 6c 6c 6fdan0x81,0x05,0x48,0x65,0x6c,0x6c,0x6fkeduanya berfungsi) atau sebagai string bit biner (mis.10000001 00000101 ...). - Frame Fields menampilkan FIN, RSV1–3, opcode (dengan namanya), MASK, baik field panjang 7-bit mentah maupun panjang payload aktual yang terselesaikan, kunci masking (jika ada), dan peringatan protokol apa pun.
- Byte Structure memecah frame berdasarkan offset byte — byte mana yang membuat header, panjang yang diperluas (jika ada), kunci masking (jika ada), dan payload — mencerminkan tata letak di diagram RFC 6455.
- Payload menampilkan payload seperti yang diterima (masih dimasking, jika berlaku), hex yang tidak dienkripsi XOR, dan — untuk frame text — teks UTF-8 yang dikodekan. Frame close mendapat kode status 2-byte dan frasa alasan UTF-8 mereka dipecah secara terpisah.
- JSON Export memberikan field yang sama seperti yang didekode sebagai objek JSON tunggal untuk scripting atau laporan bug.
Tiga bentuk panjang payload
7 bit rendah byte kedua mengkodekan panjang, tetapi arti mana yang mereka bawa tergantung nilainya:
- 0–125 — itu adalah panjang payload aktual.
- 126 — panjang aktual mengikuti sebagai 2 byte berikutnya (big-endian, unsigned 16-bit).
- 127 — panjang aktual mengikuti sebagai 8 byte berikutnya (big-endian, unsigned 64-bit; bit teratas harus 0 per RFC).
Masking
Frame client-ke-server harus dimasking (MASK=1) — payload di-XOR byte-by-byte terhadap kunci masking 4-byte yang segera mengikuti field panjang, menggulir kunci setiap 4 byte (payload[i] XOR key[i mod 4]). Frame server-ke-client biasanya tidak dimasking. Alat ini secara otomatis tidak dimasking kapan pun MASK=1 dan menampilkan hex mentah dan tidak dienkripsi sehingga Anda dapat membandingkan.
Apa yang alat ini tandai sebagai peringatan
- Control frame (close/ping/pong, opcode 0x8–0xA) dengan FIN=0, atau dengan payload di atas 125 byte — keduanya tidak valid per RFC 6455 §5.5 (control frame tidak dapat dipecah atau membawa payload besar).
- RSV bit apa pun yang ditetapkan tanpa ekstensi yang disepakati untuk mendefinisikannya.
- opcode yang dicadangkan (0x3–0x7 atau 0xB–0xF) — tidak terdefinisi tanpa ekstensi.
- Frame terpotong — panjang yang dinyatakan melebihi byte yang benar-benar disediakan.
Apa yang alat ini tidak lakukan
Ini mendekode frame tunggal yang sudah ditangkap header-nya — tidak membuka koneksi WebSocket aktif, tidak merakit ulang urutan frame sambungan opcode 0x0 (fragmented frame) menjadi satu pesan logis, dan tidak memvalidasi handshake HTTP Upgrade yang mendahului traffic WebSocket apa pun.
FAQ
Di mana saya mendapatkan byte frame mentah untuk ditempel? Tangkap mereka dari panel DevTools Network browser Anda (tab WS → klik frame → byte mentah), dari packet capture (Wireshark's "Follow → WebSocket Stream" atau hex view dari TCP payload), atau dari tool proxy seperti Burp/mitmproxy.
Mengapa input saya gagal diparse? Header frame minimal 2 byte — pastikan Anda telah menempel frame lengkap, bukan hanya payload. Input hex memerlukan jumlah digit hex genap; input biner memerlukan jumlah bit yang merupakan kelipatan 8.
Apakah data saya diunggah ke mana pun? Tidak — decoding berjalan sepenuhnya di browser Anda. Tidak ada yang Anda tempel pernah meninggalkan perangkat Anda.
Alat terkait
- Hex Dump Viewer — untuk tampilan level byte umum dari blob biner apa pun.
- HTTP Header Analyzer — dekode handshake HTTP Upgrade yang mendahului koneksi WebSocket.
- Raw HTTP Request Parser — parse baris permintaan HTTP mentah dan header.
Cara lain menggunakan alat ini
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"
}'Ganti dengan kunci Anda sendiri dari akun Anda. Bidang alat menjadi isi permintaan — tanpa pembungkus.
Tanyakan ke agen AI
Use the IOTools `websocket-frame-decoder` tool (WebSocket Frame Decoder (RFC 6455)) on this input:
YOUR_INPUT_HERETempelkan ini ke agen mana pun yang terhubung ke server MCP IOTools, lalu tambahkan input Anda.
Widget sematan
<iframe
src="https://iotools.cloud/embed/websocket-frame-decoder/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="Dekoder Frame 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>Tempelkan ini di halaman Anda sendiri — gratis, tanpa kunci, cukup tautan balik.
| Biaya per panggilan | Mulai dari 5 kredit |
|---|