{{위키데이터 속성 추적}}
{{Infobox technology standard
| title              = MQTT
| status             = 출판됨
| image = Mqtt-hor.svg
| caption = MQTT 로고
| year_started       = 1999
| version            = 5.0<ref name=mqtt5_spec>{{웹 인용|url=https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html|title=MQTT Version 5.0|date=2019-03-07|publisher=[[OASIS]]|access-date=2020-12-15}}</ref>
| versionDate        = 2019년 3월 7일
| preview            = 
| previewDate        = 
| organization       = [[OASIS]]
| base_standards     =
| related_standards  = MQTT-SN<ref name=mqttsn_sc>{{웹 인용|url=https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=mqtt-sn|title=MQTT SN Subcommittee|publisher=OASIS|access-date=2020-12-15}}</ref>
| domain             = 
| license            =
| website            = {{url|//mqtt.org/}}
| committee          = OASIS Message Queuing Telemetry Transport Technical Committee<ref name=tc_charter>{{웹 인용|url=https://www.oasis-open.org/committees/mqtt/charter.php|title=OASIS Message Queuing Telemetry Transport (MQTT) Technical Committee Charter|publisher=OASIS|access-date=2020-12-15}}</ref>
| editors            = Andrew Banks (IBM), Ed Briggs (Microsoft), Ken Borgendale (IBM), Rahul Gupta (IBM)<ref name=mqtt5_spec />
}}
{{IP스택}}
'''MQTT'''<ref>{{웹 인용|title=MQTT 3.1.1 specification |url=http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html |publisher=[[OASIS (기관)|OASIS]] |date=December 10, 2015 |access-date=April 25, 2017}}</ref>(메시지 큐잉 텔레메트리 트랜스포트, Message Queuing Telemetry Transport)는 [[국제 표준화 기구|ISO 표준]](ISO/IEC PRF 20922)<ref name="ISO">{{웹 인용|url=https://www.iso.org/standard/69466.html |title=ISO/IEC 20922:2016 Information technology -- Message Queuing Telemetry Transport (MQTT) v3.1.1 |last1= |first1= |last2= |first2= |date=June 15, 2016 |website=iso.org |publisher=[[국제 표준화 기구]] |pages= |access-date= |quote= }}</ref> [[발행-구독 모델|발행-구독]] 기반의 메시징 프로토콜이다. [[인터넷 프로토콜 스위트|TCP/IP 프로토콜]] 위에서 동작한다. "작은 코드 공간"(small code footprint)이 필요하거나 네트워크 대역폭이 제한되는 원격 위치와의 연결을 위해 설계되어 있다. [[발행-구독 모델|발행-구독 메시징 패턴]]은 [[메시지 브로커]]가 필요하다.

[[IBM]]의 [[앤디 스탠퍼드 클락]]과 시러스 링크의 알렌 니퍼(Arlen Nipper)가 1999년 이 프로토콜의 최초 버전을 만들었다.<ref>{{웹 인용|url=http://mqtt.org/2009/07/10th-birthday-party|title=10th birthday party|work=MQTT.org|date=July 2009|access-date=April 25, 2015|archive-date=2018-12-14|archive-url=https://web.archive.org/web/20181214070638/http://mqtt.org/2009/07/10th-birthday-party}}</ref>

2013년, IBM은 MQTT v3.1을 [[OASIS (기관)|OASIS]] 표준화 단체에 제출하였다.<ref>{{웹 인용|title=OASIS Message Queuing Telemetry Transport (MQTT) Technical Committee|url=https://www.oasis-open.org/committees/mqtt/charter.php|publisher=OASIS|access-date=May 9, 2014}}</ref> MQTT-SN<ref>{{웹 인용 |title=MQTT For Sensor Networks (MQTT-SN) Protocol Specification Version 1.2 |url=http://mqtt.org/MQTT-S_spec_v1.2.pdf |author1=Stanford-Clark, Andy |author2=Hong Linh Truong |website=mqtt.org |publisher=MQTT |format=PDF |page=27 |date=November 14, 2013 |access-date=May 9, 2014 |archive-date=2013-08-12 |archive-url=https://web.archive.org/web/20130812095833/http://mqtt.org/MQTT-S_spec_v1.2.pdf }}</ref>은 [[직비]]와 같은 비 TCP/IP 네트워크의 임베디드 장치에 초점을 둔 메인 프로토콜의 일종이다.

역사적으로, MQTT의 MQ는 [[IBM 웹스피어 MQ]](당시 'MQSeries') [[메시지 큐]] 제품 계열에서 비롯된 것이다.<ref>{{웹 인용|title=IBM MQ |url=https://www.ibm.com/products/mq |publisher=[[IBM]] |access-date=November 18, 2013}}</ref> 그러나 모든 상황에서 표준 기능으로서 큐잉 그 자체를 지원하는 것은 필수가 아니다.<ref>{{웹 인용 |title=Choosing Your Messaging Protocol: AMQP, MQTT, or STOMP |url=http://blogs.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-stomp.html |last=Piper |first=Andy |website=blogs.vmware.com |publisher=[[VM웨어]] Blogs |page=1 |date=February 19, 2013 |access-date=October 23, 2013 |보존url=https://web.archive.org/web/20131017220122/http://blogs.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-stomp.html |보존날짜=2013-10-17 |url-status=dead }}</ref>

== 메시지 유형 ==
=== 연결하기 ===
[[파일:MQTT protocol example without QoS.svg|섬네일|right|300px|MQTT 연결의 예 (QoS 0). retain 플래그로 인해 클라이언트 B로부터의 최초 메시지가 저장된다.]]
서버와의 연결 수립을 기다린 다음 노드 간 링크를 만든다.

=== 연결 끊기 ===
MQTT<ref>{{웹 인용|url=https://www.ioctrl.com/|title=Cross-Platform MQTT Client|work=ioctrl.com|archive-url=https://web.archive.org/web/20210904195627/https://www.ioctrl.com/|archive-date=2021-09-04|accessdate=2021-09-04|url-status=live}}</ref> 클라이언트가 해야 할 일을 기다리고 [[인터넷 프로토콜 스위트]] 세션의 연결이 끊어지기를 기다린다.

=== 발행하기 ===
MQTT 클라이언트에 요청이 전달된 직후 애플리케이션 스레드에 즉시 반환한다.

== 서비스 품질 (QoS) ==
{{본문|QoS}}

브로커에 대한 각 연결은 QoS 기준을 지정할 수 있다. 부하가 늘어나는 순서에 따라 다음과 같이 분류된다:
* 최대 한 차례 - 메시지는 한 번만 보내면 클라이언트와 브로커는 전달 확인 응답을 위한 추가 단계를 밟지 않는다. (보낸 다음 잊어버림)
* 최소 한 차례 - 메시지는 확인 응답을 수신할 때까지 여러 번 송신자로부터 재시도된다. (확인 응답을 거치는 전달)
* 정확히 한 번 - 송신자와 수신자는 2단계 핸드셰이크에 참여함으로써 오직 하나의 메시지 사본만을 수신하는 것을 보장한다. (보장된 전달)<ref>{{웹 인용|url=https://www.ibm.com/support/knowledgecenter/SSMKHH_10.0.0/com.ibm.etools.mft.doc/bc62020_.htm|title=IBM Knowledge Center|website=www.ibm.com|language=en-US|access-date=2018-01-30}}</ref>
이 필드는 기반이 되는 TCP 데이터 전송의 처리에 영향을 주지 않으며, MQTT 송신자와 수신자 간에만 사용된다.

== 같이 보기 ==
* [[RabbitMQ]]
* [[AMQP]]

== 각주 ==
{{각주}}

== 외부 링크 ==
* {{공식 웹사이트}}

{{전거 통제}}

[[분류:응용 계층 프로토콜]]
[[분류:데이터 전송]]
[[분류:IBM 웹스피어|MQ]]
[[분류:메시지 지향 미들웨어]]
[[분류:네트워크 프로토콜]]