05/09/2020 - 12:00 AM 2.509 lượt xem Cỡ chữ MQTT là gì? Nội dung bài viết: 1. MQTT là gì? 2. Lịch sử 3. MQTT Architecture 4. Message Architecture 5. Chủ đề (Topics) 6. Tin nhắn lưu giữ (Retained Messages) 7. Di chúc và Di ngôn cuối cùng (Last will and testament) 8. MQTT Messages 9. Bảo mật 10. Cập nhật tiêu chuẩn MQTT v5.0 1. MQTT là gì? - MQTT là viết tắt của Message Queuing Telemetry Transport. Đây là một giao thức nhắn tin nhẹ để sử dụng trong các trường hợp các máy khách (Clients) cần một Code Bộ nhớ nhỏ và được kết nối với các mạng không đáng tin cậy hoặc mạng có tài nguyên băng thông hạn chế. Nó chủ yếu được sử dụng cho giao tiếp giữa máy với máy (M2M) hoặc các loại kết nối internet vạn vật (Internet of Things). 2. Lịch sử - MQTT ban đầu được tạo ra bởi Tiến sĩ Andy Stanford-Clark và Arlen Nipper vào năm 1999. Mục đích ban đầu của phương pháp truyền thông này là cho phép các thiết bị giám sát được sử dụng trong ngành dầu khí gửi dữ liệu của họ đến các máy chủ từ xa. Trong nhiều trường hợp, các thiết bị giám sát như vậy đã được sử dụng ở những vị trí xa nơi mà bất kỳ loại kết nối điện thoại cố định, kết nối có dây hoặc truyền dẫn vô tuyến nào cũng khó hoặc không thể thiết lập được. Vào thời điểm đó, lựa chọn duy nhất cho những trường hợp như vậy là liên lạc qua vệ tinh, rất đắt và được tính phí dựa trên lượng dữ liệu được sử dụng. Với hàng nghìn cảm biến trong lĩnh vực này, ngành công nghiệp dầu khí cần một hình thức giao tiếp có thể cung cấp dữ liệu đủ tin cậy để sử dụng, đồng thời sử dụng băng thông tối thiểu. - MQTT được tiêu chuẩn hóa dưới dạng mã nguồn mở (Open Source) theo Tổ chức vì sự tiến bộ của tiêu chuẩn thông tin có cấu trúc (OASIS) vào năm 2013. OASIS hiện vẫn quản lý tiêu chuẩn MQTT. 3. MQTT Architecture - MQTT chạy trên TCP / IP sử dụng cấu trúc liên kết PUSH / SUBSCRIBE topology. Trong MQTT architecture, có hai loại hệ thống: Máy khách (Clients) và Trung gian (Brokers). Một trung gian (Broker) là máy chủ mà các máy khách (Clients) giao tiếp. Broker nhận thông tin liên lạc từ các máy khách (Clients) và gửi các thông tin liên lạc đó cho các máy khách (Clients) khác. các máy khách (Clients) không trao đổi trực tiếp với nhau, mà kết nối với Broker. Mỗi máy khách (Client) có thể đóng vai trò là bên gửi tin (Publisher), bên nhận tin (Subscriber) hoặc cả hai. - MQTT là một giao thức hướng sự kiện (Event-Driven Protocol). Không có xảy ra việc truyền dữ liệu định kỳ hoặc liên tục trong MQTT. Điều này giữ cho việc truyền tải ở mức tối thiểu. Một máy khách (client) chỉ gửi tin khi có thông tin được gửi đi, và một Broker chỉ gửi thông tin cho bên nhận tin khi có dữ liệu mới. 4. Message Architecture - Một cách khác MQTT giảm thiểu việc truyền tải của nó là với cấu trúc thông điệp nhỏ, được xác định chặt chẽ. Mỗi tin nhắn (Message) có tiêu đề cố định chỉ 2 byte. Một tiêu đề tùy chọn có thể được sử dụng nhưng sẽ làm tăng kích thước của tin nhăn. Kích thước tin nhắn được giới hạn chỉ 256 MB. Ba mức Chất lượng Dịch vụ (QoS - Quality of Service) khác nhau cho phép các nhà thiết kế mạng lựa chọn giữa việc giảm thiểu truyền dữ liệu và tối đa hóa độ tin cậy. QoS 0 - Cung cấp số lượng truyền dữ liệu tối thiểu. Với mức này, mỗi tin nhắn được gửi đến bên nhận (Subscriber) một lần mà không cần xác nhận. Không có cách nào để biết nếu bên nhận có nhận được tin nhắn hay không. Phương pháp này đôi khi được gọi là “Gửi và quên - Fire and Forget” hoặc “Chỉ gửi một lần duy nhất - At Most Once Delivery”. Bởi vì mức chất lượng dịch vụ này giả định rằng quá trình gửi đã hoàn tất, các tin nhắn sẽ không được lưu trữ để gửi cho các máy khách (clients) bị ngắt kết nối mà sau này sẽ kết nối lại. QoS 1 – Bên trung gian (Broker) cố gắng gửi thông báo và sau đó chờ phản hồi xác nhận từ bên nhận tin (Subscriber). Nếu không nhận được xác nhận trong một khung thời gian cụ thể, tin nhắn sẽ được gửi lại. Sử dụng phương pháp này, bên nhận tin có thể nhận được tin nhắn nhiều lần nếu bên trung gian (Broker) không nhận được xác nhận của bên nhận tin (Subscriber) kịp thời. Điều này đôi khi được gọi là "Gửi ít nhất một lần - At Least Once Delivery". QoS 2 – Máy khách (Client) và Trung gian (Broker) sử dụng kiểu bắt tay bốn bước để đảm bảo rằng thông báo được nhận và chỉ được nhận một lần. Điều này đôi khi được gọi là "Gửi chính xác trong một lần duy nhất - Exactly Once Delivery". - Đối với các tình huống mà thông tin liên lạc đáng tin cậy nhưng hạn chế về tài nguyên, QoS 0 có thể là lựa chọn tốt nhất. Đối với các tình huống mà thông tin liên lạc không đáng tin cậy, nhưng các kết nối không bị giới hạn tài nguyên, thì QoS 2 sẽ là lựa chọn tốt nhất. QoS 1 cung cấp một loại giải pháp tốt nhất nhưng yêu cầu ứng dụng nhận dữ liệu phải biết cách xử lý các bản sao. - Đối với cả QoS 1 và QoS 2, tin nhắn được lưu (Save) hoặc xếp hàng đợi (Queue) cho các máy khách ngoại tuyến (Offline) và có phiên liên tục đã thiết lập. Các tin nhắn này được gửi lại (theo mức QoS thích hợp) sau khi máy khách (Client) trực tuyến trở lại. 5. Chủ đề (Topics) - Thông điệp trong MQTT được xuất bản dưới dạng chủ đề (Topics). Chủ đề là các cấu trúc trong hệ thống phân cấp sử dụng ký tự gạch chéo (/) làm dấu phân cách. Cấu trúc này tương tự như cấu trúc của cây thư mục trên hệ thống tệp máy tính. Một cấu trúc chẳng hạn như Sensors/OilandGas/Pressure/ cho phép bên nhận tin (Subscriber) chỉ định rằng nó chỉ nên được gửi dữ liệu từ các máy khách (clients) gửi về chủ đề Pressure hoặc rộng hơn, có thể là tất cả dữ liệu từ các máy khách (Clients) gửi về bất kỳ chủ đề sensors/OilandGas nào . Chủ đề không được tạo rõ ràng trong MQTT. Nếu một Trung gian (Broker) nhận được dữ liệu được gửi đi cho một chủ đề hiện không tồn tại, chủ đề đó sẽ được tạo đơn giản và các máy khách (clients) có thể nhận chủ đề mới. 6. Tin nhắn lưu giữ (Retained Messages) - Để giữ cho Bộ nhớ nhỏ, các thông báo đã nhận không được lưu trữ trên Broker trừ khi chúng được đánh dấu bằng cờ được giữ lại (Retained Flag). Đây được gọi là một tin nhắn được giữ lại (Retained Message). Người dùng muốn lưu trữ các tin nhắn đã nhận sẽ cần phải lưu trữ chúng ở nơi khác bên ngoài giao thức MQTT Protocol. Có một ngoại lệ. - Là một giao thức hướng sự kiện (Event-Driven Protocol), thậm chí có khả năng bên nhận (Subscriber) nhận được rất ít tin nhắn cho một chủ đề nhất định, thậm chí trong một khoảng thời gian dài. Trong cấu trúc chủ đề đã đề cập trước đây, có lẽ các thông báo đến chủ đề Pressure chỉ được gửi khi một cảm biến phát hiện áp suất đã vượt quá một mức nhất định. Giả sử rằng bất cứ điều gì mà cảm biến đang theo dõi không thường xuyên bị lỗi, có thể là vài tháng, hoặc thậm chí nhiều năm trước khi máy khách (Clients) gửi đi thông báo về chủ đề đó. - Để đảm bảo rằng một bên nhận (Subscriber) mới nhận được tin nhắn từ một chủ đề, các Broker có thể giữ lại tin nhắn cuối cùng được gửi cho mỗi chủ đề. Đây được gọi là một tin nhắn được giữ lại. Bất cứ khi nào một máy khách (clients) mới nhận được một chủ đề hoặc khi một máy khách (clients) hiện tại trực tuyến trở lại, thông báo được giữ lại sẽ được gửi đến những bên nhận (Subscriber), do đó đảm bảo rằng việc nhận thông tin của nó đang hoạt động và nó có thông tin mới nhất. 7. Di chúc và Di ngôn cuối cùng (Last will and testament) - Khi thông tin liên lạc không đáng tin cậy, có thể bên gửi (Publisher) sẽ ngắt kết nối khỏi mạng mà không có cảnh báo. Bên gửi (Publisher) có thể gửi đi một tin nhắn để gửi đến bên nhận (Subscriber) trong trường hợp Bên gửi (Publisher) ngắt kết nối đột ngột, đây được gọi là di chúc và di ngôn cuối cùng. Thông báo này được lưu trong bộ nhớ cache trên bên trung gian (Broker) và được gửi đến bên nhận (Subscriber) nếu Bên gửi (Publisher) ngắt kết nối không đúng cách. Thông thường, một thông báo như vậy bao gồm thông tin cho phép xác định Bên gửi (Publisher) bị ngắt kết nối để có thể thực hiện các hành động thích hợp. 8. MQTT Messages - Để giữ cho giao thức nhỏ gọn, chỉ có bốn hành động có thể thực hiện với bất kỳ giao tiếp nào: Publish, Subscribe, Unsubscribe, hoặc Ping. Publish - Gửi một khối dữ liệu có chứa tin nhắn sẽ được gửi. Dữ liệu này cụ thể cho từng cách triển khai nhưng có thể là một cái gì đó đơn giản như chỉ thị bật (ON)/ tắt (OFF) hoặc giá trị của một cảm biến nhất định, chẳng hạn như nhiệt độ, áp suất, v.v. Trong trường hợp chủ đề được gửi đi không tồn tại, chủ đề này được tạo trên bên trung gian (Broker). Subscribe - Biến máy khách (Client) thành bên nhận (Subscriber) một chủ đề. Các chủ đề có thể được đăng ký cụ thể hoặc thông qua các ký tự đại diện cho phép đăng ký toàn bộ nhánh chủ đề hoặc một phần của bất kỳ nhánh chủ đề nào. Để đăng ký, một máy khách (Client) gửi một gói SUBSCRIBE và nhận lại một gói SUBACK. Nếu có một tin nhắn được giữ lại cho chủ đề, bên nhận (Subscriber) mới cũng nhận được tin nhắn đó. PING – Máy khách (Client) có thể kiểm tra kết nối bằng ping với bên trung gian (Broker). Một gói PINGREQ được gửi bởi bên nhận (Subscriber) và một gói PINGRESP trả lời được gửi trả lời. Ping có thể được sử dụng để đảm bảo rằng kết nối vẫn hoạt động và phiên TCP không bị đóng đột ngột bởi thiết bị mạng khác như bộ định tuyến hoặc cổng. DISCONNECT - Bên nhận (Subscriber) hoặc bên gửi (Publisher) có thể gửi thông báo NGẮT KẾT NỐI đến bên trung gian (Broker). Thông báo này thông báo cho bên trung gian (Broker) rằng họ sẽ không cần gửi hoặc xếp hàng các tin nhắn cho một bên nhận (Subscriber) và nó sẽ không nhận dữ liệu từ bên gửi (Publisher) nữa. Kiểu ngắt kết nối này cho phép máy khách (Client) kết nối lại bằng cách sử dụng cùng một danh tính máy khách như trước đây. Khi máy khách ngắt kết nối mà không gửi tin nhắn ngắt kết nối, di chúc và di ngôn cuối cùng của chúng sẽ được gửi đến bên nhận. 9. Bảo mật - Mục tiêu ban đầu của giao thức MQTT là làm cho việc truyền dữ liệu nhỏ nhất và hiệu quả nhất có thể qua các đường truyền thông tin đắt tiền, không đáng tin cậy. Do đó, bảo mật không phải là mối quan tâm chính trong quá trình thiết kế và triển khai MQTT. - Tuy nhiên, có một số tùy chọn bảo mật có sẵn với chi phí truyền dữ liệu nhiều hơn và bộ nhớ lớn hơn. Network security - Nếu bản thân mạng có thể được bảo mật, thì việc truyền dữ liệu MQTT không an toàn là không thích hợp. Trong trường hợp này, các vấn đề bảo mật sẽ phải xảy ra từ chính bên trong mạng, có thể thông qua một tác nhân xấu hoặc một hình thức xâm nhập mạng khác. Username và password - MQTT cho phép tên người dùng (Username) và mật khẩu (Password) để máy khách (Client) thiết lập kết nối với bên trung gian (Broker). Thật không may, để giữ cho sự sáng sủa, tên người dùng và mật khẩu được truyền dưới dạng văn bản rõ ràng. Vào năm 1999, điều này là quá đủ bởi vì việc đọc một liên lạc giữa vệ tinh và một cảm biến là một việc rất khó khăn. Tuy nhiên, ngày nay, việc đánh chặn nhiều kiểu truyền thông mạng không dây là không hiếm, khiến cho việc xác thực như vậy trở nên vô ích. Nhiều trường hợp sử dụng yêu cầu tên người dùng và mật khẩu không phải để bảo vệ chống lại những kẻ xấu mà là một cách để tránh các kết nối không chủ ý. SSL / TLS - Chạy trên TCP / IP, giải pháp rõ ràng để đảm bảo truyền giữa máy khách (Client) và bên trung gian (Broker) là triển khai SSL / TLS. Thật không may, điều này làm tăng thêm chi phí đáng kể cho các giao tiếp nhẹ. 10. Cập nhật tiêu chuẩn MQTT v5.0 - Vào ngày 3 tháng 4 năm 2019, OASIS đã xuất bản tiêu chuẩn MQTT v5.0 chính thức - Các tính năng chính MQTT v5.0 bao gồm: Reason codes (Mã lý do) - Ban đầu, MQTT chỉ đơn giản là không thực hiện hành động nào nếu có lỗi. Bản thân lỗi đó là mã lỗi duy nhất. Trong phiên bản 5.0, xác nhận hiện hỗ trợ việc sử dụng mã trả lại, có thể cung cấp lý do thân thiện với người dùng về lỗi. Tất nhiên, việc sử dụng mã trả lại sẽ làm tăng một chút bộ nhớ. Shared subscriptions (Đăng ký được chia sẻ) - Quá nhiều người đăng ký một chủ đề cụ thể trên một trung gian (Broker) có thể tạo ra sự cố tải. Đăng ký được chia sẻ cho phép cân bằng tải giữa các máy khách (Clients). Message expiry (Tin nhắn hết hạn)- Có thể đặt tin nhắn bị xóa nếu chúng không được gửi trong một khoảng thời gian đã định. Điều này ngăn không cho các tin nhắn cũ, lỗi thời được gửi đến các bên nhận (Subscriber) đã bị ngắt kết nối trong một khoảng thời gian. Topic alias (Bí danh chủ đề) - Bản thân tên của các chủ đề có thể dài đến mức làm giảm bộ nhớ nhỏ của giao thức. Các chuỗi chủ đề hiện có thể được thay thế bằng một số đại diện duy nhất khi sử dụng lặp lại các chủ đề giống nhau. Nguồn: https://www.paessler.com/it-explained/mqtt#section10 Dịch: N.V.Hùng Về trang trước Gửi email In trang Tweet
Linux container là gì? 08/01/2024 176 lượt xem Linux® container là một tập hợp gồm 1 hoặc nhiều tiến trình được tách biệt khỏi phần còn lại của hệ thống. Tất cả các tệp cần thiết để chạy chúng đều được cung cấp từ một ảnh image riêng biệt, nghĩa là các Linux containers có tính di động và nhất quán khi chúng chuyển từ giai đoạn phát triển, thử nghiệm và cuối cùng là sản xuất. Điều này làm cho chúng được sử dụng nhanh hơn nhiều so với các quy trình phát triển dựa vào việc sao chép các môi trường thử nghiệm truyền thống. Do tính phổ biến và dễ sử dụng của chúng, các container cũng là một phần quan trọng trong bảo mật CNTT.
Container orchestration là gì? 08/01/2024 187 lượt xem Điều phối vùng chứa “Container orchestration” tự động hóa việc triển khai, quản lý, mở rộng quy mô và kết nối mạng các vùng chứa “Containers”. Các doanh nghiệp cần triển khai và quản lý hàng trăm hoặc hàng nghìn Linux® container và máy chủ hosts có thể hưởng lợi từ việc điều phối vùng chứa.
Containers vs VMs 08/01/2024 177 lượt xem Containers và Máy ảo “Virtual machines (VMs)” là 2 phương pháp tiếp cận Môi trường điện toán đóng gói “Packaging Computing Environments” kết hợp nhiều thành phần CNTT “IT Components” khác nhau và tách biệt chúng khỏi phần còn lại của hệ thống. Sự khác biệt chính giữa cả hai là những thành phần nào được tách biệt, do đó ảnh hưởng đến quy mô và tính di động của từng phương pháp.
Máy ảo (VM) là gì? 08/01/2024 181 lượt xem Máy ảo (tiếng Anh là Virtual Machine, viết tắt là VM) là một môi trường ảo hoạt động như một hệ thống máy tính ảo với CPU, bộ nhớ, giao diện mạng và bộ lưu trữ riêng, được tạo trên hệ thống phần cứng vật lý (nằm ngoài hoặc tại chỗ). Phần mềm được gọi là bộ ảo hóa hay Trình ảo hóa “Hypervisor” sẽ tách các tài nguyên của máy khỏi phần cứng và cung cấp chúng một cách thích hợp để VM có thể sử dụng chúng.
KVM là gì? 08/01/2024 171 lượt xem Kernel-based Virtual Machine (KVM) (tiếng Việt: Máy ảo dựa trên nhân hệ điều hành) là một công nghệ ảo hóa nguồn mở được tích hợp trong Linux®. Cụ thể, KVM cho phép bạn biến Linux thành một trình ảo hóa “Hypervisor” cho phép máy chủ chạy nhiều môi trường ảo biệt lập được gọi là máy khách “guests” hoặc máy ảo (VM - Virtual machines).
Điện toán đám mây là gì? 09/02/2023 243 lượt xem Điện toán đám mây cho phép khách hàng sử dụng cơ sở hạ tầng và ứng dụng qua internet mà không cần cài đặt và bảo trì chúng tại chỗ
Hybrid Cloud là gì? 09/02/2023 247 lượt xem Hybrid cloud (tạm dịch sang tiếng Việt là Đám mây lai) kết hợp và thống nhất Public Cloud (đám mây công cộng), Private Cloud (đám mây riêng) và On-premises infrastructure (cơ sở hạ tầng tại chỗ) để tạo ra một cơ sở hạ tầng CNTT duy nhất, linh hoạt, tối ưu về chi phí.
Kubernetes là gì? 08/02/2023 277 lượt xem Kubernetes là một nền tảng điều phối bộ chứa mã nguồn mở tự động hóa việc triển khai, quản lý và mở rộng quy mô các ứng dụng được chứa.
Machine Learning là gì? 07/02/2023 302 lượt xem Phần giới thiệu về học máy Machine Learning này cung cấp tổng quan về lịch sử, các định nghĩa quan trọng, ứng dụng và mối quan tâm của nó trong các doanh nghiệp ngày nay.
DevOps là gì? 07/02/2023 239 lượt xem DevOps tăng tốc độ phân phối phần mềm chất lượng cao hơn bằng cách kết hợp và tự động hóa công việc của các nhóm vận hành CNTT và phát triển phần mềm
Trí tuệ nhân tạo (AI) là gì? 06/02/2023 237 lượt xem Trí tuệ nhân tạo (tiếng Anh là Artificial intelligence, viết tắt là AI) tận dụng máy tính và máy móc để bắt chước khả năng giải quyết vấn đề và ra quyết định của tâm trí con người.
Làm thế nào để tránh đạo văn 16/10/2020 12.881 lượt xem Nếu bạn là sinh viên của một trường đại học, thì bạn nhất thiết phải tránh đạo văn trong tác phẩm của mình; nếu không, bạn có thể phải đối mặt với các biện pháp trừng phạt có thể khiến bạn không hoàn ...
Đạo văn là gì? 16/10/2020 14.811 lượt xem Định nghĩa đạo văn Từ điển Merriam Webster định nghĩa hành vi đạo văn "Plagiarism" là; "Ăn cắp và chuyển giao ý tưởng hoặc lời nói của người khác như là của riêng mình". Nói một cách đơn giản, đạo văn...
Hậu quả của việc đạo văn 15/10/2020 7.238 lượt xem Không nên có bất kỳ sự trì hoãn nào, hãy xem xét tất cả những ảnh hưởng có thể mà bạn sẽ phải đối mặt nếu bạn sao chép đạo văn của người khác: Đối với lĩnh vực giáo dục Ngày nay, vi phạm bản quyền đã ...
IP address là gì? 17/09/2020 15.040 lượt xem IP address là gì? Nội dung bài viết: 1. IP address là gì? 2. Giao thức Internet Protocol (IP) 3. Các phiên bản của giao thức IP 4. Địa chỉ IPv4 5. Địa chỉ IPv6 6. Phân giải địa chỉ IP address 1....
Ping là gì? 17/09/2020 3.137 lượt xem Ping là gì? Nội dung bài viết: 1. Ping là gì? 2. Ping hoạt động như thế nào? 3. Định dạng tin nhắn Ping 4. Tiện ích Ping 5. Các khóa và biến của Ping 6. Cách sử dụng Ping 7. Bảo mật 1. Ping là g...
Virtualization (ảo hóa) là gì? 16/09/2020 6.317 lượt xem Ảo hóa là gì? Nội dung bài viết: 1. Ảo hóa là gì? 2. Bộ phận ảo hóa 3. Ảo hóa phần cứng 4. Ảo hóa lồng nhau 5. Ảo hóa khác 6. Lợi ích của ảo hóa 7. Nhược điểm của ảo hóa 8. Vấn đề bảo mật máy ảo 1...
NetFlow là gì? 16/09/2020 4.169 lượt xem NetFlow là gì? Nội dung bài viết: 1. NetFlow là gì? 2. Cách thức hoạt động của NetFlow 3. Ví dụ về NetFlow command 4. Sử dụng NetFlow 5. Cơ sở hạ tầng NetFlow Infrastructure 1. NetFlow là gì? - ...
Syslog là gì? 16/09/2020 5.791 lượt xem Syslog là gì? Nội dung bài viêt: 1. Syslog là gì? 2. Định dạng thông báo Syslog 3. Ví dụ về thông báo Syslog 4. Syslog Server 5. Bảo mật 6. Thiết kế Syslog 7. Sử dụng Syslog 1. Syslog là gì? ...
Bandwidth (Băng thông) là gì? 14/09/2020 8.961 lượt xem Bandwidth (Băng thông) là gì? Nội dung bài viết: 1. Bandwidth trong Máy tính là gì? 2. Đơn vị đo băng thông 3. Phương pháp đo băng thông 4. Phân biệt Băng thông & Tốc độ & thông lượng 5. Tại sao phả...