Các giao thức mạng protocol là tập hợp các quy tắc được thiết lập nhằm xác định cách để định dạng, truyền và nhận dữ liệu sao cho các thiết bị mạng máy tính - từ server và router tới end
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
BỘ MÔN ĐIỀU KHIỂN HỌC
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Trang 2LỜI CẢM ƠN
Để hoàn thành chuyên đề báo cáo thực tập này trước hết em xin gửi đến quý thầy cô giáo trong khoa Điện – Điện Tử, Bộ Môn Điều Khiển Học trường Đại Học Giao Thông Vận Tài Phân Hiệu Tại TP.HCM lời cảm ơn chân thành
Đặc biệt, em xin gửi đến thầy Nguyễn Văn Bình người đã tận tình hướng dẫn, giúp đỡ em hoàn thành chuyên đề báo cáo thực tập này lời cảm ơn sâu sắc nhất
Trong quá trình thực tập, cũng như là trong quá trình làm bài báo cáo thực tập, khó tránh khỏi sai sót, rất mong các thầy, cô bỏ qua Đồng thời do trình độ
lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thể tránh khỏi những thiếu sót, em rất mong nhận được ý kiến đóng góp thầy, cô để
em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt hơn bài báo cáo tốt nghiệp sắp tới
Em xin chân thành cảm ơn!
Hồ Chí Minh, ngày 20 tháng 10 năm 2021
Trang 3 Họ tên sinh viên thực tập: ………
Sau thời gian hướng dẫn sinh viên ……… thực tập, tôi
………… , Ngày…… tháng…… năm……
Giảng viên hướng dẫn
TS Nguyễn Văn Bình
Trang 4LỜI MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ WEBSEVER 2
1.1 Định nghĩa Websever 2
1.2 Nguyên lý hoạt động của Websever 3
1.3 Các Websever thông dụng 4
1.3.1 Nginx 4
1.3.2 Internet Information Services (IIS) 5
1.3.3 Apache HTTP server 5
1.3.4 Apache Tomcat 6
1.3.5 Lighttpd 6
CHƯƠNG 2: CÁC GIAO THỨC TRUYỀN TẢI DỮ LIỆU WEBSEVER 7
2.1 Tổng quan về TCP/IP 7
2.2 HyperText Transfer Protocol (HTTP) 9
2.2.1 Định nghĩa 9
2.2.2 Lịch sử hình thành 9
2.2.3 Mô hình giao thức 9
2.2.4 Format gói tin 10
2.2.5 Ưu nhược điểm HTTP 12
2.3 Hypertext Transfer Protocol Secure (HTTPS) 13
2.3.1 Định nghĩa HTTPS 13
2.3.2 So sánh HTTP và HTTPS: 14
2.3.3 Ưu điểm của HTTPS 15
2.4 Message Queuing Telemetry Transport 17
2.4.1 MQTT là gì? 17
2.4.2 Lịch sử phát triển 18
2.4.3 Nguyên lý hoạt động của MQTT 20
2.4.3.1 Mô hình Pub/Sub 20
2.4.3.2 Cơ chế hoạt động mô hình Pub/Sub 21
2.4.4 Ưu nhược điểm MQTT 23
CHƯƠNG 3 THỰC NGHIỆM, ĐÁNH GIÁ VÀ KẾT LUẬN 24
3.1 Tổng quan thành phần 24
3.1.1 ESP8266 NodeMCU 24
3.1.2 HyperText Markup Language (HTML) 26
3.2 Điều Khiển Led Qua Webserver 27
3.2.1 Chạy thực nghiệm 27
TÀI LIỆU THAM KHẢO 29
Trang 6MỤC LỤC HÌNH ẢNH
Hình 1 Nguyên lý hoạt động của Websever 3
Hình 2 Cấu trúc TCP/IP 7
Hình 3 Giao thức HTTP 10
Hình 4 Giao thức HTTPS 14
Hình 5 Ứng dụng MQTT vào IoT 20
Hình 6 Mô hình Pub/Sub 21
Hình 7 Kiến trúc thành phần MQTT 23
Hình 8 MQTT Browser Client 25
Hình 9 ESP8266 ở chế độ Access Point 26
Hình 10 Cấu trúc HTML 27
Hình 11 ESP kết nối Wifi in ra địa chỉ IP 28
Hình 12 Điều khiển Led qua Webserver 28
Trang 8LỜI MỞ ĐẦU
Bất cứ mô hình, hệ thống nào, dù quy mô nhỏ hay lớn đều cần phải có các hệ quy tắc để có thể hoạt động nhịp nhàng, suôn sẻ Hệ thống mạng cũng vậy, nhờ có các giao thức quy chuẩn mà mạng internet chúng ta đang sử dụng hàng ngày mới có thể vận hành chính xác và giúp cuộc sống con người dễ dàng hơn mỗi ngày
Các giao thức mạng (protocol) là tập hợp các quy tắc được thiết lập nhằm xác định cách để định dạng, truyền và nhận dữ liệu sao cho các thiết bị mạng máy tính - từ server và router tới endpoint - có thể giao tiếp với nhau, bất kể sự khác biệt về cơ sở hạ tầng, thiết kế hay các tiêu chuẩn cơ bản giữa chúng
Để gửi và nhận thông tin thành công, các thiết bị ở cả hai phía của một trao đổi liên lạc phải chấp nhận và tuân theo các quy ước giao thức Hỗ trợ cho các giao thức mạng có thể được tích hợp vào phần mềm, phần cứng hoặc
cả hai
Đơn giản mà nói thì giao thức mạng như một bộ quy tắc và chúng phải tuân theo những quy tắc bắt buộc đó Nó giống như những tiêu chuẩn và chính sách chính thức và gộp lại, tạo nên những quy tắc đó các giao thức mạng này nhằm thực hiện những hành động, chính sách và giải quyết vấn đề
từ đầu đến cuối giúp quá trình giao tiếp mạng hoặc dữ liệu diễn ra kịp thời
Trong thiết lập kết nối Internet có nhiều giao thức mạng khác nhau Và mỗi giao thức ta có thể có cách thiết lập và sử dụng khác nhau Thông thường những giao thức này xác định bằng đặc điểm của kết nối và cũng rất đa dạng Nhận thức được tầm quan trọng của giao thức mạng trong các hệ thống đặc biệt là IoT, em đã tìm hiểu và đã hoàn thành bài báo cáo về các giao thức mạng đang được sử dụng phổ biến hiện nay
Trang 9NỘI DUNG ĐỀ TÀI
CHƯƠNG 1: TỔNG QUAN VỀ WEBSEVER
1.1 Định nghĩa Websever
Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưu trữ thông tin như một ngân hàng dữ liệu, chứa những website đã được thiết kế cùng với những thông tin liên quan khác (các mã Script, các chương trình, và các file Multimedia)
Web Server có khả năng gửi đến máy khách những trang Web thông qua môi trường Internet (hoặc Intranet) qua giao thức HTTP, giao thức được thiết kế để gửi các file đến trình duyệt Web (Web Browser), và các giao thức khác
Tất cả các Web Server đều có một địa chỉ IP (IP Address) hoặc cũng có thể có một Domain Name Giả sử khi người sử dụng đánh vào thanh Address trên trình duyệt của máy một dòng http://www.abc.com sau đó gõ phím Enter, khi đó người sử dụng đã gửi một yêu cầu đến một Server có Domain Name là www.abc.com Server này sẽ tìm trang Web có tên là index.htm rồi gửi nó đến trình duyệt của người sử dụng
Bất kỳ một máy tính nào cũng có thể trở thành một Web Server bằng việc cài đặt lên nó một chương trình phần mềm Server Software và sau đó kết nối vào Internet
Khi máy tính kết nối đến một Web Server và gửi đến yêu cầu truy cập các thông tin từ một trang Web nào đó, Web Server Software sẽ nhận yêu cầu
và gửi lại những thông tin mà người sử dụng mong muốn
Web Server Software cũng chỉ là một ứng dụng phần mềm Web Server Software được cài đặt, và chạy trên máy tính dùng làm Web Server, nhờ có chương trình này mà người sử dụng có thể truy cập đến các thông tin của trang Web từ một máy tính khác ở trên mạng (Internet, Intranet)
Web Server Software còn có thể được tích hợp với CSDL (Database), hay điều khiển việc kết nối vào CSDL để có thể truy cập và kết xuất thông tin
từ CSDL lên các trang Web và truyền tải chúng đến người dùng
Tất cả các Web Server đều hiểu và chạy được các file *.htm và *.html, tuy nhiên mỗi Web Server lại phục vụ một số kiểu file chuyên biệt chẳng hạn
Trang 10như IIS của Microsoft dành cho *.asp, *.aspx ; Apache dành cho
*.php ; Sun Java System Web Server dành cho *.jsp
Phần lớn các Web server sử dụng cổng 80, nhưng cũng có thể thay đổi
để Webserver có thể cài đặt trên cổng không tiêu chuẩn nếu muốn "dấu" Web server như là một Web server đa host trên một máy tính bằng việc ánh xạ mỗi server cho một cổng khác nhau
1.2 Nguyên lý hoạt động của Websever
Khi ta gõ địa chỉ trang web “http://example.com/index.html” vào trình duyệt web và nhấn Enter, trang web hiển thị ngay trên màn hình Các bước
cơ bản trong tiến trình truyền tải trang web đến màn hình người dùng bằng cơ chế hoạt động của Web server được thể hiện theo mô hình sau:
Hình 1 Nguyên lý hoạt động của Websever
Theo mô hình trên, trình duyệt web thực hiện một kết nối tới Websever, yêu cầu một trang web và nhận lại nó Sau đây, là thứ tự từng bước cơ bản xảy đến đằng sau màn hình của chúng ta:
Bước 1: Người dùng gửi yêu cầu
Người dùng Internet sẽ truy cập một website bất kỳ thông qua một trình duyêt web được cài trên máy tính hoặc thiết bị di động Giả sử ta gõ địa chỉ website với URL “http://example.com/index.html”
Bước 2: Trình duyệt web gửi yêu cầu tới Web server để xử lý
Trình duyệt web tách địa chỉ website làm 3 phần:
Phần giao thức (“http”): Trình duyệt web xác định giao thức là http, nội dung phục vụ là web và được phản hồi từ web server Giao thức http cho phép giao tiếp giữa web client và server
Tên miền máy chủ (“example.com”): là server name phục vụ nội dung web cho client
Trang 11 Tên tệp (“/index.htm”): đây là đường dẫn ảo tệp tin trên máy chủ example.com (index.html là tệp tin mặc định web server phục vụ web client Tùy thuộc vào cấu hình mỗi web server mà tệp tin mặc định sẽ khác nhau, có thể là index.php, index.jsp, …)
Lúc này, trình duyệt web mà ta đang sử dụng (Chrome, Cốc Cốc, Firefox …) sẽ nhận yêu cầu và chuyển đổi từ địa chỉ tên miền sang địa chỉ IP kèm theo tên miền đó Việc truy xuất thông tin IP này sẽ thông qua các máy chủ DNS Sau đó trình duyệt sẽ thông qua giao thức HTTP gửi yêu cầu đến Web server báo là có một người dùng đang cần truy xuất thông tin tại địa chỉ này Và nó yêu cầu máy chủ hãy trả về kết quả cho người dùng
Bước 3: Máy chủ web kiểm tra, trả về kết quả và trình duyệt hiển thị kết quả cho người dùng
Khi nhận được yêu cầu từ trình duyệt, máy chủ web sẽ kiểm tra lại trong hệ thống xem có tài nguyên nào liên quan đến địa chỉ mà người dùng đang cần tìm hay không Trường hợp có nó sẽ trả lại thông tin qua giao thức HTTP đến trình duyệt web để hiển thị cho người dùng Còn nếu không thì nó
sẽ xuất hiện các thông báo lỗi hoặc nội dung không tìm thấy Cứ như vậy quy trình này được lặp đi lặp lại
1.3 Các Websever thông dụng
1.3.1 Nginx
Loại web server được dùng khá là phổ biến hiện nay đó là Nginx, đây
là 1 máy chủ reverse proxy mã nguồn mở cho các giao thức HTTP, HTTPS, SMTP, POP3 và IMAP, cũng như là 1 máy chủ cân bằng tải (load balancer), HTTP cache và web
Dự án Nginx được bắt đầu với việc tập trung vào tính đồng thời cao, hiệu năng cao và sử dụng tài nguyên thấp và được phát triển bởi Igor Sysoev vào nằm 2002, được phân phối ra công chúng lần đầu vào nằm 2004
Trang 121.3.2 Internet Information Services (IIS)
IIS do Microsoft phát triển, sản phẩm này được tích hợp cùng với hệ điều hành Windows Server Trong IIS bao gồm nhiều dịch vụ như: dịch vụ Web Server, dịch vụ FTP Server
Tất cả các tính năng của web server được quản lí độc lập do đó chúng
ta có thể dễ dàng thêm, loại bỏ hoặc thay thế các tính năng của web server IIS đảm bảo an toàn cho máy chủ bằng cách giảm diện tích bề mặt tấn công Giảm diện tích bề mặt tấn công là một trong những cách mạnh mẽ nhất để đảm bảo hệ thống máy chủ Với IIS, chúng ta có thể loại bỏ những tính năng máy chủ không cần thiết để máy chủ đạt diện tích bề mặt nhỏ nhất mà vẫn giữ những tính năng cần thiết Bằng cách loại bỏ một số tính năng máy chủ không
sử dụng, chúng ta có thể làm giảm số lượng bộ nhớ mà máy chủ sử dụng, cải thiện hiệu suất bằng cách làm giảm số lượng đoạn code cần thực hiện Bằng cách lựa chọn tập hợp các tính năng máy chủ chúng ta có thể xây dựng một máy chủ để tối ưu hóa một chức năng trong liên kết ứng dụng, chẵn hạn như
bộ nhớ đệm hoặc cân bằng tải
Chúng ta có thể thêm các tính năng hoặc thay thế bất kì tính năng hiện
có nào bằng cách sử dụng các thành phần máy chủ của bên thứ ba hoặc các thành phần chúng ta tự xây dựng trên phần mở rộng API Cấu trúc từng phần cung cấp lợi ích lâu dài cho cộng động IIS: nó tạo điều kiện phát triển những tính năng mới khi cần thiết cho các nhà phát triển của Microsoft và cả của bên thứ ba
Nhờ được tích hợp ASP.NET IIS có thể sử dụng toàn bộ sức mạnh của ASP.NET Module ASP.NET làm cho máy chủ phát triển nhanh chóng nhờ vào giao diện quen thuộc và các dịch vụ ứng dụng của ASP.NET
IIS hỗ trợ chứng thực người dùng, virtual hosting, CGI, FCGI, ISAPI, php, hỗ trợ Ipv6,
1.3.3 Apache HTTP server
Apache HTTP server hay còn được gọi là Apache là phần mềm web server được sử dụng rộng rãi nhất thế giới Apache được phát triển và duy trì bởi một cộng đồng mã nguồn mở dưới sự bảo trợ của Apache Software Foundation Apache được phát hành với giấy phép Apache License, là một phần mềm tự do, miễn phí
Apache có các tính năng như chứng thực người dùng, virtual hosting,
hỗ trợ CGI, FCGI, SCGI, WCGI, SSI, ISAPI, HTTPS, Ipv6,…
Trang 131.3.4 Apache Tomcat
Apache Tomcat là một Java Servlet được phát triển bởi Apache Software Foundation Tomcat thi hành các ứng dụng Java Servlet và JavaServer Pages (JSP) Tomcat cung cấp một máy chủ HTTP cho ngôn ngữ Java thuần túy Apache Tomcat là một phần mềm mã nguồn mở để chạy các ứng dụng web có nền tảng là ngôn ngữ Java Tomcat được hỗ trợ và tăng cường bởi một nhóm tình nguyện viên từ cộng đồng mã nguồn mở của Java
Apache Tomcat rất ổn định và có tất cả các tính năng của một ứng dụng web thương mại nhưng đi kèm theo giấy phép mã nguồn mở của Apache Tomcat cũng cung cấp một số chức năng bổ sung như tomcat manager application, speciallized realm imlementation và tomcat valves Các phiên bản của apache tomcat trùng với phiên bản và đặc điểm kỹ thuật của servlet java hoặc java servlet API Tomcat 5.5X hỗ trợ Servlet API 2.3, tomcat 6.0X
hỗ trợ servlet API 2.4 và tomcat 7.0 hỗ trợ servlet API 3.0 Ngoài Servlet versions API, phiên bản tomcat hỗ trợ phiên bản JSP API tương ứng
Apache Tomcat có các tính năng như chứng thực người dùng, virtual hosting, CGI, Java Servlet, SSI, hỗ trợ Ipv6, …
Apache Tomcat hỗ trợ các hệ điều hành như windows, linux, OS, BSD, solaris,
1.3.5 Lighttpd
Lighttpd là một phần mềm mã nguồn mở, an toàn và linh hoạt, đặc biê ̣t miễn phí và được phân phối theo giấy phép BSD Lighttpd được viết bởi Jan Kneschke Lighttpd chiếm ít tài nguyên, memory thấp, CPU nhỏ Lighttpd được phát triển bằng ngôn ngữ C chạy trên hệ điều hành Linux, Windows, Mac OS,
Lighttpd hỗ trợ FastCGI, SCGI, CGI cho phép nó chạy được các ứng dụng web được viết bằng bất cứ ngôn ngữ nào Lighttpd còn có các tính năng như chứng thực, hỗ trợ HTTPS, virtual hosting, hỗ trợ Ipv6, Lighttpd không
hỗ trợ ISAPI (Internet Service Application Programming Interface)
Trang 14CHƯƠNG 2: CÁC GIAO THỨC TRUYỀN TẢI DỮ LIỆU WEBSEVER
2.1 Tổng quan về TCP/IP
Bộ giao thức TCP/IP (Internet Protocol Suite) là bộ giao thức mà Internet và các mạng máy tính đang sử dụng và chạy trên đó Nó gồm 2 giao thức chính là TCP (Transmission Control Protocol - Giao thức điều khiển giao vận) và IP (Internet Protocol - Giao thức liên mạng)
Bộ giao thức TCP/IP được coi là một tập hợp các tầng Mỗi tầng giải quyết một tập các vấn đề liên quan đến việc truyền tải dữ liệu, và cung cấp cho các giao thức tầng cấp trên một dịch vụ được định nghĩa rõ ràng dựa trên việc sử dụng các dịch vụ của các tầng thấp hơn Hay nói cách khác, các tầng trên gần với người dùng hơn và làm việc với dữ liệu trừu tượng hơn, chúng dựa vào các tầng cấp dưới để biến đổi dữ liệu thành các dạng mà cuối cùng có thể truyền đi một cách vật lý
Hình 2 Cấu trúc TCP/IP
Trang 154 tầng của TCP/IP:
Tầng 4 Application: Tầng Application hay còn gọi là tầng ứng dụng Tầng ứng dụng đảm nhận vai trò giao tiếp dữ liệu giữa 2 máy khác nhau thông qua các dịch vụ mạng khác nhau (duyệt web, chay hay các giao thức trao đổi dữ liệu SMTP, SSH, FTP…) Dữ liệu khi đến được tầng 4 sẽ được định dạng để kết nối theo kiểu Byte nối Byte Các thông tin định tuyến tại đây sẽ giúp xác định đường đi đúng của một gói tin
Tầng 3 Transport: Tầng dữ liệu hoạt động thông qua hai giao thức chính là TCP (Transmisson Control Protocol) và UDP (User Datagram Protocol) TCP sẽ đảm bảo chất lượng truyền gửi gói tin, tuy nhiên lại mất thời gian khá lâu để thực hiện các thủ tục kiếm soát dữ liệu Ngược lại, UDP lại cho tốc độ truyền tải nhanh nhưng lại không đảm bảo được chất lượng dữ liệu Ở tầng này, TCP và UDP sẽ hỗ trợ nhau phân luồng dữ liệu
Tầng 2 Internet: Tầng Internet đảm nhận việc truyền tải dữ liệu một cách hợp lý Các giao thức của tầng này bao gồm IP (Internet Protocol), ICMP (Internet Control Message Protocol), IGMP (Internet Group Message Protocol)
Tầng 1 Physical: Tầng vật lý (còn được gọi là tầng liên kết dữ liệu) là tầng thấp nhất trong mô hình TCP/IP Tầng này chịu trách nhiệm truyền dữ liệu giữa hai thiết bị trong cùng một mạng Tại đây, các gói dữ liệu được đóng vào khung (gọi là Frame) và được định tuyến đi đến đích đã được chỉ định ban đầu
Những giao thức được sử dụng ở mỗi lớp:
- Với Application Layer, FTP truyền các File ASCII hoặc nhị phân theo
2 chiều HTTP truyền nội dung giữa Server và Client, SMTP phân phối thư điện tử, DNS hỗ trợ truy nhập Internet,
- Transport Layer: UDP tăng tốc độ truyền tải, TCP đảm bảo truyền dữ liệu một cách an toàn,
- Lớp Internet: ICMP sẽ thông báo lỗi nếu truyền dữ liệu bị hỏng, IP sẽ gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích,
- Link Layer sử dụng Wi-Fi, Ethernet, Token Ring, Fiber Distributed Data Interface ( FDDI)
Có thể thấy, để đạt được mục đích của mình thì giao thức ở Layer cao hơn
sẽ dùng giao thức ở Layer thấp hơn
Trang 162.2 HyperText Transfer Protocol (HTTP)
2.2.1 Định nghĩa
HTTP (Hypertext Transfer Protocol) là giao thức truyền tải siêu văn bản Giao thức này nằm trong tầng Application Layer, được sử dụng để truyền nội dung trang Web từ Web Server đến trình duyệt Web ở Client Là giao thức Client/Server dùng cho Internet - World Wide Web, HTTP thuộc tầng ứng dụng của bộ giao thức TCP/IP (Các giao thức nền tảng cho Internet)
Cơ chế hoạt động chính của HTTP là Request-Response: Web Client sẽ gửi Request đến Web Server, Web Server xử lý và trả về Response cho Web Client
2.2.2 Lịch sử hình thành
Phiên bản hoàn chỉnh đầu tiên của HTTP là HTTP 0.9 (Ra đời năm 1991), tiếp theo là HTTP 1.0 (Giới thiệu chính thức năm 1996), HTTP 1.1 (1997) và mới đây nhất là HTTP 2.0 Các phiên bản sau ra đời nhằm thay thế phiên bản trước, kế thừa những chức năng cốt lõi của phiên bản trước nhưng có nhiều cải tiến và bổ sung Hiện nay thì HTTP 2.0 chưa được dùng phổ biến do còn khá mới và do các doanh nghiệp Web cũng phần nào ngại chuyển đổi Do vậy, HTTP 1.1 vẫn là giao thức HTTP phổ biến nhất HTTP 1.0 vẫn còn được sử dụng nhiều trong hệ thống Proxy và một số ứng dụng cũ
Trang 172 Sau khi kết nối thành công, client gửi một HTTP request đến server thông qua socket interface vừa được thiết lập Trong gói tin request sẽ
chứa đường dẫn yêu cầu (path name) là /category/internet-of-thing
3 Server sẽ nhận và xử lý request từ client thông qua socket, sau đó đóng gói dữ liệu tương ứng và gửi một HTTP response về cho client Dữ liệu trả về sẽ là một file HTML chứa các loại dữ liệu khác nhau như văn bản, hình ảnh,…
4 Server đóng kết nối TCP
5 Client nhận được dữ liệu phản hồi từ server và đóng kết nối TCP
2.2.4 Format gói tin
Trong suốt phiên làm việc HTTP như ở trên, có hai loại gói tin chính được trao đổi là gói tin yêu cầu gửi từ client đến server gọi là “Request message” và gói tin phản hồi gửi từ server đến client gọi là “Response message” Hai loại gói tin này được giao thức HTTP định nghĩa rất cụ thể:
Trang 18 HTTP request message
Gồm 3 phần chính là: Request Line, Header và Body
Request Line là dòng đầu tiên của gói HTTP Request, bao gồm 3 trường: phương thức (method), đường dẫn (path – có nhiều bài viết gọi
là URL hoặc URI cho trường này) và phiên phản giao thức (HTTP version)
o Phương thức (method) có thể là: GET, POST, HEAD, PUT và DELETE Hai phương thức phổ biến nhất là GET và POST, trong ví dụ trên là phương thức GET thường dùng để yêu cầu tài nguyên cung cấp trong trường URL
o Đường dẫn (path) dùng để định danh nguồn tài nguyên mà client yêu cầu, bắt buộc phải có ít nhất là dấu “/”
o Phiên bản giao thức (HTTP version): là phiên bản HTTP client đang sử dụng (thường là HTTP/1.0 hoặc HTTP/1.1)
Request Headers: các dòng này là không bắt buộc, viết ở định dạng
“Name:Value” cho phép client gửi thêm các thông tin bổ sung về thông điệp HTTP request và thông tin về chính client Một số header thông dụng như:
o Accept: loại nội dung có thể nhận được từ thông điệp response
o Cookie: thông tin HTTP Cookie từ server
Request Body: là dữ liệu gửi từ client đến server trong gói tin HTTP request Đa số các gói tin gửi theo phương thức GET sẽ có Body trống,
Trang 19các phương thức như POST hay PUT thường dùng để gửi dữ liệu nên
sẽ có bao gồm dữ liệu trong trường Body
HTTP response message
Định dạng gói tin HTTP response cũng gồm 3 phần chính là: Status line, Header và Body
Dòng Status line gồm 3 trường là phiên bản giao thức (HTTP version),
mã trạng thái (Status code) và mô tả trạng thái (Status text):
o Phiên bản giao thức (HTTP version): phiên bản của giao thức HTTP mà server hỗ trợ, thường là HTTP/1.0 hoặc HTTP/1.1
o Mã trạng thái (Status code): mô tả trạng thái kết nối dưới dạng
số, mỗi trạng thái sẽ được biểu thị bởi một số nguyên Ví dụ:
200, 404, 302
o Mô tả trạng thái (Status text): mô tả trạng thái kết nối dưới dạng văn bản một cách ngắn gọn, giúp người dùng dễ hiểu hơn so với
mã trạng thái Ví du: 200 OK, 404 Not Found, 403 Forbiden,
Các dòng Response Header của gói tin response có chức năng tương tự như gói tin request, giúp server có thể truyền thêm các thông tin bổ sung đến client dưới dạng các cặp “Name:Value”
Phần Body là nơi đóng gói dữ liệu để trả về cho client, thông thường trong duyệt web thì dữ liệu trả về sẽ ở dưới dạng một trang HTML để trình duyệt có thể thông dịch được và hiển thị ra cho người dùng
2.2.5 Ưu nhược điểm 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;
Trang 20 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 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ộ
2.3 Hypertext Transfer Protocol Secure (HTTPS)
2.3.1 Định nghĩa HTTPS
HTTPS (Hypertext Transfer Protocol Secure) là giao thức truyền tải siêu văn bản an toàn Thực chất, đây chính là giao thức HTTP nhưng tích hợp thêm Chứng chỉ bảo mật SSL nhằm mã hóa các thông điệp giao tiếp để tăng tính bảo mật Có thể hiểu, HTTPS là phiên bản HTTP an toàn, bảo mật hơn