MQTT的設計遵循以下的原則:
為了滿足不同的場景,MQTT支持三種不同級別的服務質量(Quality of Service,QoS)為不同場景提供消息可靠性:
MQTT擁有14種不同的消息類型:
實現MQTT協議需要客戶端和服務器端通訊完成,在通訊過程中,MQTT協議中有三種身份:發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發布者和訂閱者都是客戶端,消息代理是服務器,消息發布者可以同時是訂閱者。
MQTT傳輸的消息分為:主題(Topic)和負載(payload)兩部分:
MQTT會構建底層網絡傳輸:它將建立客戶端到服務器的連接,提供兩者之間的壹個有序的、無損的、基於字節流的雙向傳輸。
當應用數據通過MQTT網絡發送時,MQTT會把與之相關的服務質量(QoS)和主題名(Topic)相關連。
壹個使用MQTT協議的應用程序或者設備,它總是建立到服務器的網絡連接。客戶端可以:
MQTT服務器以稱為"消息代理"(Broker),可以是壹個應用程序或壹臺設備。它是位於消息發布者和訂閱者之間,它可以:
訂閱包含主題篩選器(Topic Filter)和最大服務質量(QoS)。訂閱會與壹個會話(Session)關聯。壹個會話可以包含多個訂閱。每壹個會話中的每個訂閱都有壹個不同的主題篩選器。
每個客戶端與服務器建立連接後就是壹個會話,客戶端和服務器之間有狀態交互。會話存在於壹個網絡之間,也可能在客戶端和服務器之間跨越多個連續的網絡連接。
連接到壹個應用程序消息的標簽,該標簽與服務器的訂閱相匹配。服務器會將消息發送給訂閱所匹配標簽的每個客戶端。
壹個對主題名通配符篩選器,在訂閱表達式中使用,表示訂閱所匹配到的多個主題。
消息訂閱者所具體接收的內容。
MQTT協議中定義了壹些方法(也被稱為動作),來於表示對確定資源所進行操作。這個資源可以代表預先存在的數據或動態生成數據,這取決於服務器的實現。通常來說,資源指服務器上的文件或輸出。主要方法有: