DANH SÁCH CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮTInternet ProtocolMedia Access ControlUser Datagram Protocol Open Systems Interconnection Constrained Application ProtocolHyper Text Transfer Protoc
Trang 1MỤC LỤC
LỜI MỞ ĐẦU III TÓM TẮT ĐỒ ÁN IV DANH MỤC CÁC BẢNG BIỂU V DANH MỤC CÁC HÌNH VẼ VI DANH SÁCH CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT VII
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 Giới thiệu về đề tài 1
1.1.1 Lý do chọn đề tài 1
1.1.2 Mục đích chọn đề tài 1
1.1.3 Đối tượng và phạm vi nghiên cứu 1
1.1.4 Ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài 1
1.2 Một số giao thức sử dụng trong truyền thông 2
1.2.1 Mô hình TCP/IP 2
1.2.1.1 Kiến trúc TCP/IP 3
1.2.1.2 Quá trình truyền dữ liệu trong mô hình TCP/IP 8
1.2.3 Mô hình OSI 9
1.2.3.1 Kiến trúc và chức năng các lớp trong mô hình OSI 9
1.2.3.2 So sánh hai giao thức TCP/IP và OSI 12
1.2.4 Truyền thông Socket 13
1.2.4.1 Định nghĩa 13
1.2.4.2 Nguyên lý hoạt động 15
CHƯƠNG 2 GIAO THỨC MQTT TRONG HỆ THỐNG IOT 17
2.1 Hệ thống IoT (Internet of Things) 17
2.1.1 Định nghĩa 17
2.1.2 Kiến trúc tham chiếu 17
2.1.3 Phân loại thiết bị IoT và phương thức kết nối Internet 20
2.1.4 Các yêu cầu của kiến trúc tham chiếu cho IoT .21
Trang 22.2 Nền tảng truyền thông IoT 23
2.2.1 Giao thức Zigbee 24
2.2.2 Giao thức Bluetooth 27
2.2.3 Công nghệ Wifi 30
2.3 Giao thức MQTT 33
2.3.1 Định nghĩa 33
2.3.2 Các đặc trưng của giao thức 35
2.3.3 Định dạng của message 36
2.3.3.1 Message CONNECT – Client yêu cầu kết nối đến server 42
2.3.3.2 Message PUBLISH 46
2.3.3.3 Message SUBSCRIBE 47
2.3.4 Nguyên lý làm việc 49
2.3.5 Bảo mật trong MQTT 50
CHƯƠNG 3 THỬ NGHIỆM GIAO THỨC MQTT 53
3.1 Giới thiệu về hệ điều hành Linux 53
3.2 Hệ điều hành Ubuntu 54
3.3 Ngôn ngữ lập trình Python 56
3.4 Cấu trúc một số lệnh trong thư viện Python Client MQTT 58
3.5 Thử nghiệm truyền nhận dữ liệu MQTT trên Python 61
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 64
PHỤ LỤC 65
Trang 3LỜI MỞ ĐẦU
Trong những năm gần đây một khái niệm mới trong ngành công nghệ được
nhắc đến nhiều đó là "Internet of Things" Khái niệm Internet of Things được thực
sự đưa ra vào năm 1999, khi mà người ta bắt đầu nhìn nhận được tiềm năng của xuhướng này, lúc mà các rào cản giới hạn Internet, khoa học công nghệ dần được khaiphá Mặc dù khái niệm Internet of Things được đưa ra từ lâu nhưng trong nhữngnăm gần đây nó mới được nhiều doanh nghiệp cũng như các nhà khoa học để ý vàphát triển mạnh mẽ
Các thiết bị trong IoT là rất nhỏ, chúng chỉ trao đổi lượng thông tin nhỏ vớinhau, tuy nhiên các giao thức truyền thống không phù hợp với sự giao tiếp IoT màcần có các giao thức tối ưu dành riêng cho IoT Nhận biết được tầm quan trọng củagiao thức này trong sự phát triển một thế giới thông minh do vậy em đã chọn đồ án
“Nghiên cứu và thử nghiệm giao thức MQTT trong hệ thống IoT” để tìm hiểu
về giao thức MQTT và cách thức hoạt động của nó
Đồ án này bao gồm 3 chương:
Chương 1: Tổng quan về đề tài Nêu rõ lý do, mục đích lựa chọn đề tài, ýnghĩa của đề tài trong sự phát triển thế giới IoT Trình bày về một số giao thứctruyền thông thường được sử dụng
Chương 2: Giao thức MQTT trong hệ thống IoT Trình bày hiểu biết về thếgiới IoT và các giao thức nền tảng được sử dụng Đi sâu nghiên cứu và tìm hiểu vềgiao thức MQTT
Chương 3: Thử nghiệm giao thức MQTT Thử nghiệm truyền nhận dữ liệubằng giao thức MQTT trên phần mềm Python
Em xin gửi lời cảm ơn chân thành đến thầy giáo Th.S Đinh Văn Nam đã
hướng dẫn tận tình và giúp đỡ em trong quá trình thực hiện đồ án này Trong quátrình thực hiện đồ án không thể tránh được sai sót, vì vậy em hy vọng sẽ nhận đượccác lời khuyên và đóng góp của thầy, cô và bạn đọc
Nghệ An, Ngày 20 tháng 5 năm 2016
Sinh viên thực hiện
Trần Thị Thuận
Trang 4TÓM TẮT ĐỒ ÁN
Đồ án này đi sâu tìm hiểu về giao thức MQTT Giao thức MQTT hiện nayđược sử dụng trong nhiều lĩnh vực công nghiệp khác nhau và đặc biệt là trong hệthống IoT Nó không chỉ kéo dài tuổi thọ pin mà còn cung cấp tin nhắn chỉ trong
“vài trăm mili giây” Giao thức MQTT sử dụng băng thông thấp do đó phù hợp vớicác thiết bị có hạn chế về tốc độ đường truyền và độ tin cậy thấp, nó cũng được ứngdụng trong các mạng có độ tin cậy cao nhưng cần tiết kiệm băng thông MQTT chophép giao tiếp hai chiều, sử dụng một kết nối TCP được tạo ra từ các client để kếtnối client với broker Giao thức này có mô hình publish/subscribe các bản tin vàđược thiết kế trong các ứng dụng sử dụng công nghệ M2M gọn nhẹ Chương trình
sử dụng phần mềm lập trình Python để thử nghiệm quá trình publish/subscribe giữaclient và broker Qua đó có thể hiểu rõ hơn về giao thức MQTT cũng như quá trìnhhoạt động của nó
ABSTRACT
This thesis was studied about protocol MQTT The MQTT protocol is usedtoday throughout a variety of industries and IoT environments It’s to not only savebattery life but also deliver messages in "the hundreds of milliseconds" MQTT'slow bandwidth makes it ideal for constrained devices and unreliable networks,though it is often also used on reliable networks to preserve bandwidth MQTTenables bidirectional communication, uses a TCP connection initiated by the client
to connect client and broker MQTT is a publish/subscribe messaging protocoldesigned for lightweight M2M communications Using Python programmingsoftware for testing process publish/ subscribe between client and broker Throughthat can better understand the protocol MQTT well as its operational processes
Trang 5DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1 Định dạng phần header cố định của message 36
Bảng 2.2 Định dạng phần header thay đổi được của message CONNECT 38
Bảng 2.3 Các giá trị và ý nghĩa của mã rc 41
Bảng 2.4 Định dạng phần header cố định của message CONNECT 42
Bảng 2.5 Ví dụ biểu diễn phần hesder thay đổi được của message CONNECT 43
Bảng 2.6 Định dạng phần header cố định message PUBLISH 46
Bảng 2.7 Header có độ dài thay đổi của message PUBLISH 47
Bảng 2.8 Ví dụ về phần header thay đổi được của message PUBLISH 47
Bảng 2.9 Định dạng phần header cố định của message SUBSCRIBE 48
Bảng 2.10 Ví dụ về phần header thay đổi được với message ID bằng 10 48
Trang 6DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Kiến trúc TCP/IP 3
Hình 1.2 Khuôn dạng của UDP datagram 5
Hình 1.3 Khuôn dạng TCP segment 6
Hình 1.4 Quá trình truyền dữ liệu trong mô hình TCP/IP 8
Hình 1.5 Các lớp trong mô hình OSI 9
Hình 1.6 Quá trình truyền dữ liệu trong mô hình OSI 12
Hình 1.7 So sánh mô hình TCP/IP và OSI 13
Hình 1.8 Mô hình OSI rút gọn 14
Hình 1.9 Mô hình Socket 14
Hình 2.1 Kiến trúc tham chiếu cho IoT 17
Hình 2.2 Kiến trúc lớp (hay ngăn xếp – Stack) trong kiến trúc Zigbee 25
Hình 2.3 Các mô hình mạng Zigbee 26
Hình 2.4 Các tầng nghi thức của Bluetooth 28
Hình 2.5 Quá trình Subscribe của client B và client C 34
Hình 2.6 Quá trình Publish của client A và nhận dữ liệu của client B, C 34
Hình 3.1 Giao diện hệ điều hành Ubuntu 55
Hình 3.2 Giao diện Python trên Ubuntu 57
Hình 3.3 Kết quả quá trình publish của thiết bị 61
Hình 3.4 Kết quả quá trình subscribe của thiết bị 61
Trang 7DANH SÁCH CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Internet ProtocolMedia Access ControlUser Datagram Protocol
Open Systems Interconnection
Constrained Application ProtocolHyper Text Transfer ProtocolHyper Text Transfer Protocol Secure
Local Area NetworkGeneral Packet Radio Service
File Transfer Protocol Institute of Electrical and Electronics EngineersSecure Sockets LayerTransport Layer Security
Công nghệ truyền nhận tốc độ tức thời
Internet của sự vậtMáy đến MáyGiao thức điều khiển truyền thông
Giao thức InternetĐịa chỉ vật lý của thiết bịGiao thức gói dữ liệu người dùng
Mô hình tham chiếu kết nối các hệ thống mở
Giao thức ràng buộc ứng dụngGiao thức truyền tải siêu văn bản
Phiên bản của giao thức HTTPMạng máy tính cục bộ
Dịch vụ dữ liệu di động dạng gói
Giao thức chuyển nhượng tập tin
Viện kỹ nghệ Điện và Điện tử
Giao thức bảo mậtGiao thức an toàn tầng giao vận
Trang 9CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1.1 Giới thiệu về đề tài
1.1.1 Lý do chọn đề tài
Giao thức MQTT là một giao thức quan trọng trong hệ thống IoT IoT nhằmđưa thế giới tiến tới những kỹ thuật tiên tiến nhất, thông minh nhất, một thế giới màcác thiết bị có thể đo lường và đưa ra các nhận xét chính xác nhất Để thực hiệnđược một thế giới thông minh như vậy thì việc tìm hiểu về cách thức hoạt động và
sự giao tiếp giữa các thiết bị IoT là cực kỳ quan trọng Nhận biết được tầm quantrọng đó, trong đồ án này em lựa chọn nghiên cứu về giao thức MQTT nhằm giúpbạn đọc hiểu rõ hơn về giao thức này cũng như vai trò của nó trong IoT
1.1.2 Mục đích chọn đề tài
Mục đích của đề tài này là đi sâu nghiên cứu về giao thức MQTT và quá trìnhtruyền nhận dữ liệu thông qua giao thức này Sự phát triển của thế giới thông minhcần có các giao thức phù hợp với thiết bị IoT, bởi vì các thiết bị IoT là rất nhỏ, tiêutốn ít công suất do đó các giao thức truyền nhận cũng cần tiêu tốn ít năng lượng.Giao thức MQTT như là một ống dẫn luồng dữ liệu nhị phân cho các thiết bị IoT,giao thức này thực sự quan trọng đối với sự hoàn thiện của thế giới IoT
1.1.3 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu ở đồ án này là giao thức MQTT trong hệ thống IoT vàlập trình truyền nhận dữ liệu thông qua giao thức MQTT trên phần mềm Python.Phạm vi nghiên cứu là quá trình giao tiếp M2M thông qua công nghệ kết nối Wifi.M2M kết nối tất cả các loại thiết bị và máy móc trên hệ thống mạng, từ đó chúng cóthể giao tiếp với nhau thông qua máy chủ trung tâm hoặc dựa trên đám mây doanhnghiệp sử hữu
1.1.4 Ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài
Ý nghĩa khoa học:
Sự giao tiếp giữa các thiết bị M2M phụ thuộc vào giao thức MQTT Khi cácthiết bị M2M có thể giao tiếp với nhau một cách dễ dàng thì sẽ tự động kết nối với
Trang 10nhau và làm việc thay cho con người Từ đó sẽ xây dựng nên một thế giới thôngminh Một thế giới mà các cảm biến sẽ đo lường và đưa ra những nhận xét chínhxác nhất về môi trường, thiên tai, lũ lụt, và gửi về cho chúng ta thông qua giaothức MQTT
Ý nghĩa thực tiễn:
Sự phát triển của giao thức MQTT sẽ dẫn tới sự phát triển của các thiết bịM2M và sẽ đẩy nhanh sự hoàn thiện thế giới IoT IoT có thể thay đổi hoàn toàncách sống của con người trong tương lai không xa Khi mọi vật đã được "Internethóa" người dùng có thể điều khiển chúng từ bất kỳ nơi nào, không bị giới hạn vềmặt không gian và thời gian chỉ cần một thiết bị thông minh có kết nối Internet.Internet of Thing đang là chìa khóa của thành công trong tương lai
1.2 Một số giao thức sử dụng trong truyền thông
Một máy tính tương tác với thế giới thông qua một hoặc nhiều ứng dụng.Những ứng dụng này thực hiện các nhiệm vụ cụ thể và quản lý dữ liệu ra và vào.Nếu máy tính đó là một phần của hệ thống mạng, thì một trong số các ứng dụng trên
sẽ có thể giao tiếp với các ứng dụng trên các máy tính khác thuộc cùng hệ thốngmạng Bộ giao thức mạng là một hệ thống các quy định chung giúp xác định quátrình truyền dữ liệu phức tạp Dữ liệu đi từ ứng dụng trên máy này, qua phần cứngmạng của máy, tới bộ phận trung gian và đến nơi nhận, thông qua phần cứng củamáy tính đích rồi tới ứng dụng
1.2.1 Mô hình TCP/IP
TCP/IP là viết tắt của Transmission Control Protocol (Giao thức Điều KhiểnTruyền Thông) / Internet Protocol (Giao thức Internet) TCP/IP là một bộ giao thức(bao gồm nhiều giao thức) hỗ trợ việc truyền thông giữa các máy tính hoặc các thiết
bị tương tự trên mạng
Trang 11TCP/IP là bộ các giao thức có vai trò xác định quá trình liên lạc trong mạng vàquan trọng hơn cả là định nghĩa “hình dạng” của một đơn vị dữ liệu và những thôngtin chứa trong nó để máy tính đích có thể dịch thông tin một cách chính xác TCP/IP
và các giao thức liên quan tạo ra một hệ thống hoàn chỉnh quản lý quá trình dữ liệuđược xử lý, chuyển và nhận trên một mạng sử dụng TCP/IP Một hệ thống các giaothức liên quan, chẳng hạn như TCP/IP, được gọi là bộ giao thức
Thực tế của quá trình định dạng và xử lý dữ liệu bằng TCP/IP được thực hiệnbằng bộ lọc của các hãng sản xuất Một chuẩn TCP/IP là một hệ thống các quy địnhquản lý việc trao đổi trên các mạng TCP/IP Bộ lọc TCP/IP là một phần mềm cóchức năng cho phép một máy tính hoà vào mạng TCP/IP
Các chức năng của TCP/IP:
Một hệ thống giao thức như TCP/IP phải đảm bảo khả năng thực hiện nhữngcông việc sau:
- Cắt thông tin thành những gói dữ liệu để có thể dễ dàng đi qua bộ phậntruyền tải trung gian
- Tương tác với phần cứng của adapter mạng
- Xác định địa chỉ nguồn và đích: Máy tính gửi thông tin đi phải có thể xácđịnh được nơi gửi đến Máy tính đích phải nhận ra đâu là thông tin gửi cho mình
- Định tuyến: Hệ thống phải có khả năng hướng dữ liệu tới các tiểu mạng, cho
dù tiểu mạng nguồn và đích khác nhau về mặt vật lý
- Kiểm tra lỗi, kiểm soát giao thông và xác nhận: Đối với một phương tiệntruyền thông tin cậy, máy tính gửi và nhận phải xác định và có thể sửa chữa lỗitrong quá trình vận chuyển dữ liệu
- Chấp nhận dữ liệu từ ứng dụng và truyền nó tới mạng đích
Để có thể thực hiện các công việc trên, những người sáng tạo ra TCP/IP đãchia nó thành những phần riêng biệt, theo lý thuyết, hoạt động độc lập với nhau.Mỗi thành phần chịu một trách nhiệm riêng biệt trong hệ thống mạng
1.2.1.1 Kiến trúc TCP/IP
Trang 12Hình 1.1 Kiến trúc TCP/IP
Tầng liên kết mạng (Network Access Layer):
Tầng liên kết (còn được gọi là tầng liên kết dữ liệu hay là tầng giao thiếpmạng) là tầng thấp nhất trong mô hình TCP/IP, bao gồm các thiết bị giao tiếp mạng
và chương trình cung cấp các thông tin cần thiết để có thể hoạt động, truy nhậpđường truyền vật lý qua thiết bị giao tiếp mạng đó
Tầng này gồm các thiết bị phần cứng vật lí chẳng hạn như Card Mạng và CápMạng Card mạng chẳng hạn là card Ethernet chứa một số HEX 12 kí tự (00-18-37-03-C0-F4) được gọi là địa chỉ MAC hay địa chỉ truy nhập phương tiện MAC đóngvai trò quan trọng trong việc gán địa chỉ và truyền dữ liệu
Một số giao thức thuộc tầng này bao gồm:
Tầng Internet (Internet Layer):
Tầng Internet (hay còn gọi là tầng mạng) xử lý quá trình truyền gói tin trênmạng bao gồm các chức năng: gán địa chỉ, đóng gói và định tuyến (Route) dữ liệu
4 giao thức quan trọng trong giao thức này là:
+ IP: Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyếnchúng tới đích
+ ARP: Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC.+ ICMP: Có chức năng thông báo lỗi trong trường hợp truyền dữ liệu bị hỏng
Trang 13+ IGMP: Có chức năng điều khiển truyền đa hướng (Multicast).
Tầng giao vận (Transport Layer):
Tầng giao vận phụ trách luồng dữ liệu giữa hai trạm thực hiện các ứng dụngcủa tầng trên Tầng này có hai giao thức chính: TCP và UDP
Giao thức UDP:
Là một trong những giao thức cốt lõi của giao thức TCP/IP Dùng UDP,chương trình trên mạng máy tính có thể gởi những dữ liệu ngắn được gọi làdatagram tới máy khác UDP không cung cấp sự tin cậy và thứ tự truyền nhận màTCP làm, các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không cóthông báo Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kíchthước nhỏ và yêu cầu khắt khe về thời gian Do bản chất không trạng thái của nónên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêucầu
Khuôn dạng của UDP datagram như sau:
Source Port Destination Port
DataHình 1.2 Khuôn dạng của UDP datagram
− Số hiệu cổng nguồn (Source Port - 16 bit): số hiệu cổng nơi đã gửi datagram
− Số hiệu cổng đích (Destination Port - 16 bit): số hiệu cổng nơi datagramđược chuyển tới
− Độ dài UDP (Length - 16 bit): độ dài tổng cổng kể cả phần header của góiUDP datagram
− UDP Checksum (16 bit): dùng để kiểm soát lỗi, nếu phát hiện lỗi thì UDPdatagram sẽ bị loại bỏ mà không có một thông báo nào trả lại cho trạm gửi UDP cóchế độ gán và quản lý các số hiệu cổng (port number) để định danh duy nhất chocác ứng dụng chạy trên một trạm của mạng Do có ít chức năng phức tạp nên UDP
có xu thế hoạt động nhanh hơn so với TCP Nó thường dùng cho các ứng dụngkhông đòi hỏi độ tin cậy cao trong giao vận
Giao thức TCP:
Trang 14TCP và UDP là 2 giao thức ở tầng giao vận và cùng sử dụng giao thức IPtrong tầng mạng Nhưng không giống như UDP, TCP cung cấp dịch vụ liên kết tincậy và có liên kết.
Có liên kết ở đây có nghĩa là 2 ứng dụng sử dụng TCP phải thiết lập liên kếtvới nhau trước khi trao đổi dữ liệu Sự tin cậy trong dịch vụ được cung cấp bởi TCPđược thể hiện như sau:
− Dữ liệu từ tầng ứng dụng gửi đến được được TCP chia thành các segment cókích thước phù hợp nhất để truyền đi
− Khi TCP gửi 1 segment, nó duy trì một thời lượng để chờ phúc đáp từ trạmnhận Nếu trong khoảng thời gian đó phúc đáp không tới được trạm gửi thì segment
đó được truyền lại
− Khi TCP trên trạm nhận nhận dữ liệu từ trạm gửi nó sẽ gửi tới trạm gửi 1phúc đáp tuy nhiên phúc đáp không được gửi lại ngay lập tức mà thường trễ mộtkhoảng thời gian
− TCP duy trì giá trị tổng kiểm tra (checksum) trong phần Header của dữ liệu
để nhận ra bất kỳ sự thay đổi nào trong quá trình truyền dẫn Nếu 1 segment bị lỗithì TCP ở phía trạm nhận sẽ loại bỏ và không phúc đáp lại để trạm gửi truyền lạisegment bị lỗi đó
Giống như IP datagram, TCP segment có thể tới đích một cách không tuần tự
Do vậy TCP ở trạm nhận sẽ sắp xếp lại dữ liệu và sau đó gửi lên tầng ứng dụng đảmbảo tính đúng đắn của dữ liệu Khi IP datagram bị trùng lặp TCP tại trạm nhận sẽloại bỏ dữ liệu trùng lặp đó
TCP cũng cung cấp khả năng điều khiển luồng Mỗi đầu của liên kết TCP cóvùng đệm (buffer) giới hạn do đó TCP tại trạm nhận chỉ cho phép trạm gửi truyềnmột lượng dữ liệu nhất định (nhỏ hơn không gian buffer còn lại) Điều này tránhxảy ra trường hợp trạm có tốc độ cao chiếm toàn bộ vùng đệm của trạm có tốc độchậm hơn
0 4 10 16 24 31
Source Port Destination Port
Sequence Number
Trang 15Length Reserved
U R G
A C K
P S H
R S T
S Y N
F I
DataHình 1.3 Khuôn dạng TCP segmentCác tham số trong khuôn dạng trên có ý nghĩa như sau:
− Source Port (16 bits ) là số hiệu cổng của trạm nguồn
− Destination Port (16 bits ) là số hiệu cổng trạm đích
− Sequence Number (32 bits) là số hiệu byte đầu tiên của segment trừ khi bitSYN được thiết lập Nếu bit SYN được thiết lập thì sequence number là số hiệutuần tự khởi đầu ISN (Initial Sequence Number ) và byte dữ liệu đầu tiên là ISN +
1 Thông qua trường này TCP thực hiện việc quản lý từng byte truyền đi trên mộtkết nối TCP
− Acknowledgment Number (32 bits): số hiệu của segment tiếp theo mà trạmnguồn đang chờ để nhận và ngầm định báo nhận tốt các segment mà trạm đích đãgửi cho trạm nguồn
− Header Length (4 bits): số lượng từ (32 bits) trong TCP header, chỉ ra vị tríbắt đầu của vùng dữ liệu vì trường Option có độ dài thay đổi Header length có giátrị từ 20 đến 60 byte
− Reserved (6 bits): dành để dùng trong tương lai
− Control bits: các bit điều khiển
URG: xác đinh vùng con trỏ khẩn có hiệu lực
ACK: vùng báo nhận ACK Number có hiệu lực
PSH: chức năng PUSH
RST: khởi động lại liên kết
SYN: đồng bộ hoá các số hiệu tuần tự (Sequence number)
FIN: không còn dữ liệu từ trạm nguồn
Trang 16user data
user data Appl
head er application data TCP
header
application data TCP
header
IP header
application
TCP
IP
Ethernet
− Window size (16 bits): cấp phát thẻ để kiểm soát luồng dữ liệu (cơ chế cửa
sổ trượt) Đây chính là số lượng các byte dữ liệu bắt đầu từ byte được chỉ ra trongvùng ACK number mà trạm nguồn sẫn sàng nhận
− Checksum (16 bits): mã kiểm soát lỗi cho toàn bộ segment cả phần header
và dữ liệu
− Urgent Pointer (16 bits): con trỏ trỏ tới số hiệu tuần tự của byte cuối cùngtrong dòng dữ liệu khẩn cho phép bên nhận biết được độ dài của dữ liệu khẩn Vùngnày chỉ có hiệu lực khi bit URG được thiết lập
− Option (độ dài thay đổi ): khai báo các tuỳ chọn của TCP trong đó thôngthường là kích thước cực đại của 1 segment: MSS (Maximum Segment Size)
− TCP data (độ dài thay đổi ): chứa dữ liệu của tầng ứng dụng có độ dài ngầmđịnh là 536 byte Giá trị này có thể điều chỉnh được bằng cách khai báo trong vùngOption
Tầng ứng dụng (Application Layer):
Tầng ứng dụng là tầng trên cùng của mô hình TCP/IP bao gồm các tiến trình
và các ứng dụng cung cấp cho người sử dụng để truy cập mạng Có rất nhiều ứngdụng được cung cấp ở tầng này, mà phổ biến là: Telnet: sử dụng trong việc truy cậpmạng từ xa, FTP (File Transfer Protocol): dịch vụ truyền tệp, Email: dịch vụ thư tínđiện tử, WWW (World Wide Web)
1.2.1.2 Quá trình truyền dữ liệu trong mô hình TCP/IP
TCP segment
Trang 171.2.3 Mô hình OSI
Mô hình OSI (Open System Interconnection): là mô hình được tổ chức ISO đềxuất từ 1977 và công bố lần đầu vào 1984 Để các máy tính và các thiết bị mạng cóthể truyền thông với nhau phải có những qui tắc giao tiếp được các bên chấp nhận
Mô hình OSI là một khuôn mẫu giúp chúng ta hiểu dữ liệu đi xuyên qua mạng nhưthế nào đồng thời cũng giúp chúng ta hiểu được các chức năng mạng diễn ra tại mỗilớp
1.2.3.1 Kiến trúc và chức năng các lớp trong mô hình OSI
Hình 1.5 Các lớp trong mô hình OSIChức năng của các lớp trong mô hình tham chiếu OSI:
Trang 18Lớp ứng dụng (ApplicationLayer): là giao diện giữa các chương trình ứng
dụng của người dùng và mạng Lớp Application xử lý truy nhập mạng chung, kiểmsoát luồng và phục hồi lỗi Lớp này không cung cấp các dịch vụ cho lớp nào mà nócung cấp dịch vụ cho các ứng dụng như: truyền file, gởi nhận E-mail, Telnet,HTTP, FTP, SMTP…
Lớp trình bày (PresentationLayer): lớp này chịu trách nhiệm thương lượng
và xác lập dạng thức dữ liệu được trao đổi Nó đảm bảo thông tin mà lớp ứng dụngcủa một hệ thống đầu cuối gởi đi, lớp ứng dụng của hệ thống khác có thể đọc được.Lớp trình bày thông dịch giữa nhiều dạng dữ liệu khác nhau thông qua một dạngchung, đồng thời nó cũng nén và giải nén dữ liệu Thứ tự byte, bit bên gởi và bênnhận qui ước qui tắc gởi nhận một chuỗi byte, bit từ trái qua phải hay từ phải quatrái Nếu hai bên không thống nhất thì sẽ có sự chuyển đổi thứ tự các byte bit vàotrước hoặc sau khi truyền Lớp presentation cũng quản lý các cấp độ nén dữ liệunhằm giảm số bit cần truyền Ví dụ: JPEG, ASCCI, EBCDIC
Lớp phiên (SessionLayer): lớp này có chức năng thiết lập, quản lý, và kết
thúc các phiên thông tin giữa hai thiết bị truyền nhận Lớp phiên cung cấp các dịch
vụ cho lớp trình bày Lớp Session cung cấp sự đồng bộ hóa giữa các tác vụ ngườidùng bằng cách đặt những điểm kiểm tra vào luồng dữ liệu Bằng cách này, nếumạng không hoạt động thì chỉ có dữ liệu truyền sau điểm kiểm tra cuối cùng mớiphải truyền lại Lớp này cũng thi hành kiểm soát hội thoại giữa các quá trình giaotiếp, điều chỉnh bên nào truyền, khi nào, trong bao lâu Ví dụ như: RPC, NFS, Lớp này kết nối theo ba cách: Haft-duplex, Simplex, Full-duplex
Lớp vận chuyển (TransportLayer): lớp vận chuyển phân đoạn dữ liệu từ hệ
thống máy truyền và tái thiết lập dữ liệu vào một luồng dữ liệu tại hệ thống máynhận đảm bảo rằng việc bàn giao các thông điệp giữa các thiết bị đáng tin cậy Dữliệu tại lớp này gọi là segment Lớp này thiết lập, duy trì và kết thúc các mạch ảođảm bảo cung cấp các dịch vụ sau:
+ Xếp thứ tự các phân đoạn: khi một thông điệp lớn được tách thành nhiềuphân đoạn nhỏ để bàn giao, lớp vận chuyển sẽ sắp xếp thứ tự các phân đoạn trướckhi ráp nối các phân đoạn thành thông điệp ban đầu
Trang 19+ Kiểm soát lỗi: khi có phân đoạn bị thất bại, sai hoặc trùng lắp, lớp vậnchuyển sẽ yêu cầu truyền lại
+ Kiểm soát luồng: lớp vận chuyển dùng các tín hiệu báo nhận để xác nhận.Bên gửi sẽ không truyền đi phân đoạn dữ liệu kế tiếp nếu bên nhận chưa gởi tínhiệu xác nhận rằng đã nhận được phân đoạn dữ liệu trước đó đầy đủ
Lớp mạng (NetworkLayer): lớp mạng chịu trách nhiệm lập địa chỉ các
thông điệp, diễn dịch địa chỉ và tên logic thành địa chỉ vật lý đồng thời nó cũng chịutrách nhiệm gởi packet từ mạng nguồn đến mạng đích Lớp này quyết định đường đi
từ máy tính nguồn đến máy tính đích Nó quyết định dữ liệu sẽ truyền trên đườngnào dựa vào tình trạng, ưu tiên dịch vụ và các yếu tố khác Nó cũng quản lý lưulượng trên mạng chẳng hạn như chuyển đổi gói, định tuyến, và kiểm soát sự tắcnghẽn dữ liệu Nếu bộ thích ứng mạng trên bộ định tuyến (router) không thể truyền
đủ đoạn dữ liệu mà máy tính nguồn gởi đi, lớp Network trên bộ định tuyến sẽ chia
dữ liệu thành những đơn vị nhỏ hơn, nói cách khác, nếu máy tính nguồn gởi đi cácgói tin có kích thước là 20Kb, trong khi Router chỉ cho phép các gói tin có kíchthước là 10Kb đi qua, thì lúc đó lớp Network của Router sẽ chia gói tin ra làm 2,mỗi gói tin có kích thước là 10Kb Ở đầu nhận, lớp Network ráp nối lại dữ liệu Vídụ: một số giao thức lớp này: IP, IPX, Dữ liệu ở lớp này gọi packet hoặcdatagram
Lớp liên kết dữ liệu (Data link Layer): cung cấp khả năng chuyển dữ liệu tin
cậy xuyên qua một liên kết vật lý Lớp này liên quan đến:
+ Địa chỉ vật lý
+ Mô hình mạng
+ Cơ chế truy cập đường truyền
+ Thông báo lỗi
+ Thứ tự phân phối frame
+ Điều khiển dòng
Tại lớp datalink, các bít đến từ lớp vật lý được chuyển thành các frame dữ liệubằng cách dùng một số nghi thức tại lớp này Lớp datalink được chia thành hai lớpcon:
+ Lớp con LLC (logical link control)
Trang 20+ Lớp con MAC (media access control)
Lớp con LLC là phần trên so với các giao thức truy cập đường truyền khác, nócung cấp sự mềm dẻo về giao tiếp Bởi vì lớp con LLC hoạt động độc lập với cácgiao thức truy cập đường truyền, cho nên các giao thức lớp trên hơn (ví dụ như IP ởlớp mạng) có thể hoạt động mà không phụ thuộc vào loại phương tiện LAN Lớpcon LLC có thể lệ thuộc vào các lớp thấp hơn trong việc cung cấp truy cập đườngtruyền
Lớp con MAC cung cấp tính thứ tự truy cập vào môi trường LAN Khi nhiềutrạm cùng truy cập chia sẻ môi trường truyền, để định danh mỗi trạm, lớp cho MACđịnh nghĩa một trường địa chỉ phần cứng, gọi là địa chỉ MAC address Địa chỉ MAC
là một con số đơn nhất đối với mỗi giao tiếp LAN (card mạng)
Lớp vật lý (PhysicalLayer): định nghĩa các qui cách về điện, cơ, thủ tục
và các đặc tả chức năng để kích hoạt, duy trì và dừng một liên kết vật lý giữa các hệthống đầu cuối Một số các đặc điểm trong lớp vật lý này bao gồm:
Trang 21Hình 1.6 Quá trình truyền dữ liệu trong mô hình OSI
1.2.3.2 So sánh hai giao thức TCP/IP và OSI
Khi kiến trúc tiêu chuẩn OSI xuất hiện thì TCP/IP đã trên con đường pháttriển Xét một cách chặt chẽ, TCP/IP không tuân theo OSI Tuy nhiên, hai mô hìnhnày có những mục tiêu giống nhau và do có sự tương tác giữa các nhà thiết kế tiêuchuẩn nên 2 mô hình xuất hiện những điểm tương thích Cũng chính vì thế, cácthuật ngữ của OSI thường được áp dụng cho TCP/IP
Hình 1.7 thể hiện mối quan hệ giữa tiêu chuẩn TCP/IP bốn lớp và mô hìnhOSI bảy lớp
Hình 1.7 So sánh mô hình TCP/IP và OSI
Trang 22OSI chia nhiệm vụ của lớp ứng dụng thành 3 phân lớp: ứng dụng, trình bày vàkhu vực Hoạt động của lớp tương tác mạng trong OSI được tách thành lớp kết nối
dữ liệu và lớp vật lý Việc chia nhỏ chức năng làm tăng thêm sự phức tạp, nhưngđồng thời cũng tạo ra sự linh hoạt cho các nhà phát triển
1.2.4 Truyền thông Socket
1.2.4.1 Định nghĩa
Có nhiều định nghĩa khác nhau về socket tùy theo cách nhìn của người sửdụng Một cách tổng quát nhất có thể định nghĩa: Một socket là một điểm cuối trongmột kết nối giữa hai chương trình đang chạy trên mạng
Nhìn trên quan điểm của người phát triển ứng dụng người ta có thể định nghĩa:Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương trìnhyêu cầu dịch vụ (được gán nhãn client) và một chương trình cung cấp dịch vụ (đượcgán nhãn server) trên mạng hoặc trên cùng một máy tính
Đối với người lập trình, họ nhìn nhận socket như một giao diện nằm giữa tầngứng dụng và tầng khác trong mô hình mạng OSI có nhiệm vụ thực hiện việc giaotiếp giữa chương trình ứng dụng với các tầng bên dưới của mạng
Tuy nhiên, các lập trình viên hiện nay gần như luôn luôn bị ngăn cản tạosocket riêng bằng cách thủ công bởi dù bạn dùng Java, serlet, hay CGI, PHP, cóthể bạn sẽ không bao giờ mở được cổng một cách tường minh Thay vào đó các lậptrình viên sử dụng thư viện socket được hỗ trợ sẵn bởi các ngôn ngữ lập trình Nhưvậy các socket vẫn tồn tại để kết nối các ứng dụng của người dùng, nhưng các chitiết của socket được ẩn trong những lớp sâu hơn để mội người không phải đụngchạm đến
Trang 23Có hai loại socket:
Socket có hướng kết nối (TCP)
Socket không hướng kết nối (UDP)
Đặc điểm của socket hướng kết nối:
+ Có một đường kết nối (địa chỉ IP) giữa 2 tiến trình
+ Một trong 2 tiến trình kia phải đợi tiến trình kia yêu cầu kết nối
+ Có thể dùng để liên lạc theo mô hình client và sever
+ Mô hình client /sever thì sever lắng nghe và chấp nhận từ client
+ Mỗi thông điệp gửi phải có xác nhận trả về
+ Các gói tin chuyển đi tuần tự
Đặc điểm socket không hướng kết nối:
+ 2 tiến trình liên lạc với nhau không kết nối trực tiếp
Trang 24+ Thông điệp gửi đi phải kèm theo thông điệp người nhận
+ Thông điệp có thể gửi nhiều lần
+ Người gửi không chắc chắn thông điệp đến tay người nhận
+ Thông điệp gửi sau có thể đến trước và ngược lại
Số hiệu cổng của socket:
Để có thể thực hiện các cuộc giao tiếp, một trong hai quá trình phải công bố sốhiệu cổng socket mà mình sử dụng Mỗi cổng giao tiếp thể hiện một địa chỉ xácđịnh trong hệ thống Khi quá trình được gán một số hiệu cổng, nó có thể nhận dữliệu gửi đến cổng này từ các quá trình khác Quá trình còn lại cũng được yêu cầu tạo
ra một socket
Ngoài số hiệu cổng, hai bên giao tiếp còn phải biết địa chỉ IP của nhau Địachỉ IP giúp phân biệt máy tính này với máy tính kia trên mạng TCP/IP Trong khi sốhiệu cổng dùng để phân biệt các quá trình khác nhau trên cùng một máy tính
1.2.4.2 Nguyên lý hoạt động
Như ta đã thấy, khi hai ứng dụng muốn trao đổi dữ liệu qua mạng chúng sẽ tạo
ra ở mỗi phía một socket và trao đổi dữ liệu bằng cách đọc/ghi từ socket Để hiểu rõcách thức socket trao đổi dữ liệu chúng ta hãy xem xét nguyên lý hoạt động củachúng
Trước hết chúng ta hãy xem xét làm thế nào các socket có thể xác định đượcnhau Khi một chương trình tạo ra một socket, một định danh dạng số ( định danhdạng số này còn được gọi là số hiệu cổng) sẽ được gán cho socket Việc gán số hiệucổng này cho socket có thể được thực hiện bởi chương trình hoặc hệ điều hành tùytheo cách socket được sử dụng như thế nào Trong mỗi gói tin mà socket gửi đi cóchứa hai thông tin để xác định đích đến của gói tin:
+ Một địa chỉ mạng để xác định hệ thống sẽ nhận gói tin
+ Một số định danh cổng để nói cho hệ thống đích biết socket nào trên nó sẽnhận dữ liệu
Nhờ hai thông tin này mà gói tin có thể đến đúng được máy tính chứa socket
mà nó cần đến (nhờ địa chỉ mạng) và được phân phối đến đúng socket đích (nhờ địachỉ cổng của socket đích)
Trang 25Dưới góc độ lập trình các socket thường làm việc theo cặp, một socket đóngvai trò làm server còn các socket khác đóng vai trò như clients Socket phía serverxác định một cổng cho giao tiếp mạng, sau đó chờ nghe yêu cầu mà client gửi tới nóbằng client socket Do đó các cổng cho server socket phải được biết bởi các chươngtrình client
Như vậy số hiệu cổng của socket phía server được xác định bởi chương trình,ngược lại cổng cho client socket được xác định bởi hệ điều hành Khi một socketphía client gửi một gói tin tới socket phía server thì trong gói tin đã có chứa thôngtin về địa chỉ của hệ thống client và cổng của socket phía client trên server hoàntoàn có thể gửi thông tin phản hồi cho client
Chúng ta có thể khái quát quá trình trao đổi dữ liệu thông qua các socket nhưsau:
+ Chương trình phía server tạo ra một socket, socket này được chương trìnhgắn với một cổng trên server Sau khi tạo ra socket này (ta gọi là socket phía server)
sẽ chờ nghe yêu cầu từ client
+ Khi chương trình phía client cần kết nối với một server, nó cũng tạo ra mộtsocket, socket này cũng được hệ điều hành gắn với một cổng Chương trình client sẽcung cấp cho socket của nó (ta gọi là socket phía client) địa chỉ mạng và cổng củasocket phía server và yêu cầu thực hiện kết nối hoặc truyền dữ liệu
+ Chương trình phía server và chương trình phía client trao đổi dữ liệu vớinhau bằng cách đọc từ socket hoặc ghi vào socket của mình Các socket ở hai phíanhận dữ liệu từ ứng dụng và đóng gói để gửi đi hoặc nhận các dữ liệu được gửi đến
và chuyển cho chương trình ứng dụng bởi socket ở cả hai phía đều biết được địa chỉmạng và địa chỉ cổng của nhau
Trang 26CHƯƠNG 2 GIAO THỨC MQTT TRONG HỆ THỐNG IOT 2.1 Hệ thống IoT (Internet of Things)
2.1.1 Định nghĩa
Internet của Sự vật (IoT) là khái niệm về mọi vật đều có thể kết nối Internetthông qua các bộ cảm biến (sensor) Hệ thống IoT có thể bao gồm: các thiết bị đeo(wearable) theo dõi chỉ số y tế, thiết bị đo từ xa, nhà thông minh, mạng cảm biếnkhông dây đo thông số môi trường, ô tô kết nối Internet, điện thoại di động tươngtác với môi trường Kết quả là không có một kiến trúc chung duy nhất phù hợp chomọi lĩnh vực ứng dụng nêu trên Tuy nhiên, một kiến trúc kiểu mô- đun cho phépthêm/bớt tính năng theo yêu cầu của từng tình huống ứng dụng là rất hữu ích Đó làđiểm khởi đầu giúp cho các nhà kiến trúc tạo ra những giải pháp IoT nền tảng choviệc phát triển sau này
2.1.2 Kiến trúc tham chiếu
Kiến trúc tham chiếu IoT bao gồm 5 lớp xếp chồng Mỗi lớp có một chức năngriêng, có thể minh họa bằng những công nghệ cụ thể Có 2 lớp theo chiều dọc làquản lý thiết bị và quản lý định danh & truy nhập
Hình 2.1 Kiến trúc tham chiếu cho IoT
Trang 27Lớp Thiết bị (Devices):
Các thiết bị IoT phải có giao thức truyền thông trực tiếp (Arduino, Raspberry
Pi, Intel Galileo qua Ethernet hoặc Wi-Fi) hoặc gián tiếp kết nối được với Internet(ZigBee, Bluetooth hoặc Bluetooth công suất thấp qua điện thoại di động, )
Mỗi thiết bị cần có định danh thuộc một trong các loại: định danh duy nhất(UUID) ghi sẵn trong phần cứng (thường là một phần của SoC hoặc chip thứ cấp),UUID gửi qua hệ thống vô tuyến phụ (ví dụ: định danh Bluetooth, địa chỉ Wi-FiMAC), token OAuth2 Refresh/Bearer (có thể là bổ sung cho các loại khác), địnhdanh lưu trong bộ nhớ chỉ đọc như EEPROM
Các chuyên gia khuyến nghị, mỗi thiết bị IoT nên có một UUID (tốt nhất lưu
cố định trong phần cứng) và một token OAuth2 Refresh/Bearer lưu trongEEPROM OAuth2 token có mục đích tạo ra một token định danh tách biệt với sốđịnh danh cố định ghi trong mỗi thiết bị Bearer token được dùng ban đầu để gửiđến bất kỳ server hay dịch vụ nào cần định danh Bearer token có thời gian sốngngắn hơn Refresh token Nếu Bearer token hết hạn, Refresh token được gửi đến lớpđịnh danh để tạo ra bản cập nhật của Bearer token
Lớp Truyền thông (Communications):
Lớp truyền thông hỗ trợ kết nối các thiết bị Nhiều giao thức có thể sử dụngtrong lớp này như HTTP/HTTPS, MQTT 3.1/3.1.1, CoAP (Constrained ApplicationProtocol) Trong đó, HTTP là giao thức lâu đời và phổ biến nhất nên có nhiều thưviện hỗ trợ Vì đó là giao thức dựa trên ký tự đơn giản nên nhiều thiết bị nhỏ như bộđiều khiển 8 bit đều có thể hỗ trợ HTTP Các thiết bị 32 bit lớn hơn có thể sử dụngcác thư viện HTTP client đầy đủ
Có một số giao thức được tối ưu riêng cho IoT, trong đó nổi bật nhất là 2 giaothức MQTT và CoAP
Lớp Hợp nhất/Bus (Aggregation/ Bus):
Đây là lớp quan trọng để hợp nhất và chuyển đổi các thông điệp (messagebroker hay middleware) truyền thông với 3 chức năng sau:
Trang 28- Hỗ trợ máy chủ HTTP và/hoặc chức năng chuyển đổi MQTT để giao tiếp vớithiết bị.
- Hợp nhất nội dung truyền từ các thiết bị khác nhau và định tuyến truyềnthông tới một thiết bị cụ thể (có thể qua gateway)
- Bắc cầu và chuyển đổi giữa 2 giao thức khác nhau, ví dụ chuyển đổi API dựatrên HTTP ở lớp trên vào thông điệp MQTT đến thiết bị
Lớp Bus cũng có thể cung cấp một số tính năng tương quan (correlation) vàánh xạ đơn giản từ các mô hình tương quan khác nhau (nghĩa là ánh xạ số định danhthiết bị sang số định danh của người sở hữu thiết bị và ngược lại)
Cuối cùng, lớp Hợp nhất/Bus cần thực hiện 2 nhiệm vụ an toàn bảo mật làmáy chủ tài nguyên OAuth2 (thẩm định Bearer token và các truy nhập tài nguyênliên quan) và điểm tăng cường chính sách (PEP) đối với truy nhập dựa trên chínhsách Trong mô hình ở hình 2.1, lớp Bus yêu cầu lớp quản lý truy nhập và định danhthẩm định các yêu cầu truy nhập Lớp quản lý truy nhập và định danh đóng vai trònhư điểm quyết định chính sách (PDP) trong quá trình này Sau đó, lớp Bus thựchiện theo kết quả do PDP mang đến, nghĩa là cho phép hoặc không cho phép truynhập tài nguyên
Lớp Xử lý Sự kiện và Phân tích (Event Processing and Analytics):
Lớp này xử lý các sự kiện từ lớp Bus chuyển lên Yêu cầu chủ yếu ở đây làkhả năng lưu trữ dữ liệu vào cơ sở dữ liệu Mô hình truyền thống sẽ viết một ứngdụng phía máy chủ (ví dụ, JAX-RS) Tuy nhiên, có một số cách tiếp cận khác linhhoạt hơn Thứ nhất là sử dụng các nền tảng phân tích dữ liệu lớn Đó là nền tảngdựa trên cloud khả mở hỗ trợ các công nghệ như Apache Hadoop để cung cấpnhững phân tích map-reduce (quy trình xử lý dữ liệu siêu lớn) đối với tập hợp dữliệu đến từ các thiết bị Cách tiếp cận thứ hai là hỗ trợ phương thức Xử lý Sự kiệnPhức tạp (Complex Processing Event) để thực hiện các hoạt động gần như theo thờigian thực và ra quyết định hành động dựa theo kết quả phân tích dữ liệu từ các thiết
bị chuyển đến
Lớp Truyền thông ngoài (External Communication):
Lớp này tạo ra giao diện giúp quản lý các thiết bị IoT như: web/portal,
Trang 29trúc cần hỗ trợ các công nghệ Web phía máy chủ như Java Servlets/JSP, PHP,Python, Ruby Web server dựa trên Java phổ biến nhất là Apache Tomcat.Dashboard là hệ thống tái sử dụng tập trung vào việc trình bày đồ thị mô tả dữ liệuđến từ các thiết bị và lớp xử lý sự kiện Lớp quản lý API có 3 chức năng Thứ nhất
là cung cấp portal tập trung vào hỗ trợ lập trình viên tác nghiệp (chứ không phải làngười sử dụng như portal thông thường) và quản lý các phiên bản của API đượcxuất bản Thứ hai là đóng vai trò gateway quản lý truy nhập vào các API, kiểm traviệc điều khiển truy nhập (đối với yêu cầu từ bên ngoài), điều tiết sử dụng dựa trênchính sách, định tuyến và cân bằng tải Cuối cùng là chức năng gateway đẩy dữ liệuvào lớp phân tích để lưu trữ và xử lý, giúp hiểu được các API đã được sử dụng nhưthế nào
Lớp Quản lý Thiết bị (Device Management):
Trong lớp quản lý thiết bị, hệ thống phía máy chủ DM (Device Manager) giaotiếp với các thiết bị thông qua các giao thức khác nhau và điều khiển phần mềm củatừng thiết bị hoặc một nhóm thiết bị (có thể khóa hoặc xóa dữ liệu trên thiết bị khicần), quản lý định danh các thiết bị và ánh xạ vào chủ nhân các thiết bị đó DM phảiphối hợp với lớp quản lý định danh và truy nhập để quản lý việc điều khiển truynhập vào thiết bị (những người có quyền truy nhập vào thiết bị ngoài chủ nhân,quyền điều khiển của chủ nhân thiết bị so với người quản trị )
Lớp Quản lý Định danh và Truy nhập (Identity and Access Management):
Lớp này cần cung cấp các dịch vụ: Phát hành và thẩm định Oauth2 token; Cácdịch vụ định danh khác, gồm cả SAML2 SSO và OpenID Connect; XACML PDP;Danh bạ cho người dùng (ví dụ: LDAP); Quản lý chính sách điều khiển truy nhập(PCP)
2.1.3 Phân loại thiết bị IoT và phương thức kết nối Internet
Các thiết bị IoT rất đa dạng nhưng có thể phân thành ba loại chủ yếu, xét theokích cỡ:
- Những thiết bị IoT có kích thước nhỏ nhất dùng bộ điều khiển 8 bit nhúng,kiểu cả hệ thống trên chip SoC (System on Chip) và thường không có hệ điều hành
Ví dụ điển hình là nền tảng phần cứng nguồn mở Arduino 8 bit
Trang 30- Mức cao hơn là hệ thống dựa trên chip ARM và Arthero có kiến trúc 32 bitrút gọn (limited) Những thiết bị này thường là các bộ router nhỏ dành cho gia đình
và những biến thể khác Hệ thống thường chạy trên nền tảng nhúng Linux rút gọnhoặc hệ điều hành nhúng dành riêng Một số trường hợp không sử dụng hệ điềuhành như Arduino Zero hoặc Arduino Yun
- Hệ thống IoT lớn nhất là loại sử dụng nền tảng 32 hoặc 64 bit đầy đủ Những
hệ thống như Raspberry Pi hay BeagleBone có thể chạy hệ điều hành Linux đầy đủhoặc Android Nhiều trường hợp chính là điện thoại di động hoặc dựa trên côngnghệ điện thoại di động Những thiết bị này có thể đóng vai trò gateway hoặc cầu(bridge) cho các thiết bị nhỏ hơn Ví dụ: thiết bị đeo kết nối qua Bluetooth công suấtthấp với điện thoại di động hay Raspberry Pi, để sau đó làm cầu nối với mạngInternet
Có một số giải pháp kết nối giữa thiết bị với Internet hoặc gateway:
- Kết nối Ethernet hoặc Wi-Fi trực tiếp qua giao thức TCP hoặc UDP
- Bluetooth công suất thấp
- Kết nối trường gần (NFC)
- Zigbee hoặc các mạng vô tuyến khác
- SRF và kết nối vô tuyến điểm-điểm
- UART hoặc kênh nối tiếp (serial lines)
- SPI hoặc kênh I2C (wired buses)
2.1.4 Các yêu cầu của kiến trúc tham chiếu cho IoT
Yêu cầu chung là kiến trúc tham chiếu cho IoT phải trung lập với nhà sảnxuất, không phụ thuộc vào công nghệ cụ thể nào Có những yêu cầu khá đặc thù chothiết bị IoT và môi trường hỗ trợ nhưng cũng có những yêu cầu xuất phát từ quátrình sản xuất và sử dụng Có thể tóm tắt các yêu cầu của kiến trúc tham chiếu choIoT trong 5 nhóm sau:
Kết nối và giao tiếp:
Các giao thức hiện tại như HTTP có vị trí rất quan trọng trong nhiều thiết bị.Thậm chí ngay cả bộ điều khiển 8 bit cũng có thể tạo ra lệnh GET, POST và giaothức HTTP tạo ra kết nối đồng nhất quan trọng Tuy nhiên, phần mào đầu của
Trang 31HTTP và một số giao thức Internet truyền thống chưa phù hợp cho giao tiếp IoT vìhai lý do Thứ nhất, kích cỡ bộ nhớ của chương trình quá lớn so với những thiết bịnhỏ Vấn đề thứ hai còn lớn hơn: HTTP yêu cầu công suất tương đối cao so vớithiết bị IoT nhỏ Do vậy, cần có một giao thức nhị phân đơn giản, nhỏ gọn và cókhả năng đi qua tường lửa Đối với thiết bị IoT kết nối Internet qua gateway cần 2giao thức: một giao thức kết nối gateway còn giao thức khác kết nối từ gateway vớiInternet Cuối cùng, kiến trúc phải hỗ trợ giao thức truyền thông (communications)
và bắc cầu Ví dụ, giao thức nhị phân dùng cho thiết bị IoT phải cho phép API (dựatrên HTTP) điều khiển được thiết bị khi kết nối với bên thứ ba
Quản lý thiết bị:
Hiện nay, nhiều thiết bị IoT chưa được quản lý ở chế độ tích cực (active) trongkhi chế độ quản lý này đã phổ biến và ngày càng trở nên quan trọng trong PC, điệnthoại di động và các thiết bị khác Như vậy, chế độ tích cực là yêu cầu cần có trongquản lý thiết bị IoT, cụ thể bao gồm những tính năng sau:
- Khả năng ngắt kết nối với thiết bị hỏng hoặc bị đánh cắp
- Khả năng cập nhật phần mềm trên thiết bị
- Cập nhật các thông số bảo mật
- Khả năng bật/tắt từ xa một số tính năng phần cứng
- Xác định vị trí thiết bị mất cắp
- Xóa dữ liệu bảo mật khỏi thiết bị mất cắp
- Cấu hình lại từ xa các thông số của Wi-Fi, GPRS hoặc các thông số mạngkhác
Thu thập, phân tích và khởi động dữ liệu:
Một số thiết bị IoT có giao diện UI nhưng nói chung hầu hết các thiết bị IoTtập trung vào trang bị 1-2 bộ cảm biến có thể kèm theo (hoặc không) 1 bộ kích động(actuator) hoặc nhiều hơn Yêu cầu của hệ thống là thu thập dữ liệu từ rất nhiềuthiết bị, lưu trữ, phân tích và ra quyết định hành động dựa trên kết quả phân tích gầnnhư theo thời gian thực Kiến trúc tham chiếu được thiết kế để quản lý số lượng lớnthiết bị Nếu những thiết bị đó tạo ra dòng dữ liệu ổn định, liên tục thì sẽ có lượng
dữ liệu khá lớn Yêu cầu là hệ thống lưu trữ cần có tính khả mở cao, xử lý đượckhối lượng dữ liệu lớn và đa dạng
Trang 32Tính khả mở (scalability):
Bất kỳ kiến trúc phía máy chủ (server-side) nào đều cần tính khả mở cao, cóthể hỗ trợ hàng triệu thiết bị liên tục gửi, nhận và hoạt động dựa trên dữ liệu Tuynhiên, "kiến trúc khả mở cao" kéo theo giá thành cao cả về phần cứng, phần mềm
và độ phức tạp Yêu cầu quan trọng đối với kiến trúc này là phải hỗ trợ tính mở từmức triển khai nhỏ cho đến số lượng thiết bị rất lớn Tính năng có thể mở co giãn(elastic) và có thể triển khai dạng cloud như dịch vụ Amazon EC2 là rất cần thiết
- Những nguy cơ riêng từ chính bản thân thiết bị IoT, nhất là phần cứng Ví
dụ, nhiều thiết bị IoT quá nhỏ, không hỗ trợ cơ chế mã hóa phi đối xứng phù hợpnên không bảo đảm an toàn
Có hai vấn đề quan trọng, đặc thù của bảo mật IoT là quản lý định danh vàtruy nhập Quản lý định danh cho thiết bị IoT và giao tiếp máy-máy (M2M) bằngcách dùng cặp "tên/mật khẩu" là sai lầm thông dụng Giải pháp lý tưởng là sử dụngtoken cấp theo chuẩn của OAuth/OAuth2 Đối với quản lý truy nhập, sai lầmthường thấy là sử dụng luật truy nhập đã lập trình cứng trong mã nguồn phía client
và server Cách tiếp cận tốt nhất hiện nay là sử dụng tiêu chuẩn XACML Cách tiếpcận này không dùng mạch logic lập trình sẵn mà đưa vào chính sách ra quyết địnhcho phép truy nhập
2.2 Nền tảng truyền thông IoT
Trang 33Đa số thiết bị được gán mác “smart” ngày nay đều đồng nghĩa với việc nóđược sản xuất kèm theo tính năng giao tiếp qua các kênh không dây Các giao thứcgiao tiếp không dây trong thế giới IoT được thiết kế để thỏa mãn các yêu cầu cơbản: tiêu tốn ít năng lượng cho việc thu/phát sóng, tiêu tốn ít băng thông (để giảmgánh nặng cho router wireless và hệ thống mạng), hoạt động trong mạng mắt lưới…Một số thiết bị sẽ giao tiếp qua Wi-fi hay Bluetooth, nhưng đa phần sẽ tận dụng cáckết nối sử dụng dải tần dưới mức GHz Zigbee.
2.2.1 Giao thức Zigbee
Zigbee là một tiêu chuẩn được định nghĩa: là tập hợp các giao thức giao tiếpmạng không dây khoảng cách ngắn có tốc độ truyền dữ liệu thấp Về bản chấtZigbee cũng một chuẩn giao tiếp không dây như những chuẩn không dây khác:UWB, Wi-Fi, IrDA, 3G, Bluetooth nhưng nó mang những đặc tính kỹ thuật vàđặc tính vật lý riêng và do đó sẽ chỉ phù hợp với một mảng ứng dụng nhất định.Tín hiệu truyền trong giao thức Zigbee thực chất là tín hiệu radio Zigbee được
hỗ trợ trong các dải tần số sau:
- Dải 868,3MHz: Chỉ một kênh tín hiệu Trong dải này tốc độ truyền là20kbps
- Dải 902MHz - 928MHz: Có 10 kênh tín hiệu từ 1 - 10 với tốc độ truyềnthường là 40kbps
- Dải 2,4GHz - 2,835GHz: có 16 kênh tín hiệu từ 11 - 26 với tốc độ truyền250kbps
Trong nhiều ứng dụng, người ta hay dùng giao thức Zigbee ở dải tần 2,4GHz 2,835GHz Đây là dải tần phổ biến và được hỗ trợ bởi nhiều thiết bị Hơn nữa vớiZigbee, dải tần này có tới 16 kênh tín hiệu trong dải (mỗi kênh cách nhau 5MHz tầnsố) với tốc độ truyền lớn nhất: 250kbps
-Zigbee có những đặc điểm chính sau:
- Tốc độ truyền dữ liệu thấp 20-250Kbps
- Sử dụng công suất thấp, ít tiêu hao điện năng
- Thời gian sử dụng pin rất dài
- Cài đặt, bảo trì dễ dàng
Trang 34Security 32/64/128 bit encryption
Network Start/Mesh/Cluster Tree Topology
- Độ tin cậy cao
- Có thể mở rộng đến 65000 node
- Chi phí đầu tư thấp
Zigbee chủ yếu được sử dụng cho các ứng dụng chạy pin có tốc độ dữ liệuthấp, chi phí nhỏ, và thời gian sử dụng pin dài Trong nhiều ứng dụng của Zigbee,tổng thời gian mà thiết bị không dây thực sự hoạt động rất ít, thiết bị sử dụng hầuhết thời gian của nó trong chế độ tiết kiệm năng lượng, hay chế độ ngủ (sleepmode) Kết quả là, Zigbee cho phép các thiết bị có khả năng hoạt động trong nhiềunăm trước khi cần phải nạp lại pin hoặc thay pin mới
Kiến trúc Zigbee:
Hình 2.2 Kiến trúc lớp (hay ngăn xếp - Stack) trong kiến trúc Zigbee
Zigbee được xây dựng ở trên của hai lớp MAC ( Medium Access Control) vàlớp vật lý PHY Lớp MAC và lớp PHY được định nghĩa theo chuẩn IEEE 802.15.4dành cho các ứng dụng WPAN tốc độ thấp Đặc tính kỹ thuật Zigbee sau đó thêmvào 4 lớp chính: lớp mạng, lớp ứng dụng, lớp các đối tượng thiết bị Zigbee ( ZDO)
và lớp các đối tượng người dùng cho phép tùy biến, linh động trong chuẩn đó.Bên cạnh việc tích hợp thêm hai lớp mức cao hơn trên các lớp nền, một sự tíchhợp rất quan trọng nữa là thêm vào các ZDO ( Zigbee Device Object) Các ZDO
Trang 35chịu trách nhiệm cho nhiều tác vụ, trong đó bao gồm: định nghĩa vai trò của cácthiết bị, tổ chức và yêu cầu để truy nhập vào mạng, bảo mật cho thiết bị
Zigbee Router (ZR): Là một thành phần của hệ thống mạng mà chức năngcủa nó là thực hiện việc vận chuyển các gói tin trong mạng Nó thực hiện các bảngkết nối cũng như định vị địa chỉ cho các ZED của nó
Zigbee End Device (ZED): Là một thành phần của hệ thống mạng nhưngkhông tham gia vào quá trình vận chuyển tin Nó có được tối ưu sao cho công suấttiêu thụ là nhỏ nhất nhờ các chế độ bắt tín hiệu và kỹ thuật "sleep"
Quá trình thiết lập trong một mạng Zigbee như sau:
Quét mạng (Network Scan): Các thiết bị trong mạng sẽ quét các kênh tín hiệu,
ví dụ nếu dùng dải tần 2,4GHz thì sẽ có 16 kênh để quét, sau đó thiết bị sẽ chọnkênh phù hợp nhất để giao tiếp trong mạng Ta gọi đó là sự chiếm chỗ : ocupacy
- Thiết lập/Gia nhập mạng: Thiết bị có thể tạo ra một mạng trên một kênh hoặcgia nhập vào một mạng đã tồn tại sẵn
Trang 36- Phát hiện thiết bị: Thiết bị sẽ yêu cầu mạng phát hiện ra địa chỉ của mình trêncác kênh được kích hoạt.
- Phát hiện dịch vụ: Thiết bị quét các dịch vụ được hỗ trợ trên thiết bị trongphạm vi mạng
- Liên kết: Thiết bị giao tiếp với nhau thông qua các lệnh và các tin nhắn điềukhiển
Chuẩn Zigbee rất phù hợp với những ứng dụng yêu cầu giá thành thấp, tiêuthụ năng lượng nhỏ và tính linh động tốt Vì vậy ngày nay Zigbee được dùng vàorất nhiều ứng dụng trong cuộc sống như: Các hệ chiếu sáng thông minh, HVAC,Công nghiệp, Sensor không dây, bệnh viện
2.2.2 Giao thức Bluetooth
Bluetooth là chuẩn kết nối không dây tầm ngắn, thiết kế cho các kết nối thiết
bị cá nhân hay mạng cục bộ nhỏ, trong phạm vi băng tần từ 2.4 đến 2.485GHz.Bluetooth được thiết kế hoạt động trên 79 tần số đơn lẻ Khi kết nối tự động nó sẽtìm ra tần số tương thích để di chuyển đến thiết bị cần kết nối trong khu vực nhằmđảm bảo sự liên tục Nó được thiết kế kết nối tầm thấp với 3 lớp khác nhau nhằm cóthể cơ động truyền sóng đi xa nhất đến mức có thể Thông thường các loại di độnghiện tại dùng Bluetooth lớp thứ 2, với cường độ 2.5mW, phạm vi chỉ có 35 feet(khoảng 12m) Trong khi lớp thứ nhất lên đến 100 feet (hơn 30m) với cường độ100mW
Các đặc điểm của Bluetooth:
Bluetooth có thể đạt được tốc độ truyền dữ liệu 1Mb/s Bluetooth hỗ trợ tốc độtruyền tải dữ liệu lên đến 720kbps trong phạm vi 10m Khác với kết nối hồng ngoại(IrDA), kết nối Bluetooth là vô hướng và sử dụng dải tần 2.4GHz
- Tiêu thụ năng lượng thấp, cho phép ứng dụng được trong nhiều loại thiết bị,bao gồm cả các thiết bị cầm tay và điện thoại di động
- Giá thành hạ (giá 1 con chip bluetooth đang giảm dần)
- Khoảng cách giao tiếp cho phép
+ Khoảng cách giữa hai thiết bị đầu cuối có thể lên đến 10m ngoài trời và 5mtrong tòa nhà
Trang 37+ Khoảng cách thiết bị đầu cuối và Access point có thể lên tới 100m ngoài trời
- Bluetooth được dùng trong giao thiếp dữ liệu tiếng nói: có 3 kênh để truyềntiếng nói và 7 kênh để truyền dữ liệu trong một mạng cá nhân
- An toàn và bảo mật: được tích hợp với sự xác nhận và mã hóa
- Tính tương thích cao, được nhiều nhà sản xuất phần cứng cũng như phầnmềm hỗ trợ
Các tầng giao thức trong Bluetooth:
Hình 2.4 Các tầng nghi thức của Bluetooth
Bluetooth Radio- Sóng Radio
Tầng Bluetooth radio là tầng thấp nhất được định nghĩa trong đặc tả Bluetooth,
nó định nghĩa những yêu cầu cho bộ phận thu phát sóng hoạt động ở tần số 2.4GHz
Trang 38ISM Băng tần ISM là băng tần không cần đăng kí được dành riêng cho các thiết bịkhông dây trong công nghệ, khoa hoạc, y tế.
Nhờ giao tiếp bằng sóng radio mà dữ liệu Bluetooth có thể xuyên qua các vậtthể rắn và phi kim
Baseband – Dải băng cơ sở
Nằm ở tầng vật lý của Bluetooth, nó quản lý những kênh truyền và liên lết vật
lý tách biệt khỏi những dịch vụ khác như sửa lỗi, chọn bước nhảy và bảo mật TầngBase band protocol nằm trên tầng radio trong tầng giao thức của Bluetooth, baseband protocol được cài đặt như là Link Controller (Kiểm soát liên kết) Nó cùng vớiLink manager (quản lý) thực hiện những công việc ở mức thấp như kết nối, quản lýnăng lượng Tầng Baseband cũng quản lý những kết nối đồng bộ và không đồng bộ,quản lý các gói tin, thực hiện tìm kiếm và yêu cầu kết nối đến các thiết bị Bluetoothkhác
Link Manager Protocol – Quản lý liên kết
Link Manager (LM) thực hiện việc thiết lập kênh truyền, xác nhận hợp lệ cấuhình kênh truyền, nó tìm kiếm những LM khác và giao tiếp với chúng thông quaLink Manager Protocol Để thực hiện được những vai trò của mình, LM dùngnhững dịch vụ do tầng Link Controller bên dưới cung cấp
Host Cotroller Interface (HCI) – Kiểm soát giao diện chủ
HCI cung cấp một giao diện cho phép các tầng bên trên điều khiển BasebandCotroller và Link Manager, đồng thời cho phép truy cập đến trạng thái của phầncứng và các thanh ghi điều khiển, về bản chất, giao diện này cung cấp một phươngthức duy nhất để truy cập đến những khả năng của băng tần cơ sở HCI tồn tại trong
3 phần: Host - Transport layer (lớp chuyển tải) - Host Controller, mỗi phần đóng vaitrò khác nhau trong hệ thống HCI
Logical Link Control And Adaptation Protocol (L2CAP) – Kiểm soát liên kết logic, giao thức điều hợp
L2CAP nằm bên trên giao thức băng tần cơ sở và nằm ở tầng data link.L2CAP cung cấp những dịch vụ hướng kết nối và phi kết nối cho những tầng giao