MQTT được hiểu như một phương tiện truyền tải theo dạng tin nhắn. Vậy cụ thể MQTT là gì? Chúng hoạt động như thế nào? Hãy cùng theo dõi qua bài viết dưới đây nhé!
MQTT là gì?
MQTT là một giao thức nhắn tin theo tiêu chuẩn OASIS cho Internet of Things (IoT). Nó được sử dụng như một phương tiện truyền tải tin nhắn dạng xuất bản/đăng ký rất nhẹ. MQTT rất thích hợp để kết nối các thiết bị từ xa với băng thông mạng thấp. MQTT ngày nay được sử dụng nhiều trong các ngành công nghiệp. Có thể kể đến như sản xuất ô tô, viễn thông, dầu khí,…
Cách thức MQTT hoạt động là gì?
Quá trình hoạt động của MQTT được chia thành 4 giai đoạn. Đó là kết nối, xác thực, giao tiếp và kết thúc. Các máy khách bắt đầu việc tạo kết nối TCP/IP tới broker. Chúng làm bằng cách sử dụng cổng tiêu chuẩn hoặc cổng tùy chỉnh. Cổng này được xác định bởi các nhà phát triển broker.
Giao thức MQTT được phát hành với mục đích chính là cho các thiết bị IoT sử dụng riêng. Hạn chế được các tài nguyên sử dụng. Bởi trong vài trường hợp, SSL/TLS không phải là một tùy chọn bắt buộc. Lúc đó, việc xác thực được thực hiện dưới dạng tên người dùng và mật khẩu. Ngoài ra, vẫn có một số broker mở được công bố trên internet. Chúng sẽ chấp nhận các tài khoản máy khách ẩn danh. Lúc này, tên người dùng và mật khẩu sẽ được bỏ trống.
MQTT rất nhẹ bởi các thông điệp trong giao thức chỉ có một mã nhỏ. Mỗi thông báo sẽ có tiêu đề cố định có giá trị khoảng 2 byte. Một tiêu đề biến tùy chọn thì dung lượng sẽ giới hạn ở 256 megabyte. Bên cạnh đó, MQTT cũng hỗ trợ các thông điệp nhị phân có kích thước lớn hơn khoảng 256 MB.
Muốn kết thúc một phiên MQTT thì publisher hoặc subscriber cần gửi thông báo. Thông báo sẽ là DISCONNECT đến broker và sau đó ngắt kết nối. Điều này được gọi là graceful shutdown. Sau đó, máy khách vẫn có thể kết nối lại dễ dàng bằng cách cung cấp ID máy khách. Tiếp tục tại chính điểm nó đã dừng yêu cầu kết nối.
Lịch sử phát triển giao thức MQTT
MQTT được phát minh vào năm 1999 bởi 2 nhà nghiên cứu tài hoa. Đó là Tiến sĩ Andy Stanford-Clark của IBM và Arlen Nipper của Arcom. MQTT có nhiệm vụ đem đến tính hiệu quả về chi phí và sự đáng tin cậy. Ban đầu, MQTT kết nối các thiết bị giám sát trong ngành dầu khí với máy chủ giám sát từ xa. Sau này, chúng được ứng dụng vào cuộc sống nhiều hơn. Chúng sử dụng cho việc truyền dữ liệu từ cảm biến tại sa mạc về trung tâm điều khiển. Để có thể giám sát, thu thập dữ liệu bên ngoài, MQTT sử dụng cấu trúc liên kết publish/subscribe dựa trên TCP/IP. Lúc này, Dữ liệu sẽ được truyền tải và chi phí được tiết kiệm tuyệt đối.
MQTT trước đây còn được gọi là SCADA protocol, MQIsdp và WebSphere MQTT. Tuy nhiên, giờ đây các biến thể này đều bị ngừng sử dụng.
Ngày nay, MQTT chịu sự quản lý từ OASIS. MQTT chính thức được phê duyệt là tiêu chuẩn OASIS vào ngày 28 tháng 10 năm 2015. Cuối tháng 1 năm 2016, MQTT chính thức được chấp nhận là tiêu chuẩn của Tổ chức Tiêu chuẩn hóa Quốc tế (ISO). Vì những lợi ích mà nó mang lại, MQTT liên tục được cải tiến. Hiện nó đang thực hiện việc hỗ trợ cho WebSockets. Đây được xem là một giao thức cho phép giao tiếp hai chiều. Giữa máy khách và broker trong thời gian xác định.
MQTT có ý nghĩa như thế nào trong IoT?
MQTT là một trong những giao thức được sử dụng phổ biến nhất trong IoT. MQTT cho phép cả những thiết bị IoT hạn chế nhất về tài nguyên được hoạt động. Chúng có thể gửi hoặc xuất bản thông tin về 1 chủ đề nhất định. Thông tin được đưa đến máy chủ có chức năng như một message broker. Sau đó, broker sẽ đưa thông tin ra ngoài cho máy khách đã subscribe chủ đề trước đó. Theo đó, một chủ đề được hiểu như một đường dẫn tệp phân cấp. Máy khách có thể subscribe một cấp cụ thể trong hệ thống phân cấp của chủ đề. Hay có thể sử dụng ký tự chuyên biệt để subscribe nhiều cấp.
Một số giao thức khác đang cạnh tranh trực tiếp với MQTT
- CoAP: Sử dụng kiểu giao tiếp request/response. Đó là kiểu giao tiếp yêu cầu và phản hồi.
- AMQP: Cách thức hoạt động tương tự MQTT. Sử dụng kiểu giao tiếp publish/subscribe.
- SIOMP: Đây là giao thức dưới dạng văn bản.
- Mosquitto: Được biết đến như một mã nguồn mở của MQTT broker.
- SMCP: Là một phần của CoAP. Chúng được sử dụng trong môi trường nhúng.
- SSI: Là giao thức truyền thông giúp truyền thông tin giữa máy tính và cảm biến.
- DDS: Sử dụng publish/ subscribe trực tiếp trong thời gian thực cho các hệ thống nhúng.
Ưu điểm của MQTT là gì?
- MQTT có thể truy cập vào hệ thống IoT thông qua hệ thống SCADA. MQTT có một số ưu điểm vượt trội như sau:
- Phân phối thông tin hiệu quả hơn
- Tăng khả năng mở rộng
- Giảm đáng kể tiêu thụ băng thông mạng
- Giảm tốc độ cập nhật
- Phù hợp cho việc điều khiển
- Tối đa hóa băng thông đang sử dụng
- Chi phí đầu tư cực kỳ thấp
- Rất an toàn vì bảo mật dựa trên sự cấp phép
- Được các doanh nghiệp hàng đầu tin tưởng lựa chọn. Ví dụ như Facebook, Amazon,…
- Giảm thiểu thời gian phát triển
- Giao thức publish/subscribe thu thập được nhiều dữ liệu. Nhưng chỉ cần sử dụng ít băng thông.
Nhược điểm của MQTT là gì?
- MQTT có chu kỳ truyền chậm hơn tương đối so với CoAP.
- Tài nguyên của MQTT hoạt động dựa trên subscribe động. Còn CoAP sẽ sử dụng hệ thống tài nguyên tĩnh, có tính ổn định hơn.
- MQTT không được mã hóa. Nó chỉ sử dụng TLS/SSL để mã hóa bảo mật.
- MQTT là giao thức truyền thông nhưng khó để tạo ra được mạng mở rộng toàn cầu.
Một số ứng dụng MQTT đã được triển khai hiện nay
- Facebook Messenger: Trò chuyện trực tuyến chính là ứng dụng được sử dụng. Facebook đã sử dụng các khía cạnh của MQTT trong Facebook Messenger.
- Amazon Web Services đã công bố Amazon IoT dựa trên MQTT vào năm 2015.
- Các tổ chức không gian địa lý Sensor Things API. Họ đã công bố đặc điểm kỹ thuật tiêu chuẩn có một phần mở rộng MQTT. Tiêu chuẩn lúc này như một giao thức thông báo bổ sung ràng buộc. Nó đã được chứng minh trong một thí điểm IoT của Bộ An ninh Nội địa Hoa Kỳ.
- Adafruit đưa ra một MQTT miễn phí. Đó chính là Cloud Service cho thí nghiệm IoT. Chúng còn được biết đến với tên gọi Adafruit IO trong năm 2015.
- Microsoft Azure IoT Hub sử dụng MQTT làm giao thức chính cho các tin nhắn từ xa.
- XIM, Inc. đã ra mắt ứng dụng khách MQTT có tên MQTT Buddy vào năm 2017. Đây là ứng dụng MQTT dành cho Android và iOS. Người dùng được sử dụng ngôn ngữ có sẵn bằng tiếng Anh, Nga và Trung Quốc.
- Node-RED hỗ trợ các nút MQTT kể từ phiên bản 0.14. Nhiệm vụ phát minh để định dạng cấu hình đúng các kết nối TLS.
Như vậy, bài viết để cung cấp đầy đủ kiến thức về khái niệm MQTT là gì. Chắc hẳn các bạn đã hiểu và có thêm nhiều kiến thức về giao thức này. Hãy đọc bài viết của chúng tôi và ghi chú lại nhé!