MQTT & IoT Messaging Protocols
불안정한 네트워크와 저대역폭 환경에서 사물들이 효율적으로 정보를 주고받기 위해 사용하는 MQTT, CoAP 등의 가벼운 통신 규약과 물리적 연결 관리 기술을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts7 min read
1. Overview
MQTT 및 IoT 메시징 프로토콜(MQTT & IoT Messaging Protocols, MIM)은 수만 대의 센서가 끊임없이 쏟아내는 데이터를 중앙 서버로 안전하고 가볍게 나르는 '사물들의 우편 시스템'입니다.
전통적인 HTTP는 무겁고 연결 오버헤드가 커서 자원이 부족한 IoT 기기에는 물리적으로 부적합합니다. 학습자는 발행/구독(Pub/Sub) 모델 기반의 MQTT가 어떻게 최소한의 비트로 연결을 유지하는지 그 물리적 패킷 구조를 배웁니다. 또한, 전력 소모가 극심한 기기를 위한 CoAP와 같은 UDP 기반 프로토콜의 특성을 익힙니다. 이를 통해 네트워크가 자주 끊어지고 데이터 한 바이트가 배터리 수명과 직결되는 가혹한 환경에서도 데이터의 무결성과 전달력을 보장하는 통신 체계를 설계합니다.
2. Scope & Boundaries
In-Scope
- MQTT Architecture: Broker 기반 Pub/Sub 물리 로직, QoS(Quality of Service) 레벨별 보증 물리
- Packet Efficiency: Fixed Header, Payload 압축 및 Keep-alive 메커니즘
- CoAP & UDP Physics: 비연결성 전송의 효율성과 재전송(Retransmission) 물리
- Connection Persistence: 유언 메시지(LWT), 세션 상태 보존 기법
Out-of-Scope
- 범용 웹 소켓(WebSocket) 및 실시간 채팅 애플리케이션 상세 (08. Network 영역으로 위임)
- 메시지 상위 데이터 직렬화(JSON, Protobuf) 포맷 자체의 명세 (04. Data 영역으로 위임)
Boundaries
- MIM vs. Standard Web: 웹 통신이 '풍부한 정보 전달'을 지향한다면, MIM은 '전기 한 방울, 전파 한 가닥'을 아끼는 물리적 생존을 지향합니다.
3. Counterexample
- 단순히 "인터넷으로 센서값을 보낸다"는 이해는 MIM 학습이 아닙니다. 왜 MQTT의 QoS Level 2가 Level 0보다 네트워크 대역폭과 하드웨어 처리 클록을 물리적으로 훨씬 많이 소모하게 되는지 4단계 핸드셰이크 시퀀스로 입증해야 하며, 네트워크가 1시간 동안 단절되었을 때 Retain Message 기능이 하드웨어 재부팅 직후의 상태 복구에 어떤 물리적 이점을 주는지 설명하지 못한다면 MIM의 실전적 응용력을 놓친 것입니다.
4. Prerequisites
- Low-power Wireless Physics (Basic): 무선 전송 시 발생하는 비트 누락 지식 필수입니다. (02-07-01 LWP)
- Bus Communication Protocols (Recommended): UART/SPI 데이터 래핑 경험이 권장됩니다. (02-05-04 BCP)
5. Learning Map
- Lightweight Framing: 패킷 머리표(Header)를 2바이트까지 깎아내는 물리적 압축 기술을 배웁니다.
- Post-Office Registry: 거대 중재자(Broker)가 수만 개의 편지를 어떻게 주소에 맞게 물리 분류하는지 익힙니다.
- Delivery Assurance: 거친 전파 환경에서 "꼭 도착하게 할지" 아니면 "한 번만 찌를지" 품질 등급을 결정합니다.
- Resilient Session: 연결이 끊겨도 내 상태가 서버에 남아있게 하는 물리 기록 기법을 완성합니다.
6. Learning Topics
Basic
Core: MQTT 구조와 Pub/Sub 물리 (MQTT Foundations)
- Why to Learn: 대규모 기기들이 일대일로 연결되지 않고도 정보를 효율적으로 전파하는 표준 방식이기 때문입니다.
- What to Learn:
- Publisher/Subscriber/Broker: 데이터 물류의 물리적 주체
- Topics: '/' 문자로 구분되는 계층적 주소 물리 체계
- TCP-based connection: 연결 지향적 전송을 통한 기본적인 데이터 신뢰성
- How to Learn:
- 로컬 브로커(Mosquitto 등)를 띄우고 센서 데이터가 어떻게 여러 구독자에게 동시에 물리적으로 분산되는지 로그 분석 실습
- MQTT 헤더의 비트 필드를 하나씩 뜯어보며 불필요한 정보가 배제된 과정 확인
- Implement: 특정 타겟(Topic)으로 데이터를 송출하고 수신하는 최소 기능의 MQTT 클라이언트 의사 코드
Recommended
Core: 서비스 품질 등급과 지연 시간 (QoS Levels)
- Why to Learn: 신뢰도를 높이려다 배터리가 광속으로 닳는 물리적 역효과를 방어하기 위해서입니다.
- What to Learn:
- QoS 0 (At most once): 확인 없이 발사하고 잊는 최속 물리 전송
- QoS 1 (At least once): 도착 확인(ACK)을 받을 때까지 재전송하는 끈끈한 물리
- QoS 2 (Exactly once): 중복 없이 단 한 번만 전달하는 엄격한 시퀀스
- How to Learn:
- QoS 레벨을 0에서 2로 올릴 때, 패킷 캡처 도구(Wireshark)에 찍히는 왕복 메시지 수의 물리적 증가 관찰 실습
- 네트워크 단절 시 QoS 1 모델에서 발생하는 메시지 중복 사례 분석
- Implement: 현재 네트워크 지연(Latency) 상황에 따라 적절한 QoS 레벨을 자동 추천해주는 로직
Practical
Core: CoAP와 저전력 UDP 통신 (CoAP & Low-power Messaging)
- Why to Learn: 핸드셰이크조차 사치인 극저사양 노드가 배터리로 수년을 버텨야 할 때 필수적이기 때문입니다.
- What to Learn:
- UDP-based CoAP: 연결 수립 과정 없이 바로 쏘고 닫는 물리적 신속성
- Observe pattern: 구독과 유사하게 변경 사항만 낚아채는 물리 로직
- CoRE Link Format: 장치가 가진 자원을 스스로 알리는 물리 목록화
- How to Learn:
- 동일한 센서 데이터를 MQTT와 CoAP로 보낼 때, 전원이 켜지고 첫 패킷이 서버에 닿기까지의 물리 시간(TTF) 비교 실습
- 패킷 손실이 20%인 환경에서 CoAP의 재전송 오버헤드 측정
- Implement: 리소스 주소 요청을 CoAP GET 패킷 형식으로 직렬화(Serialize)하는 바이너리 생성 모듈
Advanced
Core: 보안 채널과 대규모 세션 관리 (IoT Security & Scaling)
- Why to Learn: 수천만 대의 기기가 동시에 덤벼도 서버가 죽지 않고, 데이터가 탈취되지 않는 물리 방벽을 세우기 위함입니다.
- What to Learn:
- TLS/SSL Overhead: 암호화가 IoT 하드웨어의 RAM과 CPU 성능에 미치는 물리적 한계점
- Client ID & Keep-alive: 거대 기기들의 접속 상태를 유지하기 위한 핑(Ping) 물리 비용
- MQTT-SN: 무선 환경에 맞게 토픽을 짧은 숫자로 매핑하여 더 줄이는 기술
- How to Learn:
- 암호화 기능을 켰을 때, 한 비트를 보내기 위해 소진되는 MCU 클록 수리적 분석 실습
- 동시 접속자가 1만 명일 때 브로커 메모리에 쌓이는 세션 정보의 물리적 크기 산정
- Implement: 통신 구간의 배터리 잔량과 보안 중요도에 따라 암호화 강도를 동적으로 조절하는 프로토콜 게이트웨이
7. Terminology
8. References
Primary
- [P1] CS2023 - AR/Embedded Systems (Network protocols) — Core requirements.
- [P2] SWEBOK v4.0 - Computing Foundations / Data Communications — Structural standards.
Secondary
- [MQTT Essentials] HiveMQ — Complete protocol guide.
- [IoT Fundamentals] Hanes et al. — Chapters on CoAP and lightweight messaging.
Industry
- [OASIS: MQTT Version 5.0 Standard Specification] — Official full spec.
- [IETF RFC 7252: The Constrained Application Protocol (CoAP)] — Official RFC.
9. Final Checklist
Primary
- 'HTTP' 프로토콜 헤더(수백 바이트)와 'MQTT' 고정 헤더(2바이트)를 비교하여, 왜 MQTT가 임베디드 통신 성능을 물리적으로 향상시키는지 설명 가능한가? (P1)
- '발행/구독' 모델이 '요청/응답' 모델보다 수천 개의 센서를 관리할 때 서버 하드웨어 자원(Memory/Connection)을 왜 더 아낄 수 있는지 입증할 수 있는 가? (P1)
Secondary
- 'QoS Level 1' 설정 시, 통신 장애가 발생했다가 복구되면 동일한 데이터가 왜 두 번 배달될 수 있는지 물리적 확인 절차 관점에서 소통 가능한가?
- 인터넷이 불능인 상황에서 로컬 게이트웨이가 기기 상호 간의 통신을 어떻게 물리적으로 중재(Local Broker)하여 시스템을 유지하는지 분석 가능한가?
Industry
- 스마트 농장의 지하 매설 센서 성능 설계 시, 왜 TCP 기반 MQTT보다 UDP 기반 CoAP가 패킷 재전송 물리 관점에서 유리한지 제안할 수 있는 가? (SFIA)
- 'Last Will and Testament (LWT)' 기능을 사용하여 특정 기기의 물리적 전원 차단을 서버가 어떻게 즉각 인지하고 대체 로직을 가동하는지 시퀀스를 기술할 수 있는 가?