CoderTools

MQTT 코덱

MQTT 프로토콜 패킷 인코딩 및 디코딩

🔒 100% 로컬 처리입력하신 데이터는 브라우저에서 완전히 처리되며, 서버로 전송되지 않습니다.

Wireshark, 네트워크 분석기 또는 브로커 로그에서 캡처한 MQTT 패킷 데이터를 붙여넣으세요

예제 패킷

디코딩 결과

패킷 데이터를 입력하고 디코딩을 클릭하여 결과를 확인하세요

MQTT 패킷 유형 참조

코드 이름 방향 설명
0x10CONNECTC→S클라이언트 연결 요청
0x20CONNACKS→C연결 확인
0x30PUBLISHC↔S메시지 발행
0x40PUBACKC↔S발행 확인 (QoS 1)
0x50PUBRECC↔S발행 수신 (QoS 2 1단계)
0x60PUBRELC↔S발행 해제 (QoS 2 2단계)
0x70PUBCOMPC↔S발행 완료 (QoS 2 3단계)
0x80SUBSCRIBEC→S구독 요청
0x90SUBACKS→C구독 확인
0xA0UNSUBSCRIBEC→S구독 취소 요청
0xB0UNSUBACKS→C구독 취소 확인
0xC0PINGREQC→S핑 요청 (킵얼라이브)
0xD0PINGRESPS→C핑 응답
0xE0DISCONNECTC→S클라이언트 연결 해제

MQTT 프로토콜 가이드

MQTT 프로토콜 이해하기

MQTT(Message Queuing Telemetry Transport)는 TCP/IP 위에 구축된 경량 메시징 프로토콜입니다. 1999년 IBM이 위성 링크 모니터링을 위해 개발했으며, 현재 IoT 통신의 사실상 표준이 되었습니다. 이 프로토콜은 발행-구독 패턴을 사용하여 클라이언트가 중앙 브로커를 통해 통신하며, 불안정한 네트워크와 리소스 제한 장치에 이상적입니다.

패킷 바이너리 구조

모든 MQTT 패킷은 고정 헤더(1-5바이트)로 시작하고, 선택적 가변 헤더와 페이로드가 뒤따릅니다. 첫 번째 바이트는 비트 7-4에 패킷 유형을, 비트 3-0에 유형별 플래그를 포함합니다. 나머지 길이 필드는 가변 길이 인코딩을 사용합니다.

비트 범위 필드 이름 설명
7-4패킷 유형제어 패킷 유형 (1-15)
3-0플래그유형별 플래그 (PUBLISH의 DUP, QoS, RETAIN)

가변 길이 인코딩

MQTT는 나머지 길이 필드에 압축 인코딩을 사용합니다. 각 바이트는 데이터에 7비트를, 연속 플래그에 1비트를 사용합니다. 0-127은 1바이트, 128-16383은 2바이트가 필요하며, 최대 4바이트로 268,435,455까지 표현 가능합니다.

바이트 최소값 최대값
10127
212816,383
316,3842,097,151
42,097,152268,435,455

CONNECT 패킷 상세

CONNECT 패킷은 TCP 연결 설정 후 가장 먼저 전송됩니다. 프로토콜 버전, 킵얼라이브 간격, 클라이언트 ID 및 선택적 자격 증명을 포함합니다. 연결 플래그는 클린 세션, 유언 메시지 구성, 인증을 포함한 세션 동작을 제어합니다.

PUBLISH 패킷 메커니즘

PUBLISH 패킷은 애플리케이션 메시지를 전달합니다. 고정 헤더 플래그는 QoS 레벨, 유지 동작, 중복 상태를 나타냅니다. QoS 0은 fire-and-forget, QoS 1은 최소 1회 전달 보장, QoS 2는 4방향 핸드셰이크를 통해 정확히 1회 전달을 보장합니다.

QoS 전달 보장

QoS 0
최대 1회 - fire and forget 전달
QoS 1
최소 1회 - 중복 가능성 있는 보장 전달
QoS 2
정확히 1회 - 단일 전달 보장

실용적 응용

  • 디버깅을 위해 Wireshark 또는 tcpdump의 패킷 캡처 분석
  • MQTT 브로커 또는 클라이언트 구현을 검증하기 위한 테스트 패킷 구축
  • 실제 패킷 검사를 통한 MQTT 프로토콜 내부 학습
  • IoT 장치 연결 및 메시지 전달 문제 해결
  • 자동화된 테스트 시나리오를 위한 샘플 패킷 생성

프로토콜 버전

세 가지 주요 MQTT 버전이 사용 중입니다: MQTT 3.1(프로토콜 레벨 3), MQTT 3.1.1(프로토콜 레벨 4, ISO/IEC 20922:2016), 향상된 기능의 MQTT 5.0(프로토콜 레벨 5). 이 도구는 주로 가장 널리 배포된 MQTT 3.1.1을 대상으로 합니다.

빠른 메뉴

최근 사용 도구 없음