Application protocol: Extensible Messaging and Presence Protocol (XMPP)

Mở đầu

Khi nói về Internet of Things (IoT), chúng ta luôn đề cập tới truyền thông. Sự tương tác giữa các cảm biến, thiết bị, cổng, máy chủ và các ứng dụng của người dùng là yếu tố không thể thiếu để tạo nên một nền tảng IoT. Và điều cho phép tất cả những thành phần trên có thể giao tiếp với nhau là các giao thức (protocol). Vậy nên có thể nói, giao thức là một thành phần vô cùng quan trọng trong nền tảng IoT, được coi như ngôn ngữ mà các thành phần trên sử dụng để giao tiếp với nhau.

Hiện nay, nhiều tiêu chuẩn IoT (IoT standards) được đề xuất để đơn giản hóa công việc của lập trình viên và nhà cung cấp dịch vụ. Nhiều tổ chức đã được thành lập để cung cấp các giao thức IoT, như: World Wide Web Consortium (W3C), Internet Engineering Task Force (IETF), EPCglobal, Institute of Electrical and Electronics Engineers (IEEE), European Telecommunications Standards Institute (ETSI). 

Giao thức IoT được phân thành 4 nhóm lớn: 

- Giao thức ứng dụng (Application protocols) 

- Giao thức khám phá dịch vụ (Service discovery protocols) 

- Giao thức cơ sở hạ tầng (Infrastructure protocols) 

- Các giao thức ảnh hưởng khác.


Sau đây là bài viết về giao thức phổ biến thuộc nhóm giao thức ứng dụng, đó là: Extensible Messaging and Presence Protocol (XMPP).

Extensible Messaging and Presence Protocol (XMPP)

1. Nguồn gốc

Nhắn tin tức thời (Instant messaging – IM) là một loại ứng dụng phổ biến hiện nay. Nó không chỉ cung cấp phương tiện để người dùng giao tiếp với nhau trong thời gian thực, mà còn giúp người dùng nhận được thông tin về sự hiện diện của đối phương (online, offline, away from the computer...). Một trong những công nghệ IM được tạo ra sớm nhất là Jabber, do Jeremie Miller bắt đầu phát triển vào năm 1998, phiên bản đầu tiên được công bố vào năm 2000. Jabber là một cộng đồng mã nguồn mở được xây dựng dựa trên nền tảng XML.

Vào năm 2004, các công nghệ cốt lõi của Jabber đã được chính thức hóa dưới tên XMPP tại Internet Engineering Task Force (IETF). Công nghệ cốt lõi bao gồm:

- XML streaming layer

- Mã hóa kênh bằng Transport Layer Security (TLS)

- Xác thực mạnh mẽ: Sử dụng Simple Authentication and Security Layer (SASL)

- Sử dụng UTF – 8 để hỗ trợ Unicode

- Công nghệ presence

2. Định nghĩa

Extensible Messaging and Presence Protocol (XMPP) là một tập hợp các công nghệ mở cho phép trao đổi thông tin trong thời gian thực, thông tin về sự hiện diện, trò chuyện đa thành viên, gọi thoại và video,... 

XMPP được phát triển bởi cộng đồng mã nguồn mở Jabber để cung cấp một giao thức nhắn tin mở, bảo mật, phi tập trung, không có thư rác. XMPP cho phép người dùng có thể gửi tin nhắn cho nhau trong thời gian thực dù họ đang sử dụng bất kì hệ điều hành nào. 

Các ứng dụng IM sử dụng XMPP đạt được tính xác thực, có thể kiểm soát truy cập, quyền riêng tư, mã hóa hop – by – hop và end – to – end, có khả năng tương thích với các giao thức khác.

3. Ưu điểm

Mở: XMPP là miễn phí, mở, công khai, dễ hiểu để có thể sử dụng.

Các chuẩn mở: Internet Engineering Task Force đã chính thức phê duyệt XMPP như một chuẩn tin nhắn thời gian thực (thông số kỹ thuật mới nhất là RFC 6120 và RFC 6121). Không cần chi trả chi phí mua bản quyền để thực hiện các thông số kỹ thuật và phát triển, XMPP không thuộc về một nhà phát triển duy nhất.

Đã được đảm bảo ổn định: XMPP đã có hiệu lực từ năm 1998 và nhiều ứng dụng đã sử dụng giao thức này kể từ đó. Hiện nay, có hàng chục nghìn máy chủ XMPP đang chạy trên Internet và hàng triệu người sử dụng XMPP để nhắn tin trong thời gian thực thông qua các dịch vụ như Google Talk và triển khai XMPP tại các tổ chức trên toàn thế giới.

Linh hoạt: Một trong những lợi thế chính của giao thức này là sự linh hoạt của nó. Ngoài IM, XMPP có thể được sử dụng để phát triển các ứng dụng chia sẻ tệp, chơi game, giám sát hệ thống từ xa, web, lighweight middleware, điện toán đám mây,... Mặt khác, XMPP hỗ trợ đa ngôn ngữ lập trình: Ta có thể tìm thấy thư viện XMPP cho các ngôn ngữ truyền thống như C, C++ hay Ruby, Java, Python, Perl, Tcl, C#, Lisp. Do đó, bất kể môi trường lập trình của bạn là gì, có thể có một thư viện XMPP để bạn sử dụng.

Tài liệu tham khảo đa dạng: Rất nhiều công ty có các dự án mã nguồn mở sử dụng XMPP để xây dựng và triển khai các ứng dụng và dịch vụ thời gian thực.  

Phân cấp: Các mạng XMPP được phân cấp một cách tự nhiên. Không có máy chủ hoặc máy chủ trung tâm. Bất kỳ ai có thể sở hữu hoặc chạy một XMPP Server.

Bảo mật: Bất kỳ máy chủ XMPP nào cũng có thể được cách ly khỏi mạng công cộng. và bảo mật mạnh mẽ bằng cách sử dụng SASL và TLS đã được tích hợp sẵn trong XMPP. Ngoài ra, cộng đồng phát triển XMPP đang tích cực nghiên cứu về mã hóa end-to-end để nâng cao sự bảo mật hơn nữa.

4. Kiến trúc XMPP

XMPP có những điểm tương đồng với các giao thức khác trong nhóm Aplication protocols như SMTP. Hai máy khách (client) giao tiếp với nhau thông qua cùng liên kết với máy chủ (server). 

Ngoài ra, máy chủ cũng có thể thực hiện định tuyến giữa các miền khác nhau (ví dụ: giữa explore.nasa.guv và europa.nasa.guv). Hơn nữa, XMPP gateway có thể sử dụng để chuyển tiếp giữa protocols và foreign messaging domains. Ví dụ trong hình 3, một mạng XMPP với các gateway vào miền Short Message Service (SMS) và miền SMTP. 

Gateways còn được sử dụng để dịch chuyển giữa các IM protocols (ví dụ: XMPP sang IRC).

XMPP kết nối một máy khách với máy chủ bằng cách sử dụng một luồng XML stanzas gồm ba thành phần:

- Message stanzas: Xác định nguồn (from), xác định đích đến (to), loại, ID của các thực thể XMPP sử dụng push method để truy xuất dữ liệu; điền tiêu đề và nội dung thư.

- Presence stanza: Hiển thị và thông báo trạng thái cho khách hàng.

- IQ stanza: ghép nối người gửi và người nhận tin nhắn.

5. Địa chỉ trong XMPP

Địa chỉ (hoặc Jabber ID [JID]) trong XMPP tương tự như địa chỉ e-mail tiêu chuẩn. JID bao gồm node, domain và resource ở dạng:

[ node "@" ] domain [ "/" resource ]

Ví dụ: ManhCuong@discovery.nasa.guv

Hay: ManhCuong@discovery.nasa.guv/termina

6. Một số ứng dụng của XMPP

XMPP cung cấp một khuôn khổ chung cho việc phát triển các ứng dụng và dịch vụ nhắn tin qua mạng; phát triển ứng dụng phòng trò chuyện đa người dùng (multi – user chat room), các tính năng tương tự như micro – blogging do Twitter cung cấp.

Chơi game online sử dụng đáng kể XMPP: XMPP cung cấp những tính năng quan trọng cho trò chơi trực tuyến. Bao gồm xác thực, thông tin hiện diện (presence information), trò chuyện và giao thời gian thực.

Cuối cùng, XMPP là một giao thức hoàn hảo cho kỷ nguyên của điện toán đám mây. Hệ thống lưu trữ dữ liệu và điện toán đám mây được tổ chức dựa trên nhiều cấp độ và hình thức giao tiếp khác nhau. XMPP có thể được áp dụng trên nhiều cấp độ khác nhau như một giao thức trung gian (middleware protocol).

Nhận xét

Bài đăng phổ biến từ blog này

Mô hình dữ liệu trong Cassandra

Các loại cấu trúc liên kết mạng (Network Topology)