MQTT(Message Queuing Telemetry Transport)는 TCP/IP 프로토콜을 기반으로 구축된 게시/구독 모델을 기반으로 하는 "경량" 통신 프로토콜입니다. 예를 들어 친구에게 이메일을 보내는 경우 전송이 완료된 후 다른 작업을 수행할 수 있으며 수신자는 즉시 응답할 필요가 없습니다. 이는 전형적인 비동기 게시/입니다. 구독 시나리오. 또 다른 일반적인 동기식 요청/응답 시나리오는 전화를 걸고 받는 시나리오와 비교할 수 있습니다.
MQTT의 설계는 다음 원칙을 따릅니다.
다양한 시나리오를 충족하기 위해 MQTT는 세 가지 수준의 서비스 품질(서비스 품질, QoS)을 지원하여 안정적인 메시지를 제공합니다. 다양한 시나리오의 특성:
MQTT에는 14가지 메시지 유형이 있습니다.
MQTT 프로토콜을 구현하려면 클라이언트와 서버 간의 통신이 필요합니다. MQTT 프로토콜: 게시 게시, 브로커(서버), 구독. 그 중 메시지 게시자와 구독자는 모두 클라이언트이고, 메시지 에이전트는 서버이며, 메시지 게시자는 동시에 구독자가 될 수 있습니다.
MQTT에서 전송되는 메시지는 주제와 페이로드의 두 부분으로 나뉩니다.
MQTT는 기본 네트워크 전송을 구축합니다. 클라이언트에서 서버로의 연결을 설정하고, 둘 사이의 순서 있고 무손실 바이트 스트림 기반 양방향 전송입니다.
MQTT 네트워크를 통해 애플리케이션 데이터가 전송되면 MQTT는 관련 QoS(서비스 품질)와 주제 이름(Topic)을 연결합니다.
MQTT 프로토콜을 사용하는 애플리케이션이나 장치는 항상 서버에 대한 네트워크 연결을 설정합니다. 클라이언트는 다음을 수행할 수 있습니다.
MQTT 서버는 "메시지 브로커"(Broker)라고 하며 애플리케이션 또는 장치일 수 있습니다. 메시지 게시자와 구독자 사이에 위치합니다.
구독에는 주제 필터와 최대 서비스 품질(QoS)이 포함됩니다. 구독은 세션과 연결됩니다. 세션에는 여러 구독이 포함될 수 있습니다. 각 세션의 각 구독에는 서로 다른 주제 필터가 있습니다.
각 클라이언트가 서버와의 연결을 설정한 후에는 세션이 되며 클라이언트와 서버 간에 상태 저장 상호 작용이 있습니다. 세션은 네트워크 사이에 존재하며 클라이언트와 서버 사이의 여러 연속 네트워크 연결에 걸쳐 있을 수 있습니다.
서버의 구독과 일치하는 애플리케이션 메시지에 첨부된 태그입니다. 서버는 일치하는 태그를 구독하는 모든 클라이언트에게 메시지를 보냅니다.
구독과 일치하는 여러 주제를 나타내기 위해 구독 표현식에 사용되는 주제 이름에 대한 와일드카드 필터입니다.
메시지 구독자가 받은 특정 콘텐츠입니다.
MQTT 프로토콜은 특정 리소스에 대한 작업을 나타내는 몇 가지 메서드(작업이라고도 함)를 정의합니다. 이 리소스는 서버 구현에 따라 기존 데이터나 동적으로 생성된 데이터를 나타낼 수 있습니다. 일반적으로 리소스는 서버의 파일이나 출력을 나타냅니다. 주요 방법은 다음과 같습니다: