Internet of Things (IOT) là công nghệ cho phép chúng ta truyền dữ liệu và lệnh tới các thiết bị thông minh trong thời gian thực. IoT là một mạng lưới các thiết bị được kết nối qua Internet, với một trung tâm có thể phân tích dữ liệu tổng hợp. Các điểm cuối IoT có thể là một người, một động vật, một ngôi nhà, một trang trại, một tòa nhà hoặc toàn bộ thành phố. Nhưng trong mọi trường hợp, những vật này có thể “nói chuyện” với nhau mà không cần bất kỳ sự can thiệp nào của con người thông qua giao thức IoT.

Có nhiều giao thức khác nhau cho các lớp khác nhau trong kiến trúc IoT và trong bài này, chúng ta chỉ xem xét một vài giao thức trong số đó, bao gồm: MQTT, HTTP và CoAP

Độ phổ biến của các giao thức truyền dữ liệu IoT năm 2018 (Nguồn: t-mobile.com)

1. Message Queuing Telemetry Transport (MQTT)

MQTT là gì?

MQTT là một giao thức kết nối internet vạn vật trong các ứng dụng M2M.

Thế giới kết nối máy móc với máy móc

MQTT là một giao thức theo cơ chế xuất bản/đăng ký,  ở đó máy client có thể xuất bản hay nhận bản tin. Nó giúp giao tiếp dễ dàng giữa nhiều thiết bị.

Nó là một giao thức nhắn tin đơn giản được thiết kế cho các thiết bị bị hạn chế và có băng thông thấp, vì vậy nó là một giải pháp hoàn hảo cho các ứng dụng internet vạn vật.

Nó là một giao thức cực kỳ nhẹ cho việc truyền tải bản tin đăng ký/xuất bản. Nó rất hữu ích cho việc kết nối với vị trí ở xa nơi có băng thông không cao.

Đặc điểm của MQTT

MQTT có một số tính năng độc đáo khó có thể tìm thấy trong các giao thức khác. Dưới đây là một số tính năng của MQTT:

  • Nó không yêu cầu cả Client và Server phải thiết lập kết nối cùng một lúc;
  • Nó cho phép Client đăng ký lựa chọn chủ đề để họ có thể nhận được thông tin họ đang tìm kiếm nhanh chóng;
  • Nó cung cấp truyền dữ liệu nhanh hơn, giống như cách WhatsApp / messenger cung cấp việc phân phối nhanh hơn. Đó là một giao thức nhắn tin thời gian thực;
  • Nó được thiết kế như một giao thức nhắn tin đơn giản và nhẹ sử dụng hệ thống xuất bản / đăng ký để trao đổi thông tin giữa Client và Server;
  • Nó là một giao thức máy với máy, tức là nó cung cấp giao tiếp giữa các thiết bị.

Kiến trúc MQTT

Để hiểu kiến trúc MQTT, trước tiên chúng ta xem xét các thành phần của MQTT

Message

Message là bản tin được truyền đi bởi giao thức trên toàn mạng cho ứng dụng. Khi bản tin được truyền qua mạng, thì bản tin chứa các thông số sau:

  • Dữ liệu của thông tin muốn truyền 
  • Quality of Service (QoS)
  • Thuộc tính
  • Tên chủ đề
Client

Trong MQTT, người đăng ký (subscriber) và người xuất bản ( publisher) là hai vai trò của máy client. Các client đăng ký các chủ đề để xuất bản và nhận bản tin. Nói một cách dễ hiểu, chúng ta có thể nói rằng nếu bất kỳ chương trình hoặc thiết bị nào sử dụng MQTT, thì thiết bị đó được gọi là Client. Một thiết bị là một Client nếu nó mở kết nối mạng với máy chủ, xuất bản các bản tin mà các Client khác muốn xem, đăng ký nhận các bản tin mà nó muốn nhận, hủy đăng ký các bản tin mà nó không muốn nhận và đóng kết nối mạng với máy chủ.

Trong MQTT, khách hàng thực hiện hai hoạt động:

Truy xuất và truyền tải dữ liệu (nhiệt độ) trong MQTT

Publish: Khi Client gửi dữ liệu đến máy chủ, thì hoạt động này là một Publish.

Subscribe: Khi Client nhận được dữ liệu từ máy chủ, thì hoạt động này là một Subscribe.

Server

Thiết bị hoặc một chương trình cho phép khách hàng xuất bản bản tin và đăng ký nhận bản tin. Server chấp nhận kết nối mạng từ Client, chấp nhận các thông báo từ Client, xử lý các yêu cầu đăng ký và hủy đăng ký, chuyển tiếp thông báo ứng dụng đến Client và đóng kết nối mạng từ Client.

Topic

Cấu trúc của một Topic

Nhãn được cung cấp cho bản tin được kiểm tra so với sự đăng ký được biết bởi Servergọi là Topic

Ứng dụng của MQTT

Facebook hiện đang sử dụng MQTT cho ứng dụng Messenger của mình, không chỉ vì giao thức tiết kiệm pin trong quá trình nhắn tin giữa điện thoại di động với điện thoại, mà còn vì giao thức này cho phép gửi bản tin một cách hiệu quả trong mili giây (mili giây), bất chấp kết nối internet không nhất quán trên toàn cầu .

Hầu hết các nhà cung cấp dịch vụ đám mây lớn, bao gồm Amazon Web Services (AWS), Google Cloud, IBM Cloud và Microsoft Azure, đều hỗ trợ MQTT.

MQTT rất phù hợp với các ứng dụng sử dụng thiết bị M2M và IoT cho các mục đích như phân tích thời gian thực, bảo trì phòng ngừa và giám sát môi trường, bao gồm nhà thông minh, chăm sóc sức khỏe, hậu cần, công nghiệp và sản xuất.

Ưu điểm và nhược điểm của MQTT

Ưu điểm

  • Truyền dữ liệu hiệu quả và thực hiện nhanh chóng do nó là một giao thức nhẹ;
  • Sử dụng mạng có băng thông thấp, do gói dữ liệu được giảm thiểu;
  • Phân phối dữ liệu hiệu quả;
  • Gửi bản tin nhanh chóng và hiệu quả;
  • Sử dụng lượng điện năng nhỏ, tốt cho các thiết bị sử dụng pin;
  • Giảm băng thông mạng, giảm chi phí mạng.

Nhược điểm

  • MQTT có chu kỳ truyền chậm hơn so với CoAP;
  • Tài nguyên hệ thống dành cho MQTT nó thay đổi theo số lượng Topic, trong khi CoAP thì sử dụng tài nguyên ổn định;
  • MQTT không được mã hóa. Thay vào đó, nó sử dụng TLS (Transport Layer Security) / SSL (Secure Sockets Layer) để mã hóa bảo mật;
  • Rất khó để tạo một mạng MQTT có thể mở rộng toàn cầu.

2. HyperText Transfer Protocol (HTTP)

HTTP là gì?

HTTP là viết tắt của HyperText Transfer Protocol, một giao thức ứng áp dụng cho các hệ thống thông tin siêu phương tiện phân tán, cộng tác, cho phép người dùng giao tiếp dữ liệu trên World Wide Web

Ví dụ: http: // www ……..: URL bắt đầu bằng đoạn HTTP

Cụ thể hơn, HTTP là một giao thức yêu cầu/phản hồi không trạng thái, nơi các Client yêu cầu thông tin từ Server và Server sẽ phản hồi các yêu cầu này theo đó (mỗi yêu cầu độc lập với yêu cầu khác). Nó cho phép tìm nạp các tài nguyên, chẳng hạn như tài liệu HTML

Dạng yêu cầu/phản hồi của HTTP

Mục đích của giao thức HTTP 

HTTP được phát minh cùng với HTML để tạo ra trình duyệt web dựa trên văn bản, tương tác đầu tiên: World Wide Web ban đầu. Ngày nay, giao thức này vẫn là một trong những phương tiện chính để sử dụng Internet .

Dữ liệu truyền qua Internet

Hoạt động của HTTP

Dữ liệu HTTP truyền trên giao thức TCP, đảm bảo độ tin cậy của việc phân phối và chia nhỏ các yêu cầu và phản hồi dữ liệu lớn thành các phần mạng có thể quản lý được.

Đây là cách nó hoạt động: lúc đầu, client gửi một gói SYN đến Server và sau đó Server sẽ phản hồi với gói SYN-ACK để xác nhận việc nhận thành công. Tiếp theo, Client lại gửi một gói ACK, bao gồm một thiết lập kết nối – điều này cũng thường được gọi là bắt tay 3 bước. Ngoài ra, Client gửi một yêu cầu HTTP đến Server để tìm tài nguyên và đợi nó phản hồi một yêu cầu. Sau đó webserver sẽ xử lý yêu cầu, tìm tài nguyên và gửi phản hồi đến Client. Nếu Client không yêu cầu thêm tài nguyên, nó sẽ gửi gói FIN để đóng kết nối TCP.

Ứng dụng của HTTP

Giao thức HTTP được sử dụng để khởi động World Wide Web để truyền dữ liệu dưới dạng văn bản, âm thanh, hình ảnh và video từ Server đến trình duyệt web của người dùng và ngược lại. HTTP hiện là nền tảng truyền dữ liệu của ứng dụng duyệt web ngày nay và được sử dụng rộng rãi trong hệ thống Internet of Things. Mặc dù giao thức Http có nhiều nhược điểm trong việc truyền dữ liệu và không phù hợp bằng các giao thức tối ưu khác như MQTT, CoAP, AMQP sử dụng cho IoT, nhưng giao thức này vẫn phổ biến trong lĩnh vực nhà thông minh cũng như việc sử dụng nhiều trong bộ vi điều khiển và vi xử lý tiên tiến.

Ví dụ, các hệ thống dựa trên thế hệ Raspberry Pi mới sử dụng giao thức http để truyền dữ liệu. Arduino cũng sử dụng giao thức này để giao tiếp với các thiết bị khác. Bên cạnh đó, có thêm 3 phiên bản mới của http ra đời nhằm bù đắp những nhược điểm của phiên bản cũ và được áp dụng cho những trường hợp người điều khiển mong muốn.

Ưu và nhược điểm của giao thức HTTP

Ưu điểm

  • Khả năng tìm kiếm: Mặc dù HTTP là một giao thức nhắn tin đơn giản, nó bao gồm khả năng tìm kiếm cơ sở dữ liệu với một yêu cầu duy nhất. Điều này cho phép giao thức được sử dụng để thực hiện các tìm kiếm SQL và trả về kết quả được định dạng thuận tiện trong tài liệu HTML;
  • Dễ lập trình: HTTP được mã hóa dưới dạng văn bản thuần túy và do đó dễ theo dõi và triển khai hơn các giao thức sử dụng mã yêu cầu tra cứu. Dữ liệu được định dạng dưới dạng dòng văn bản chứ không phải dưới dạng chuỗi biến hoặc trường;
  • Bảo mật: HTTP 1.0 tải xuống từng tệp qua một kết nối độc lập và sau đó đóng kết nối. Vì vậy, điều này làm giảm đáng kể nguy cơ bị đánh chặn trong quá trình truyền.

Nhược điểm

  • Không phù hợp với các thiết bị nhỏ: Vì các thiết bị nhỏ, chẳng hạn như cảm biến, không yêu cầu nhiều tương tác và chúng tiêu thụ rất ít năng lượng, HTTP quá nặng nên không phù hợp cho các thiết bị này. Một yêu cầu HTTP yêu cầu tối thiểu chín gói TCP, thậm chí nhiều hơn khi bạn xem xét mất gói do kết nối kém và tiêu đề văn bản thuần túy có thể rất dài dòng;
  • Không được thiết kế cho giao tiếp dựa trên sự kiện: Hầu hết các ứng dụng IoT đều dựa trên sự kiện. Các thiết bị cảm biến đo một số biến như nhiệt độ, chất lượng không khí và có thể cần đưa ra các quyết định theo hướng sự kiện như tắt công tắc. HTTP được thiết kế cho giao tiếp dựa trên phản hồi yêu cầu thay vì giao tiếp theo hướng sự kiện. Ngoài ra, việc lập trình các hệ thống dựa trên sự kiện này sử dụng giao thức HTTP trở thành một thách thức lớn, đặc biệt là do tài nguyên máy tính trên các thiết bị cảm biến không dây có hạn;
  • Vấn đề thời gian thực: Sau khi yêu cầu một tài nguyên đến máy chủ, Client phải đợi Server phản hồi, dẫn đến việc truyền dữ liệu chậm. Cảm biến IoT là các thiết bị nhỏ với tài nguyên máy tính rất hạn chế và do đó không thể hoạt động đồng bộ một cách hiệu quả. Tất cả các giao thức IoT được sử dụng rộng rãi đều dựa trên mô hình không đồng bộ.

3. Constrained Application Protocol (CoAP)

CoAP là gì?

CoAP là một giao thức đơn giản chi phí thấp được thiết kế riêng cho các thiết bị hiệu năng thấp (chẳng hạn như vi điều khiển) và nơi mạng có băng thông thấp. Giao thức này được sử dụng để trao đổi dữ liệu M2M và rất giống với HTTP.

CoAP có các tính năng chính sau:

  • Giao thức web nhỏ gọn được sử dụng trong M2M;
  • Bảo mật bằng DTLS;
  • Trao đổi thông điệp không đồng bộ;
  • Header gói tin nhỏ, dễ tách thông tin;
  • Hỗ trợ URI và loại nội dung;
  • Khả năng proxy và bộ nhớ đệm;
  • Tuỳ chọn khai thác tài nguyên;
  • Liên kết UDP (User Datagram Protocol) với độ tin cậy tùy chọn hỗ trợ các yêu cầu Unicast và Multicast.

Mô hình cấu trúc CoAP

Mô hình tương tác CoAP tương tự như mô hình Client/Server của HTTP.CoAP sử dụng cấu trúc 2 lớp. Lớp dưới là lớp bản tin được thiết kế liên quan đến UDP và chuyển tiếp không đồng bộ, Lớp yêu cầu/phản hồi liên quan đến phương thức giao tiếp và xử lý bản tin yêu cầu/phản hồi.

Các lớp của CoAP

Mô hình bản tin CoAP

Lớp bản tin hỗ trợ 4 loại bản tin: CON (có thể xác nhận), NON (không thể xác nhận), ACK ( đã xác nhận), RST (đặt lại).

  • Truyền tải bản tin tin cậy: Một bản tin có thể xác nhận (CON) được truyền đi truyền lại cho đến khi Server gửi lại bản tin xác nhận (ACK) với cùng một ID. Sử dụng thời gian chờ mặc định và giảm thời gian đếm theo cấp số nhân khi truyền bản tin CON. Nếu Server không thể xử lý bản tin truyền đến, nó sẽ phản hồi bằng cách thay thế bản tin xác nhận (ACK) bằng bản tin đặt lại (RST). 

Truyền bản tin đáng tin cậy

  • Truyền tải bản tin không tin cậy: Một bản tin không yêu cầu gửi tin cậy, có thể được gửi bằng bản tin không tin cậy. Nó sẽ không được xác nhận, nhưng nó vẫn có ID để phát hiện trùng lặp.

Truyền bản tin không đáng tin cậy

Mô hình yêu cầu/phản hồi CoAP

  • Piggy-backed: Một yêu cầu được gửi bằng bản tin có thể xác nhận (CON) hoặc không thể xác nhận (NON), Server sẽ phản hồi bản tin xác nhận (ACK) ngay lập tức cho yêu cầu của Client nếu nó có sẵn. Với phản hồi thành công, ACK chứa mã bản tin phản hồi (được nhận diện bởi mã bản tin), với phản hồi thất bại, ACK chứa mã phản hồi thất bại.

Hai yêu cầu GET có phản hồi ngay lập tức, một thành công, một không tìm thấy

  • Phản hồi trì hoãn: Nếu Server nhận được bản tin CON nhưng không thể phản hồi yêu cầu này ngay lập tức, nó sẽ gửi một bản tin ACK trống tránh trường hợp Client gửi lại bản tin này. Khi Server sẵn sàng đáp ứng yêu cầu này, nó sẽ gửi một bản tin CON mới đến Client và Client trả lời một bản tin CON kèm theo xác nhận. Bản tin ACK từ Client chỉ để xác nhận bản tin CON từ Server.

Yêu cầu GET với phản hồi trì hoãn

Ưu điểm và nhược điểm của CoAP

Ưu điểm 

  • Đây là giao thức đơn giản và header nhỏ gọn hơn do hoạt động qua UDP. Nó cho phép thời gian wake-up ngắn và trạng thái sleep dài. Điều này giúp đạt được tuổi thọ pin dài để sử dụng;
  • Nó sử dụng IPSEC (IP Security) hoặc DTLS (Datagram Transport Layer Security) để cung cấp giao tiếp an toàn;
  • Giao tiếp đồng bộ không cần thiết trong giao thức CoAP;
  • Nó có độ trễ thấp hơn so với HTTP;
  • Nó tránh được việc truyền lại không cần thiết, nên nó tiêu thụ năng lượng ít hơn so với HTTP;
  • Giao thức CoAP được sử dụng như một lựa chọn giao thức tốt nhất cho các mạng trong các thiết bị thông tin, thiết bị truyền thông và thiết bị điều khiển trong mạng nhà thông minh.

Nhược điểm 

  • CoAP là giao thức không tin cậy lắm do sử dụng UDP. Do đó, các thông điệp CoAP đến không có thứ tự hoặc sẽ bị lạc khi chúng đến đích;
  • Nó xác nhận mỗi lần nhận bản tin và do đó tăng thời gian xử lý. Hơn nữa, nó không xác minh xem bản tin nhận đã được giải mã đúng cách hay chưa;
  • Đây là giao thức không được mã hóa như MQTT và sử dụng DTLS để cung cấp bảo mật;
  • CoAP gặp vấn đề giao tiếp khi các thiết bị nằm sau NAT.

Ứng dụng CoAP cho nhà thông minh

Thiết bị thông tin, thiết bị điều khiển và thiết bị truyền thông trong mạng nhà thông minh có đặc điểm là chi phí thấp và nhẹ. Do đó, CoAP có thể được coi là sự lựa chọn giao thức tốt nhất cho mạng truyền thông gia đình.

Mạng nhà thông minh cung cấp khả năng điều khiển và giám sát năng lượng tiêu thụ của các thiết bị trong nhà. Hệ thống kiểm soát năng lượng sử dụng ổ cắm thông minh để giám sát thiết bị tiêu thụ điện năng để cung cấp thông tin điện áp, dòng điện và năng lượng khác. Nó có thể nhận ra cảnh báo mất an toàn, điều khiển từ xa và tiết kiệm năng lượng chủ động. Mọi nút thu thập dữ liệu với Client, CoAP có thể trao đổi thông tin với các nút khác. CoAP có thể được cài đặt trong mạng LAN hoặc Internet. Không giống như nhiều giao thức không dây cho các thiết bị tự động trong gia đình, CoAP được thiết kế không bị giới hạn trong mạng cục bộ mà cung cấp nền tảng cơ bản của web.

Sơ đồ hệ thống điều khiển năng lượng

Trong hệ thống trên, các nút thu thập dữ liệu bao gồm một proxy, ổ cắm thông minh và mô-đun thu thập dữ liệu không dây.Thông tin năng lượng và thông tin môi trường của thiết bị được ổ cắm thông minh thu thập và chuyển đến mô-đun thu thập dữ liệu thông qua kênh không dây, sau đó gửi dữ liệu nối tiếp đến proxy để xử lý và đóng gói dữ liệu. Server điều khiển phân tích tất cả dữ liệu và lưu trữ chúng trong cơ sở dữ liệu. Hệ thống tích hợp mạng gia đình và Internet, người dùng có thể truy cập trang web của hệ thống để điều khiển từ xa công tắc, quản lý cấu hình, truy vấn mức tiêu thụ năng lượng, v.v.

Tóm tắt

Đặc tính MQTT HTTP CoAP
Năm 1999 1997 2010
Hình thức Truyền tải bản tin từ xa Giao thức truyền siêu văn bản Giao thức ứng dụng ràng buộc
Kiến trúc Client/Broker Client/Server Client/Server
Mô hình Xuất bản/Đăng ký Yêu cầu/phản hồi Yêu cầu/phản hồi
Kích thước Header 2 Byte Undefined 4 Byte
Kích thước bản tin Nhỏ và không xác định (tối đa 256MB) Lớn và không xác định (phụ thuộc vào Web Server) Nhỏ và không xác định (thường nhỏ để phù hợp với IP datagram)
Phương pháp Connect, Disconnect, Publish, Subscribe, Unsubscribe, Close Get, Post, Head, Put, Patch, Options, Connect, Delete

 

Get, Post, Put, Delete
Hỗ trợ bộ nhớ cache và proxy Một phần
Chất lượng (QoS)/Độ tin cậy QoS 0 – Truyền tối đa 1 lần

QoS 1 – Truyền tối thiểu 1 lần

QoS 2 – Truyền duy nhất 1 lần

Giới hạn (thông qua TCP) Bản tin có thể xác nhận hoặc không thể xác nhận
Giao thức truyền TCP TCP UDP,   (Stream Control Transmission Protocol)
Bảo vệ TLS/SSL TLS/SSL DTLS, IPsec
Cổng mặc định 1883/8883 (TLS/SSL) 80/443 (TLS/SSL) 5683 (UDP Port)
Định dạng mã hóa Nhị phân Văn bản Nhị phân
Cấp phép Nguồn mở Miễn phí Nguồn mở
Hỗ trợ tổ chức IBM, Facebook, Eurotech, Cisco, Red Hat, Software AG, Tibco, ITSO, M2Mi, Amazon Web Services (AWS), InduSoft, Fiorano Tiêu chuẩn giao thức web toàn cầu Hỗ trợ cộng đồng web rộng lớn,

Cisco, Contiki, Erika, IoTivity

Kết luận

Nói chung, có rất nhiều giao thức IoT khác nhau hỗ trợ Internet of Things và HTTP, MQTT, CoAP là ba giao thức thống trị chính trên thị trường IoT hiện nay vì những lợi ích tuyệt vời của nó mà chúng ta đã thảo luận ở trên. Tuy nhiên, điều đáng chú ý là trong khi giao thức HTTP phù hợp với ứng dụng duyệt web, hai giao thức còn lại phù hợp hơn với các mục đích IoT như giao tiếp thời gian thực, bảo trì phòng ngừa và giám sát môi trường, bao gồm nhà thông minh và ngành sản xuất.

Nhìn chung, điều thực sự quan trọng trong việc áp dụng kỹ thuật IoT là nắm rõ các yêu cầu của doanh nghiệp cũng như những ưu điểm và nhược điểm của các giao thức được cung cấp bởi thị trường và khả năng lựa chọn sao cho phù hợp nhất cho các trường hợp cụ thể. Cảm ơn đã đọc bài viết này. Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với chúng tôi theo địa chỉ email: info@daviteq.com

 

HOW TO SETUP WIRELESS SENSOR NETWORK – Daviteq