BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
NGHIÊN CỨU, TÌM HIỂU CÁC GIAO THỨC SỬ DỤNG TRÊN WEBSEVER
BỘ MÔN ĐIỀU KHIỂN HỌC
BÁO CÁO
THỰC TẬP TỐT NGHIỆP
Đề tài:
NGHIÊN CỨU, TÌM HIỂU CÁC GIAO THỨC
SỬ DỤNG TRÊN WEBSEVER
Sinh viên thực hiện: Cao Văn Phúc
Người hướng dẫn : TS. Nguyễn Văn Bình
Hồ Chí Minh – 2021
LỜ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
NHẬN XÉT KẾT QUẢ THỰC TẬP
Họ tên sinh viên thực tập: …………………………………………………
Ngày tháng năm sinh: ……………………………………………………..
Giảng viên hướng dẫn thực tập: …………………………………………...
Sau thời gian hướng dẫn sinh viên …………………………….. thực tập, tơi
có nhận xét sau:
1. Về thái độ, ý thức của sinh viên:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
2. Về đạo đức, tác phong:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
3. Về năng lực chuyên môn:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
4. Kết luận:
Nhận xét: ……………………………………………………………………...
Điểm: ………………………………………………………………………….
………….., Ngày…… tháng…… năm…….
Giảng viên hướng dẫn
TS. Nguyễn Văn Bình
MỤC LỤC
LỜ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
PHỤ LỤC ........................................................................................................ 31
PHỤ LỤC 1: CODE TRÊN NODE MCU ESP8266 ...................................... 31
MỤC LỤC HÌNH ẢNH
Hình 1 Ngun 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
DANH MỤC TỪ VIẾT TẮT
MQTT
:
Message Queuing Telemetry Transport
HTTP
:
HyperText Transfer Protocol
HTTPS
:
HyperText Transfer Protocol Secure
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
LỜ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, sn 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à đã hồ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.
1
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
NỘ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 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
2
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
Báo cáo thực tập tốt nghiệp
GVHD: Nguyễn Văn Bình
như 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 “ 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 Ngun 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
dut 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 “ />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.
3
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
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.
4
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
Báo cáo thực tập tốt nghiệp
GVHD: Nguyễn Văn Bình
1.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 tồ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,…
5
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
1.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).
6
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
CHƯƠ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
7
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
4 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 tồ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.
8
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
2.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 hồ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ũ.
2.2.3. Mơ hình giao thức
Giao thức HTTP hoạt động theo mơ hình Client-Server bằng cách thực
hiện các quá trình request-response giữa các hệ thống máy tính khác nhau
Để dễ hình dung, mỗi khi người dùng sử dụng trình duyệt và truy cập
vào một website, một phiên làm việc HTTP (gọi là Session) sẽ được diễn ra
với Client là máy tính của người dùng và Serer là máy chủ của website. Mặc
định HTTP sẽ được thực hiện thông qua port 80, đây là port chuẩn của giao
thức được định nghĩa bởi tổ chức IANA quy định.
9
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
Hình 3 Giao thức HTTP
Ví dụ khi người dùng truy cập vào địa chỉ: “ />Quá trình của một phiên làm việc HTTP diễn ra như sau:
1. HTTP Client thiết lập một kết nối TCP đến server. Nếu thiết lập thành
công, client và server sẽ truyền nhận dữ liệu với nhau thông qua kết nối
này, kết nối được thiết lập còn gọi là socket interface bao gồm các
thông tin: địa chỉ IP, loại giao thức giao vận (chính là TCP), và port
(mặc định là 80).
2. 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ể:
10
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
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.
Ví dụ: text/plain, text/html
o Accept-Encoding: các kiểu nén được chấp nhận. Ví dụ: gzip,
deflate, xz, exi…
o Connection: tùy chọn điều khiển cho kết nối hiện thời. Ví dụ:
Keep-Alive, Close…
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,
11
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
cá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;
12
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
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 q 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 q nặng nên khơng phù hợp cho các thiết bị này. Một
yêu cầu HTTP 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. Ngồ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 ngun 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 tồ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 tồn, bảo mật hơn.
13
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
Hình 4 Giao thức HTTPS
HTTPS hoạt động tương tự như HTTP, tuy nhiên được bổ sung thêm
chứng chỉ SSL (Secure Sockets Layer – tầng ổ bảo mật) hoặc TLS
(Transport Layer Security – bảo mật tầng truyền tải). Hiện tại, đây là các
tiêu chuẩn bảo mật hàng đầu cho hàng triệu website trên toàn thế giới.
Cả SSL và TLS đều sử dụng hệ thống PKI (Public Key Infrastructure hạ tầng khóa cơng khai) khơng đối xứng. Hệ thống này sử dụng hai “khóa” để
mã hóa thơng tin liên lạc, “khóa cơng khai” (public key) và “khóa riêng”
(private key). Bất cứ thứ gì được mã hóa bằng khóa cơng khai chỉ có thể được
giải mã bởi khóa riêng và ngược lại. Các tiêu chuẩn này đảm bảo các nội
dung sẽ được mã hóa trước khi truyền đi, và giải mã khi nhận. Điều này khiến
hacker dù có chen ngang lấy được thơng tin cũng khơng thể “hiểu” được
thơng tin đó.
2.3.2. So sánh HTTP và HTTPS:
Mặc dù cùng là giao thức truyền tải thông tin trên mạng internet, nhưng
HTTP và HTTPS có những điểm khác nhau cốt lõi khiến cho HTTPS được ưa
chuộng hơn trên toàn thế giới.
Chứng chỉ SSL: Sự khác biệt lớn nhất giữa HTTP và HTTPS là
chứng chỉ SSL. Về cơ bản, HTTPS là một giao thức HTTP với
bảo mật bổ sung. Tuy nhiên, trong thời đại mà mọi thông tin đều
được số hóa, thì giao thức HTTPS lại trở nên cực kỳ cần thiết
cho bảo mật website. Dù bạn sử dụng máy tính cá nhân hay cơng
14
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
cộng, các tiêu chuẩn SSL sẽ luôn đảm bảo liên lạc giữa máy
khách và máy chủ được an tồn, chống bị dịm ngó.
Port trên HTTP và HTTPS: Port là cổng xác định thơng tin trên
máy khách, sau đó phân loại để gửi đến máy chủ. Mỗi Port mang
một số hiệu riêng với chức năng riêng biệt. Giao thức HTTP sử
dụng Port 80, trong khi đó HTTPS sử dụng Port 443 – đây chính
là cổng hỗ trợ mã hóa kết nối từ máy tính client đến server, nhằm
bảo vệ gói dữ liệu đang được truyền đi.
Mức độ bảo mật của HTTP và HTTPS: Khi máy khách truy cập
một website, giao thức HTTPS sẽ hỗ trợ xác thực tính đích danh
của website đó thơng qua việc kiểm tra xác thực bảo mật
(Security Certificate). Các xác thực bảo mật này được cung cấp
và xác minh bởi Certificate Authority (CA) – các tổ chức phát
hành các chứng thực các loại chứng thư số cho người dùng,
doanh nghiệp, máy chủ, mã nguồn, phần mềm. Các tổ chức này
đóng vai trị là bên thứ ba, được cả hai bên tin tưởng để hỗ trợ
quá trình trao đổi thơng tin an tồn. Đối với HTTP, vì dữ liệu
khơng được xác thực bảo mật nên sẽ khơng có gì đảm bảo được
phiên kết nối của bạn có đang bị “nghe lén” hay không, hoặc bạn
đang cung cấp thông tin cho website thật hay một website giả
mạo.
HTTPS chậm hơn HTTP, nhưng không đáng kể: Nhược điểm
duy nhất của HTTPS so với HTTP là sử dụng HTTPS khiến tốc
độ giao tiếp (duyệt web, tải trang đích) giữa Client và Server
chậm hơn HTTP. Tuy nhiên nhờ công nghệ phát triển, sự khác
biệt đã đạt tới giới hạn tiệm cận bằng 0.
Qua phân tích so sánh, có thể thấy rằng giao thức HTTPS vượt trội hơn
hẳn so với HTTP về nhiều mặt, đồng thời cịn làm tăng uy tín doanh nghiệp.
Đó là lý do tất cả các website đều nên sử dụng HTTPS.
2.3.3. Ưu điểm của HTTPS
Trước đây, HTTPS thường được sử dụng cho các website tài chính,
ngân hàng, thương mại điện tử để bảo mật thơng tin thanh tốn online. Tuy
nhiên trong thời điểm hiện tại, HTTPS đã trở thành tiêu chuẩn bảo mật tối
thiểu mà tất cả các website doanh nghiệp cần phải đáp ứng. Vì những lý do
sau đây:
HTTPS bảo mật thông tin người dùng:
15
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
Giao thức HTTPS sử dụng phương thức mã hóa (encryption) để
đảm bảo các thông điệp trao đổi giữa máy khách và máy chủ không bị
kẻ thứ ba (hackers) đọc được.
Nếu truy cập một website không được cài đặt giao thức HTTPS,
người dùng sẽ đối diện với nguy cơ bị tấn công sniffing. Hacker có thể
“chen ngang” vào kết nối giữa máy khách và máy chủ, đánh cắp các dữ
liệu mà người dùng gửi đi (password, thơng tin thẻ tín dụng, văn bản
email,…) và các thơng tin sẵn có từ website. Thậm chí, mọi thao tác
của người dùng trên website đều có thể bị quan sát, ghi lại mà họ không
hề hay biết.
Với giao thức HTTPS, người dùng và máy chủ hoàn toàn có thể
tin tưởng rằng các thơng điệp chuyển giao qua ln trong trạng thái
ngun vẹn, khơng qua bất kì chỉnh sửa, sai lệch nào so với dữ liệu đầu
vào.
Tránh lừa đảo bằng website giả mạo:
Trên thực tế, bất kì server nào cũng có thể giả dạng là server của
bạn để lấy thông tin từ người dùng, lừa đảo dưới hình thức Phishing.
Với giao thức HTTPS, trước khi dữ liệu giữa máy khách và máy chủ
được mã hóa để tiếp tục trao đổi, trình duyệt trên máy khách sẽ yêu cầu
kiểm tra chứng chỉ SSL từ máy chủ, đảm bảo rằng rằng người dùng
đang giao tiếp với đúng đối tượng mà họ muốn. Chứng chỉ SSL/TSL
của HTTPS sẽ giúp xác minh đó là website chính thức của doanh
nghiệp chứ khơng phải là website giả mạo.
Giao thức HTTPS tăng uy tín website đối với người dùng
Một số trình duyệt web phổ biến như Google Chrome, Mozilla
Firefox, Microsoft Edge, hay Apple Safari đều có những cảnh báo
người dùng về những website “không bảo mật” sử dụng HTTP. Động
thái này giúp bảo vệ thông tin của người dùng khi lướt web, bao gồm
thông tin cá nhân, thẻ ngân hàng và dữ liệu nhạy cảm khác.
16
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
Người dùng là linh hồn của một website. Vì vậy, bảo vệ người dùng
chính là bảo vệ website của bạn. Nếu người dùng không tin tưởng,
không an tâm khi sử dụng website, khả năng cao là bạn sẽ mất dần đi
lượng user sẵn có của mình. Sử dụng HTTPS với chứng chỉ SSL/TLS
được xác thực bảo mật là một lời cam kết về uy tín đối với họ.
Làm SEO rất nên sử dụng HTTPS
Kể từ 2014, Google đã thông báo sẽ đẩy xếp hạng tìm kiếm cho các
website sử dụng giao thức HTTPS, nhằm khuyến khích các
website chuyển đổi sang HTTPS. Điều này cũng có nghĩa các website
chưa chuyển đổi sẽ bị giảm lợi thế cạnh tranh so với các website
HTTPS.
2.4. Message Queuing Telemetry Transport
2.4.1. MQTT là gì?
Trong tập giao thức TCP/IP hiện nay có rất nhiều giao thức trên lớp
ứng dụng (Application layer), mỗi giao thức trên lớp ứng dụng đều có một
mục đích sử dụng riêng. Nếu như HTTP là giao thức truyền nhận siêu văn bản
thường dùng trong các ứng dụng web, FTP là giao thức truyền nhận tập tin,…
17
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58
GVHD: Nguyễn Văn Bình
Báo cáo thực tập tốt nghiệp
thì MQTT là một giao thức truyền tin theo tiêu chuẩn OASIS cho Internet of
Things (IoT). MQTT được thiết kế như một phương tiện truyền tải tin nhắn
cực kỳ nhẹ, lý tưởng để kết nối các thiết bị từ xa trong hệ thống IoT.
MQTT viết tắt của Message Queuing Telemetry Transport, là giao
thức ở tầng ứng dụng chạy trên nền TCP thuộc tập giao thức TCP/IP, là giao
thức truyền thông điệp (message) theo mơ hình publish/subscribe, được sử
dụng cho các thiết bị IoT với băng thông thấp, độ tin cậy cao và khả năng
được sử dụng trong mạng lưới không ổn định. Để giao thức này hoạt động
được, cần có một thành phần trung tâm gọi là Broker và các thiết bị/ứng
dụng khách còn được gọi là các Client, các Client sẽ kết nối đến Broker.
Broker và Client sẽ “nói chuyện” với nhau thơng qua các gói tin MQTT được
xây dựng dựa theo chuẩn OASIS. Tiêu chuẩn này còn định nghĩa các mức
quality of service để đảm bảo độ tin cậy khi truyền nhận gói tin, các kịch bản
always connected (ln giữ kết nối) hoặc sometimes connected (thỉnh thoảng
kết nối); khả năng mở rộng để hỗ trợ kết nối số lượng lớn thiết bị…
2.4.2. Lịch sử phát triển
MQTT được tạo ra vào năm 1999 bởi Tiến sĩ Andy Stanford-Clark của
IBM và Arlen Nipper của Arcom (nay là Eurotech). MQTT được tạo ra với
mục đích đem lại tính hiệu quả về chi phí và sự đáng tin cậy nhằm kết nối các
thiết bị giám sát được sử dụng trong ngành dầu khí với máy chủ giám sát từ
xa. Khi gặp thách thức với việc tìm cách đẩy dữ liệu từ các cảm biến đường
ống trong sa mạc sang các hệ thống điều khiển, giám sát và thu thập dữ liệu
(SCADA) bên ngoài, họ đã quyết định sử dụng cấu trúc liên kết
publish/subscribe dựa trên TCP/IP hướng sự kiện để truyền tải dữ liệu và làm
giảm chi phí đầu tư xuống.
18
SVTH: Cao Văn Phúc
Lớp: Tự động hóa K58