MQTT Codec
Mã hóa và giải mã gói tin giao thức MQTT
Dán dữ liệu gói MQTT được thu thập từ Wireshark, bộ phân tích mạng hoặc nhật ký broker
Gói tin mẫu
Kết quả giải mã
Nhập dữ liệu gói tin và nhấp Giải mã để xem kết quả
Trình xem byte
Kết quả mã hóa
Cấu hình tham số và nhấp Xây dựng gói tin để tạo
Trình xem byte
Xem trước cấu trúc gói tin
Tham chiếu loại gói MQTT
| Mã | Tên | Hướng | Mô tả |
|---|---|---|---|
| 0x10 | CONNECT | C→S | Yêu cầu kết nối từ client |
| 0x20 | CONNACK | S→C | Xác nhận kết nối |
| 0x30 | PUBLISH | C↔S | Xuất bản tin nhắn |
| 0x40 | PUBACK | C↔S | Xác nhận xuất bản (QoS 1) |
| 0x50 | PUBREC | C↔S | Đã nhận xuất bản (QoS 2 phần 1) |
| 0x60 | PUBREL | C↔S | Giải phóng xuất bản (QoS 2 phần 2) |
| 0x70 | PUBCOMP | C↔S | Hoàn tất xuất bản (QoS 2 phần 3) |
| 0x80 | SUBSCRIBE | C→S | Yêu cầu đăng ký |
| 0x90 | SUBACK | S→C | Xác nhận đăng ký |
| 0xA0 | UNSUBSCRIBE | C→S | Yêu cầu hủy đăng ký |
| 0xB0 | UNSUBACK | S→C | Xác nhận hủy đăng ký |
| 0xC0 | PINGREQ | C→S | Yêu cầu ping (keep-alive) |
| 0xD0 | PINGRESP | S→C | Phản hồi ping |
| 0xE0 | DISCONNECT | C→S | Client ngắt kết nối |
Hướng dẫn Giao thức MQTT
Hiểu về Giao thức MQTT
MQTT (Message Queuing Telemetry Transport) là giao thức nhắn tin nhẹ được xây dựng trên TCP/IP. Được IBM phát triển năm 1999 để giám sát đường truyền vệ tinh, nó đã trở thành tiêu chuẩn thực tế cho giao tiếp IoT. Giao thức sử dụng mô hình publish-subscribe trong đó các client giao tiếp thông qua một broker trung tâm, lý tưởng cho mạng không ổn định và thiết bị có tài nguyên hạn chế.
Cấu trúc nhị phân của gói tin
Mỗi gói MQTT bắt đầu bằng header cố định (1-5 byte), theo sau là header biến tùy chọn và payload. Byte đầu tiên chứa loại gói ở bit 7-4 và các cờ đặc trưng cho loại ở bit 3-0. Trường độ dài còn lại sử dụng mã hóa độ dài biến.
| Phạm vi bit | Tên trường | Mô tả |
|---|---|---|
| 7-4 | Loại gói tin | Loại gói điều khiển (1-15) |
| 3-0 | Cờ | Cờ đặc trưng cho loại (DUP, QoS, RETAIN cho PUBLISH) |
Mã hóa độ dài biến
MQTT sử dụng mã hóa gọn cho trường độ dài còn lại. Mỗi byte sử dụng 7 bit cho dữ liệu và 1 bit làm cờ tiếp tục. Giá trị 0-127 cần 1 byte, 128-16383 cần 2 byte, tối đa lên đến 4 byte cho độ dài đến 268.435.455.
| Byte | Giá trị tối thiểu | Giá trị tối đa |
|---|---|---|
| 1 | 0 | 127 |
| 2 | 128 | 16,383 |
| 3 | 16,384 | 2,097,151 |
| 4 | 2,097,152 | 268,435,455 |
Chi tiết gói CONNECT
Gói CONNECT được gửi đầu tiên sau khi thiết lập kết nối TCP. Nó chứa phiên bản giao thức, khoảng thời gian keep-alive, ID client và thông tin xác thực tùy chọn. Các cờ kết nối kiểm soát hành vi phiên bao gồm Clean Session, cấu hình tin nhắn di chúc và xác thực.
Cơ chế gói PUBLISH
Gói PUBLISH mang các tin nhắn ứng dụng. Các cờ header cố định chỉ ra mức QoS, hành vi retain và trạng thái trùng lặp. QoS 0 là fire-and-forget, QoS 1 đảm bảo giao ít nhất một lần, QoS 2 đảm bảo chính xác một lần qua bắt tay bốn bước.
Đảm bảo giao hàng QoS
Ứng dụng thực tế
- Phân tích bắt gói từ Wireshark hoặc tcpdump để gỡ lỗi
- Xây dựng gói test để xác minh triển khai broker hoặc client MQTT
- Học nội bộ giao thức MQTT qua kiểm tra gói thực hành
- Khắc phục sự cố kết nối và giao tin nhắn của thiết bị IoT
- Tạo gói mẫu cho các kịch bản kiểm thử tự động
Các phiên bản giao thức
Ba phiên bản chính của MQTT đang được sử dụng: MQTT 3.1 (mức giao thức 3), MQTT 3.1.1 (mức giao thức 4, ISO/IEC 20922:2016), và MQTT 5.0 (mức giao thức 5) với các tính năng nâng cao. Công cụ này tập trung chủ yếu vào MQTT 3.1.1 - phiên bản được triển khai rộng rãi nhất.
Công Cụ Liên Quan
MQTT WebSocket Client
Client MQTT dựa trên trình duyệt để kết nối, xuất bản, đăng ký và gỡ lỗi tin nhắn IoT qua WebSocket
Công Cụ Kiểm Tra Topic MQTT
Kiểm tra và xác thực mẫu topic MQTT với ký tự đại diện + và # để kiểm tra đăng ký
Trình Phân Tích Modbus RTU/ASCII/TCP
Phân tích, mã hóa và gỡ lỗi khung giao thức Modbus RTU/ASCII/TCP với tính toán CRC-16/LRC và gỡ lỗi nối tiếp
Chuyển Đổi Cơ Số
Chuyển đổi giữa hệ nhị phân, bát phân, thập phân và thập lục phân với hỗ trợ cơ số tùy chỉnh (2-36)