Định dạng thông điệp MQTT

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu giao thức MQTT(Message queue telemetry transport) và ứng dụng thu thập dữ liệu cảm biến theo MQTT (Trang 28 - 32)

MQTT có 14 loại thông điệp khác nhau. Thông thường, người dùng cuối chỉ cần sử dụng các các loại tin nhắn CONNECT, PUBLISH, SUBSCRIBE, và UNSUBSCRIBE. Các loại tin nhắn khác được sử dụng cho các cơ chế nội bộ và các luồng gửi tin nhắn [6].

Bảng 1.1: Bảng các loại thông điệp và mô tả [6]

Loại thông điệp Mô tả

CONNECT Client yêu cầu kết nối Server

CONNACK Kết nối được chấp nhật

PUBLISH Một thông điệp được tạo mới

PUBACK Thông điệp phản hồi cho PUBLISH với QoS1

PUBREC Phần đầu tiên của luồng thông điệp với QoS2

PUBREL Phần hai của luồng thông điệp với QoS2

SUBSCRIBE Một thông điệp được sử dụng bởi client để lấy thông tin từ các chủ đề cụ thể

SUBACK Sự thừa nhận một thông điệp SUBSCRIBE

UNSUBSCRIBE Một thông điệp đã sử dụng của client và không dùng nữa từ

một chủ đề đã chọn

UNSUBACK Sự thừa nhận một thông điệp UNSUBSCRIBE

PINGREQ Thông điệp gửi từ một client đã kết nối đến server để kiểm tra

xem server có còn hiện hữu không?

PINGRESP Thông điệp phản hồi từ server của một yêu cầu từ bản tin

PINGREQ rằng vẫn server còn hiện hữu.

DISCONNECT Client gửi thông điệp trước khi ngắt kết nối.

Cấu trúc của một gói kiểm soát MQTT

Các giao thức MQTT hoạt động bằng cách trao đổi một loạt các MQTT kiểm soát gói tin một cách xác định. Phần này mô tả định dạng của những gói tin.

Một gói MQTT kiểm soát bao gồm lên đến ba phần, luôn luôn theo thứ tự sau như minh họa trong Bảng 1.2.

Bảng 1.2: Cấu trúc của một gói tin điều khiển MQTT

Cố định tiêu đề, hiện diện trong tất cả các gói điều khiển MQTT

Biến tiêu đề, hiện nay ở một số gói kiểm soát MQTT

Trọng tải, hiện diện trong một số gói kiểm soát MQTT

Bảng 1.3: Định dạng cố định của đầu file bản tin MQTT

Bit 7 6 5 4 3 2 1 0

byte 1 Các loại gói kiểm soát MQTT Các cờ cụ thể cho từng kiểm soát loại gói MQTT

byte 2 … Chiều dài còn lại

Các chủ đề của giao thức MQTT

Chủ đề là một chuỗi UTF-8, được sử dụng bởi các broker để lọc tin nhắn cho mỗi khách hàng được kết nối. Một chủ đề bao gồm một hoặc nhiều hơn mức chủ đề. Mỗi cấp độ chủ đề được phân cách bằng một dấu gạch chéo (độ phân cách chủ đề).

So với một hàng đợi thông điệp, một chủ đề là rất nhẹ. Không cần tạo ra các chủ đề cho một khách hàng mong muốn trước khi xuất bản hoặc đăng ký vào nó, bởi vì một broker chấp nhận tất cả các chủ đề hợp lệ [6].

Các ký hiệu trong chủ đề của giao thức MQTT

MQTT chủ đề ký tự đại diện có thể được sử dụng cho các bộ lọc chủ đề khi đăng ký vào thông điệp MQTT. Những kí hiệu là hữu ích nếu một khách hàng muốn nhận tin nhắn cho các chủ đề khác nhau với cấu trúc tương tự cùng một lúc.

Ký tự đại diện không được phép đưa vào tên chủ đề khi xuất bản thông điệp. Các ký tự đại diện được dành riêng và không được sử dụng trong chủ đề [6].

Bảng 1.4: Bảng mô tả ký tự đại diện của chủ đề thông điệp MQTT [6]

Ký tự Ký hiệu Ý nghĩa

Single- level Wildcard

+

Một ký tự đại diện phù hợp với một hoàn chỉnh mức chủ đề. Nó phải chiếm toàn bộ một mức đề. Ký tự đại diện này có thể được sử dụng nhiều hơn một lần trong một chủ đề subscriber.

Multi-level Wildcard #

Một ký tự đại diện phù hợp với bất kỳ số lượng các cấp trong một chủ đề. Nó phải là ký tự cuối cùng của một chủ đề subscriber.

Các mức chất lƣợng của dịch vụ (QoS)

Mỗi MQTT xuất bản được gửi với một trong ba mức QoS. Các mức này được kết hợp với bảo đảm khác nhau liên quan đến độ tin cậy của các thông báo giao hàng. Cả khách hàng và broker cung cấp thêm cơ chế bền bỉ và trả để tăng độ

tin cậy trong trường hợp sự cố mạng, khởi động lại các ứng dụng, và hoàn cảnh bất ngờ khác [6].

MQTT dựa trên TCP, trong đó có bảo đảm độ tin cậy trên riêng của mình. Mức QoS là cần thiết để vượt qua mất mát dữ liệu trên các mạng TCP cũ và không đáng tin cậy. Điều này vẫn có thể là một mối quan tâm hợp lệ cho các mạng di động hiện nay.

Ba mức QoS khác nhau của xác định nội dung được quản lý bởi các giao thức MQTT. Mặc dù mức độ cao hơn của QoS là đáng tin cậy hơn, chúng có nhiều độ trễ và băng thông yêu cầu để khách hàng đăng ký có thể xác định mức độ QoS cao nhất mà họ muốn nhận được [6].

Hình 1. 6: Các mức chất lƣợng dịch vụ của giao thức MQTT [7]

Bảng 1.5: Bảng mô tả các mức QoS và ý nghĩa của thông điệp giao thức MQTT [6]

Các mức QoS Mô tả

0

Tối đa một lần giao hàng: Người gửi cố gắng với nỗ lực tốt nhất để gửi tin nhắn và dựa trên độ tin cậy của TCP.

1

Ít nhất một lần giao hàng: Người nhận sẽ nhận được thông báo ít nhất một lần. Nếu người nhận không chấp nhận thông báo hoặc thừa nhận bị mất trên đường đi, nó sẽ được bực bội cho đến khi người gửi được một sự thừa nhận. Tin trùng lặp có thể xảy ra.

2

Đúng một lần giao hàng: Giao thức làm cho chắc chắn rằng thông điệp sẽ đến đúng một lần ở người nhận. Điều này làm tăng chi phí truyền thông nhưng là lựa chọn tốt nhất khi không mất cũng không trùng lặp của các thông điệp này là chấp nhận được.

Nguyện vọng cuối và khế ƣớc (Last Will and Testament - LWT)

Một tin nhắn có thể được xác định bởi một khách hàng MQTT khi kết nối với các nhà môi giới MQTT. Nếu khách hàng mà không ngắt kết nối một cách duyên dáng, người môi giới sẽ gửi ra thông điệp LWT thay mặt cho khách hàng khi mất kết nối được phát hiện [6].

Giữ lại tin nhắn

Mỗi gửi MQTT tin nhắn có thể được gửi dưới dạng tin nhắn giữ lại. Một tin nhắn lại là cuối cùng được biết giá trị tốt và tồn tại ở môi giới MQTT cho các chủ đề cụ thể. Mỗi khi một khách hàng mới đặt mua mà chủ đề cụ thể, nó sẽ ngay lập tức nhận được thông báo giữ lại cuối cùng về chủ đề đó. Đây cũng là trường hợp cho phù hợp với các kí hiệu [6].

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu giao thức MQTT(Message queue telemetry transport) và ứng dụng thu thập dữ liệu cảm biến theo MQTT (Trang 28 - 32)

Tải bản đầy đủ (PDF)

(78 trang)