[物聯網協定與資安的距離] MQTT 通訊協定淺談
Published in
10 min readOct 12, 2020
前言
在物聯網 IoT 的世界當中有許多傳送給伺服器或接收來自伺服器訊息的方法,常見的接收與傳送的方法有:網站標準通訊協定─ HTTP 通訊協定或是透過雙方連續通訊的 WebSocket,而今天的主軸,來介紹由 IBM 提出,現在轉變成開放原始碼的 MQTT 協定,內容包含 MQTT 原理、在伺服器中安裝 MQTT Broker 以及與 MQTT 有關的 CVE。
常見的 IoT 通訊協定
在前言中提到三種通訊協定,分別為以下 HTTP、 WebSocket、 MQTT:
- HTTP:Web 標準通訊的協定,可以透過 Web 服務來實作傳送與接收資料。
- WebSocket:雙向通訊與連續接收和傳送資料,單一路徑進行收與送。
- MQTT:發布與訂閱,執行一對多通訊的通訊協定。
MQTT 原理
1999 年 IBM 提出第一版本的 MQTT 協定,為了滿足「簡單」、「輕量級」、「網路環境差」的需求,透過「發布」與「訂閱」方式,進行一對多通訊的通訊協定,而在 MQTT 協定中的角色有三種,分別為傳送訊息的使用者─ Publisher 、透過中繼通訊伺服器就算不知道雙方 IP 也可以輕鬆傳訊─ Broker、以及接收訊息的使用者─ Subscriber。
MQTT 的版本
- MQTT v3.1.0
- MQTT v3.1.1 (目前使用):使用 TCP / IP 協議
- MQTT v5( 2018 年 01 月釋出)
- MQTT-SN(2013 年釋出):嘗試使用 UDP 進行傳輸、近幾年規範未更新
MQTT 協定中的角色
- Publisher: 作為傳送訊息的使用者