Skip to content

Latest commit

ย 

History

History
executable file
ยท
122 lines (88 loc) ยท 5.16 KB

File metadata and controls

executable file
ยท
122 lines (88 loc) ยท 5.16 KB

MQTT

MQTT๋Š” ๊ฒŒ์‹œ ๋ฐ ๊ตฌ๋… ๋ธŒ๋กœ์ปค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–‘๋ฐฉํ–ฅ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ฐ๊ฒฐ๋œ ๊ธฐ๊ธฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ OASIS ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. MQTT ํ”„๋กœํ† ์ฝœ์€ ๋„คํŠธ์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ํ”„๋กœํ† ์ฝœ๋กœ์„œ MQTT ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งค์šฐ ์ž‘์•„ ์ œํ•œ๋œ ๊ธฐ๊ธฐ์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์ด ์ตœ์†Œํ™”๋ฉ๋‹ˆ๋‹ค - Google์˜ MQTT ์„ค๋ช…

MQTT

  • Message Queuing Telemetry Transport
  • Client - Broker ๊ฒŒ์‹œ/๊ตฌ๋… ํ˜•ํƒœ ํ”„๋กœํ† ์ฝœ
    • IoT ๊ธฐ๊ธฐ์™€ ๊ฐ™์ด ๋Œ€์—ญํญ์ด ์ œํ•œ์ ์ด๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ถˆ์•ˆ์ •ํ•œ ํ™˜๊ฒฝ์—์„œ ์†Œ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ตํ™˜ํ•˜๋„๋ก ์„ค๊ณ„
    • TCP/IP ์œ„์—์„œ ๋™์ž‘
    • ์Šค๋งˆํŠธํ™ˆ, ํ—ฌ์Šค์ผ€์–ด, ๊ตํ†ต, ์‚ฐ์—… ์ž๋™ํ™”๋“ฑ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ
  • ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ
    • MQTT Broker
    • MQTT Client
      • ๊ฒŒ์‹œ์ž(Publisher)
      • ๊ตฌ๋…์ž(Subscriber)

MQTT์˜ ์žฅ์ 

  • ๊ฐ€๋ณ๊ณ  ํšจ์œจ์ ์ž„

    ๋ฉ”์‹œ์ง€ ํ—ค๋” ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋“ฑ์˜ ํ†ต์‹ ์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ ์Œ.

  • ์–‘๋ฐฉํ–ฅ ํ†ต์‹ 

  • ํ™•์žฅ์„ฑ

    ์ˆ˜๋ฐฑ๋งŒ๊ฐœ์˜ ์—ฐ๊ฒฐ๋œ ์žฅ์น˜๋ฅผ ์ง€์›

  • ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ณด์žฅ

    3๊ฐ€์ง€ QoS ๋ ˆ๋ฒจ ์„ค์ •์„ ํ†ตํ•œ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ์•ˆ์ •์„ฑ ํ™•๋ณด ๊ฐ€๋Šฅ

    • QoS 0: At most once (์ตœ๋Œ€ ํ•œ ๋ฒˆ) โ€“ ์ „๋‹ฌ ๋ณด์žฅ ์—†์Œ
    • QoS 1: At least once (์ตœ์†Œ ํ•œ ๋ฒˆ) โ€“ ์ค‘๋ณต ๊ฐ€๋Šฅ
    • QoS 2: Exactly once (์ •ํ™•ํžˆ ํ•œ ๋ฒˆ) โ€“ ๊ฐ€์žฅ ์•ˆ์ „ํ•˜์ง€๋งŒ ์˜ค๋ฒ„ํ—ค๋“œ ํผ
  • ์˜๊ตฌ์ ์ธ ์„ธ์…˜์„ ํ†ตํ•œ ์žฌ ์—ฐ๊ฒฐ ์ตœ์ ํ™”

    ์˜๊ตฌ ์„ธ์…˜์„ ํ†ตํ•œ ๋ถˆ์•ˆ์ •์ ์ธ(Unreliable) ํ™˜๊ฒฝ์—์„œ ์—ฐ๊ฒฐ์ด ์ง€์†์ ์œผ๋กœ ๋Š๊ฒผ์„ ๋•Œ, ์žฌ ์—ฐ๊ฒฐ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›

  • ๋ณด์•ˆ ์š”์†Œ ์ ์šฉ ๊ฐ€๋Šฅ

    TLS๋ฅผ ํ†ตํ•œ ๋ฉ”์‹œ์ง€ ์•”ํ˜ธํ™” ๊ฐ€๋Šฅ

    • OAuth์™€ ๊ฐ™์€ ์ตœ์‹  ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ.

MQTT Broker

๋ฐœ์‹ ์ž์™€ ์ˆ˜์‹ ์ž ์‚ฌ์ด์˜ ์ค‘๊ฐœ์ž๋กœ์„œ, ๊ตฌ๋…์ž๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๊ตฌ๋…์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰.

MQTT Client

ํ† ํ”ฝ์„ ๊ตฌ๋…ํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ฑฐ๋‚˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ์—ญํ• 

MQTT ํ”„๋กœํ† ์ฝœ ํŒจํ‚ท ๊ตฌ์กฐ

  • ๋ช…๋ น/๋ช…๋ น ACK ํ˜•์‹ ํ†ต์‹ 
  • Exmaple
    • connect ์š”์ฒญ โ†’ Connect ACK
    • ๊ตฌ๋… ์š”์ฒญ โ†’ ๊ตฌ๋… ACK
    • ๊ฒŒ์‹œ ์š”์ฒญ โ†’ ๊ฒŒ์‹œ ACK

MQTT Topic

  • MQTT์—์„œ ํ† ํ”ฝ์€ ๊ฒŒ์‹œ์ž์™€ ๊ตฌ๋…์ž ๊ฐ„์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋ฐฉ์‹์˜ ํ•ต์‹ฌ ์š”์†Œ.

    • ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋  ์œ„์น˜๋ฅผ ์ •์˜ํ•˜๋Š” ์ฃผ์†Œ์˜ ์—ญํ• 
    • UTF-8 ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ํ‘œํ˜„
  • ์ฃผ๋กœ ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ๊ฐ ๊ณ„์ธต์€ ์Šฌ๋ž˜์‹œ(/) ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค (ํŒŒ์ผ ๊ฒฝ๋กœ์™€ ์œ ์‚ฌ)

    • ๊ฐ ๊ณ„์ธต์€ topic level์ด๋ผ๊ณ  ์นญํ•œ๋‹ค.
  • ์˜ˆ์‹œ

    • southkorea/seoul/gangnam/temperature
      • ์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ์˜ ์˜จ๋„๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
    • company/device/12345678/status
      • 12345678 ๊ธฐ๊ธฐ์˜ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
  • Topic Name VS Topic Filter

    • Topic Name
      • ๊ฒŒ์‹œ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ •ํ™•ํ•œ ์ฃผ์†Œ
    • Topic Filter
      • ๊ตฌ๋…์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด
      • ์™€์ผ๋“œ ์นด๋“œ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ† ํ”ฝ์„ ๋™์‹œ์— ๊ตฌ๋… ๊ฐ€๋Šฅ

MQTT Wildcard

  • WildCard๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ† ํ”ฝ์„ ๋™์‹œ์— ๊ตฌ๋… ๊ฐ€๋Šฅ
  • single-level๊ณผ multi-level์ด ์žˆ์Œ
  • single-level
    • ๋”ํ•˜๊ธฐ(+) ๊ธฐํ˜ธ๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ topic level์„ ๋Œ€์ฒด ๊ฐ€๋Šฅ
    • ๋Œ€์ฒด๋œ topic level์— ๋Œ€์‘ํ•˜๋Š” ๋ชจ๋“  topic์„ ๊ตฌ๋…
    • ์˜ˆ์‹œ
      • southkorea/seoul/+/temperature
        • ์„œ์šธ์‹œ์˜ ๋ชจ๋“  ๊ตฌ์— ๋Œ€ํ•œ ์˜จ๋„๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
        • โœ…ย southkorea/seoul/gangnam/temperature
        • โœ…ย southkorea/seoul/nowon/temperature
        • โœ…ย southkorea/seoul/jongno/temperature
        • โŒย southkorea/seoul/gangnam/sinsa/temperature
  • multi-level
    • ํ•ด์‹œ(#) ๊ธฐํ˜ธ๋ฅผ ๋งˆ์ง€๋ง‰ topic level์— ๋ถ™์—ฌ ๋™์ผ ๋ ˆ๋ฒจ ๋ฐ ํ•˜์œ„ ๋ ˆ๋ฒจ๊นŒ์ง€ ๊ตฌ๋… ๊ฐ€๋Šฅ
    • ์˜ˆ์‹œ
      • southkorea/seoul/#
        • ์„œ์šธ์‹œ์˜ ๋ชจ๋“  ๊ตฌ์— ๋Œ€ํ•œ ์˜จ๋„๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
        • โœ…ย southkorea/seoul/gangnam/temperature
        • โœ…ย southkorea/seoul/jongno/temperature
        • โœ…ย southkorea/seoul/jongno/humidity
        • โŒย southkorea/chungnam/gangnam/temperature
          • ์‹ค์ œ๋ก  ์ถฉ๋‚จ์— ๊ฐ•๋‚จ์ด ์—†์ง€๋งŒ ๋‹จ์ˆœ ์˜ˆ์‹œ

์ฐธ๊ณ  ๋ฌธํ—Œ

MQTT - The Standard for IoT Messaging

MQTT Essentials: Your 2025 Learning Hub for IoT & IIoT Data Streaming

MQTT Client, MQTT Broker, and MQTT Server Connection Establishment Explained โ€“ MQTT Essentials: Part 3

MQTT Topics, Wildcards, & Best Practices โ€“ MQTT Essentials: Part 5

Beginners Guide To The MQTT Protocol

Understanding the MQTT Protocol Packet Structure