HTTP là một giao thức được sử dụng chủ yếu để truy cập dữ liệu trên World Wide Web.. HTTP/0.9 : Phiên bản chính thức đầu tiên của HTTP được viết dưới dạng tài liệu đơn giản, dài dưới 700
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH
TIỂU LUẬN MÔN HỌC
INTERNET & GIAO THỨC
ĐỀ TÀI: TÌM HIỂU GIAO THỨC
HTTP/HTTPS
Giảng viên
hướng dẫn
: Th.s NGUYỄN KHÁNH TOÀN
Họ và tên sinh
viên
: NGUYỄN CHÂN TÂM
Trang 2MỤC LỤC
MỤC LỤC 2
DANH MỤC TỪ VIẾT TẮT 3
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ GIAO THỨC HTTP 4
1.1 Giao thức HTTP 4
1.1.1 Khái niệm về giao thức HTTP 4
1.1.2 Lịch sử về giao thức HTTP 4
1.2 Ưu và nhược điểm của giao thức HTTP 5
1.3 Các phiên bản của giao thức HTTP 5
CHƯƠNG 2: ĐỊNH DANH THÔNG ĐIỆP CỦA GIAO THỨC VÀ PHÂN TÍCH Ý NGHĨA CỦA CÁC TRƯỜNG TIN 6
2.1 Định danh thông điệp 6
2.1.1 Thông điệp yêu cầu (Request message) 6
2.1.2 Thông điệp phản hồi (HTTP Response) 8
2.2 Phân tích ý nghĩa của các trường tin 10
2.2.1 Thông điệp yêu cầu (Request message) 10
2.2.2 Thông điệp phản hồi (HTTP Respone) 11
CHƯƠNG 3: PHƯƠNG THỨC HOẠT ĐỘNG CỦA GIAO THỨC HTTP 12
3.1 Phương thức hoạt động của giao thức HTTP 12
3.2 Ứng dụng của giao thức HTTP vào thực tế 13
CHƯƠNG 4: TỔNG QUAN VỀ GIAO THỨC HTTPS 14
4.1 Giới thiệu về giao thức HTTPS 14
4.1.1 Khái niệm về HTTPS 14
4.1.2 Ưu và nhược điểm của HTTPS 14
4.2 Phương Thức hoạt động của HTTPS 15
4.2.1 Phương thức hoạt động của HTTPS 15
4.2.2 Chứng chỉ SSL/TLS 15
4.3 Các ứng dụng của HTTPS 17
CHƯƠNG 5: KẾT LUẬN 17
TÀI LIỆU THAM KHẢO 17
Trang 3DANH MỤC TỪ VIẾT TẮT
1 HTTP: Hypertext Transfer Protocol
2 HTTPS: Hypertext Transfer Protocol Secure
3 TCP/IP: Transmission Control Protocol/Internet Protocol
4 TCP: Transmission Control Protocol
5 TLS: Transport Layer Security
6 SSL: Secure Sockets Layer
7 HTML: HyperText Markup Language
8 XML: Extensible Markup Language
9 JSON: JavaScript Object Notation
10 URL: Uniform Resource Locator
11 API: Application Programming Interface
Trang 4CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ GIAO THỨC HTTP
1.1 Giao thức HTTP
1.1.1 Khái niệm về giao thức HTTP
-Hypertext Transfer Protocol (HTTP) là giao thức truyền tải siêu văn
bản HTTP là một giao thức được sử dụng chủ yếu để truy cập dữ liệu trên World Wide Web HTTP đơn giản chỉ sử dụng một kết nối TCP trên cổng số
80 và dữ liệu được chuyển giao giữa client và server Các thông điệp HTTP được truyền trực tiếp, được đọc và hiểu bởi HTTP server và HTTP client (trình duyệt) Các lệnh từ client đến server được nhúng vào trong một thông điệp yêu cầu; nội dung trả lời cho yêu cầu và các thông tin khác được nhúng trong một thông điệp đáp ứng
-HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP HTTP hoạt động trên nền tảng Internet TCP/IP và được truyền qua kết nối TCP
-HTTP là một giao thức không trạng thái vì mỗi giao dịch được thực hiện riêng biệt mà không có bất kỳ kiến thức nào về các giao dịch trước đó, có nghĩa là khi giao dịch được hoàn thành giữa trình duyệt web và server, kết nối sẽ bị mất
Ví dụ: khi người dùng gõ một địa chỉ Web trên trình duyệt, một yêu cầu
HTTP sẽ được gửi đi tới máy chủ web để ra lệnh và hướng dẫn nó tìm đúng trang Web được yêu cầu và kéo về mở trên trình duyệt Web HTTP là giao thức truyền tải các file từ một máy chủ Web vào một trình duyệt Web để người dùng có thể xem một trang Web đang hiện diện trên Internet
1.1.2 Lịch sử về giao thức HTTP
- Tim Berners-Leelà người khởi xướng cho sự hình thành và phát triển của HTTP vào năm 1989 tại CERN
-HTTP được giới thiệu lần đầu vào những năm 90 Cho đến ngày nay, nó vẫn chiếm một vị trí rất quan trọng trong thế giới Internet và không ngừng
Trang 5được phát triển mở rộng HTTP được xem như là giao thức ứng dụng của
bộ các giao thức nền tảng cho Internet TCP/IP
-Nhờ vào đặc tính mở rộng không giới hạn của nó, ngoài các tài liệu siêu văn bản, HTTP còn được dùng để tìm nạp hình ảnh và video Thậm chí là đăng tải cả nội dung lên server Vì thế, HTTP đóng vai trò quan trọng trong quy trình cập nhật trang web thông qua khả năng nạp dữ liệu cho các tài liệu theo yêu cầu
1.2 Ưu và nhược điểm của giao thức HTTP
Ưu điểm của HTTP:
Đơn giản và dễ sử dụng: Cấu trúc của HTTP rất đơn giản, dễ hiểu và
dễ triển khai, giúp các nhà phát triển web dễ dàng xây dựng và quản lý các ứng dụng web
Phổ biến và được hỗ trợ rộng rãi: HTTP được hầu hết các trình duyệt web và máy chủ web hỗ trợ, đảm bảo tính tương thích cao
Hiệu quả: HTTP được thiết kế để truyền tải dữ liệu một cách hiệu quả, đặc biệt khi truyền tải các tài liệu văn bản
Linh hoạt: HTTP có thể được sử dụng để truyền tải nhiều loại dữ liệu khác nhau, bao gồm văn bản, hình ảnh, video, âm thanh,
Nhược điểm của HTTP:
Không an toàn: HTTP không được mã hóa, khiến dữ liệu truyền tải trên mạng dễ bị lộ và có nguy cơ bị tấn công Điều này đặc biệt quan trọng khi xử lý thông tin nhạy cảm như thông tin cá nhân và thông tin tài chính
Không đảm bảo tính toàn vẹn của dữ liệu: HTTP không cung cấp cơ chế đảm bảo tính toàn vẹn của dữ liệu, có nghĩa là dữ liệu có thể bị thay đổi hoặc bị can thiệp trong quá trình truyền tải
Không xác thực được danh tính của máy chủ: Bạn không thể chắc chắn rằng máy chủ mà bạn đang kết nối là máy chủ đích thực, điều này tạo cơ hội cho các cuộc tấn công giả mạo
Trang 61.3 Các phiên bản của giao thức HTTP
HTTP/0.9 : Phiên bản chính thức đầu tiên của HTTP được viết dưới dạng
tài liệu đơn giản, dài dưới 700 từ và phiên bản này được đặt tên là
HTTP/0.9, chỉ hỗ trợ phương thức GET, cho phép khách hàng chỉ truy xuất tài liệu HTML từ máy chủ, nhưng không hỗ trợ bất kỳ định dạng tệp hoặc tải lên thông tin nào khác
HTTP/1.0: Mang lại nhiều cải tiến và tiêu chuẩn hóa hơn so với HTTP/0.9
Phiên bản này bổ sung các phương thức mới như POST và HEAD, cho phép truyền tải không chỉ HTML mà còn các loại dữ liệu khác
HTTP/1.1: Mang lại nhiều cải tiến về hiệu suất và tính năng so với
HTTP/1.0
HTTP/2: Mang lại nhiều cải tiến đáng kể so với HTTP/1.1 nhằm nâng cao
hiệu suất, tính bảo mật và độ tin cậy của giao thức Các cải tiến này đáp ứng nhu cầu ngày càng cao của các ứng dụng web hiện đại về tốc độ, hiệu
quả và khả năng xử lý dữ liệu lớn.
HTTP/3: Là một bước tiến lớn so với các phiên bản trước đó của giao thức
HTTP HTTP/3.0 cải thiện đáng kể về hiệu suất, độ trễ và độ tin cậy bằng cách sử dụng giao thức QUIC thay cho TCP
Trang 7CHƯƠNG 2: ĐỊNH DANH THÔNG ĐIỆP CỦA CÁC GIAO THỨC VÀ PHÂN TÍCH Ý NGHĨA TRƯỜNG TIN
2.1 Định danh thông điệp
2.1.1 Thông điệp yêu cầu (Request message)
-Thông điệp yêu cầu (HTTP Request) là thông tin được gửi từ máy khách
lên máy chủ, để yêu cầu máy chủ tìm hoặc xử lý một số thông tin, dữ liệu
mà máy khách cần Bản tin yêu cầu có thể là một file text dưới dạng XML hoặc Json mà cả hai đều có thể hiểu được Hiện nay dạng JSON được sử dụng phổ biến
Trang 8-Cấu trúc của HTTP Request bao gồm 3 thành phần chính cần quan tâm:
• Request Method: Điều này cho biết hành động cụ thể mà Request
mong đợi nhận được từ máy chủ trong Response của nó
-Các phương thức HTTP Request Method:
Get là phương thức để máy khách nhận dữ liệu từ máy chủ thông qua đường dẫn URL nằm trên thanh địa chỉ của trình duyệt Máy chủ
sẽ nhận đường dẫn đó và phân tích trả về kết quả cho bạn Nó là một phương thức được sử dụng phổ biến mà không cần có request body
Phương thức Post là phương thức gửi dữ liệu từ máy khách đến máy chủ giúp ta có thể thêm mới dữ liệu hoặc cập nhật dữ liệu đã có vào kho dữ liệu Thông tin cần thêm hoặc chỉnh sửa sẽ được gửi lên thông qua phần request body
Trang 9 Phương thức PUT hoạt động của nó tương tự như phương thức Post nhưng nó chỉ được sử dụng để cập nhật dữ liệu đã có trong kho dữ liệu Khi sử dụng, ta phải thay đổi toàn bộ dữ liệu của một đối tượng
Phương thức PATCH tượng tự như Post và Put, nhưng Patch được sử dụng khi phải cập nhật một phần dữ liệu của đối tượng
Phương thức DELETE giống như tên gọi, khi sử dụng phương thức Delete sẽ xoá các dữ liệu của máy chủ Cũng giống như GET,
phương thức này không cần phải truyền lên phần request body
Phương thức HEAD gần giống với GET, tuy nhiên nó không có
response body Nếu sử dụng phương thức GET tới đường dẫn thì sẽ trả về dữ liệu, còn khi sử dụng HEAD tới đường dẫn nhưng không nhận được dữ liệu Truy vấn HEAD hữu ích trong trường hợp khi chúng ta sử dụng nó để kiểm tra API có hoạt động không do không
có response body nên thời gian phản hồi nhanh hơn so với phương thức Get Ứng dụng của nó là thường được sử dụng để kiếm tra trước khi tải dữ liệu về máy do cứ gọi đến api dowload sẽ download file nên thêm phương thức head vào nó kiểm tra xem api có đang hoạt động tốt không tránh down nhiều hay không như ý muốn
Request URL:
Một URL (Uniform Resource Locator) được sử dụng để xác định duy nhất
một tài nguyên trên Web Một URL có cấu trúc như sau:
protocol://hostname:port/path-and-file-name
Trong một URL có 4 thành phần:
Protocol: giao thức tầng ứng dụng được sử dụng bởi client và server Hostname: tên DNS domain
Port: Cổng TCP để server lắng nghe request từ client
Path-and-file-name: Tên và vị trí của tài nguyên yêu cầu
• Request Header: Điều này bao gồm dữ liệu như loại trình duyệt đang
được sử dụng và dữ liệu mà Request đang tìm kiếm từ máy chủ Nó cũng
có thể bao gồm cookie, hiển thị thông tin được gửi trước đó từ máy chủ xử
lý yêu cầu
Trong thông điệp yêu cầu, có thể có hoặc không các dòng tiêu đề Mỗi dòng gửi một thông tin bổ sung từ client tới server Ví dụ, client có thể yêu cầu dữ liệu phải được gửi theo một định dạng đặc biệt nào đó Mỗi dòng có tên tiêu đề, một dấu hai chấm, một ký tự trống và một giá trị tiêu đề
• Request Body: Đây là thông tin tùy chọn mà máy chủ cần từ Request,
chẳng hạn như biểu mẫu người dùng – đăng nhập tên người dùng / mật khẩu, Response ngắn và tải lên tệp – đang được gửi đến trang web Có thể
có hoặc không Thông thường, nó chứa các bình luận được gửi tới
Trang 102.1.2 Thông điệp phản hồi (HTTP Response)
-Bản tin đáp ứng (HTTP Reponse) là gói tin được gửi bởi máy chủ đến máy khách để phản hồi yêu cầu mà máy khách gửi lên Bản tin đáp ứng chứa những thông tin được yêu cầu bởi máy khách
Các Bản tin đáp ứng thường bao gồm các trường dữ liệu sau:
Một Status-line = Phiên bản HTTP + Mã trạng thái + Trạng
thái
Có thể có hoặc không có các trường header
Một dòng trống để đánh dấu sự kết thúc của các trường header
Tùy chọn một thông điệp
-Mã trạng thái: Thông báo về kết quả khi nhận được yêu cầu và xử lí bên server cho client
-Các kiểu mã trạng thái:
Informational reponses (1xx): Khi nhận được mã như vậy tức là yêu cầu đã được phía máy chủ tiếp nhận và quá trình xử lý yêu cầu đang được tiếp tục xử lí
VD: 100 (Continue), 101 (Switching protocols), …
Successful responses (2xx): Khi nhận được những mã như vậy tức là yêu cầu đã được máy chủ tiếp nhận, hiểu và xử lý thành công
VD: 200 (OK) , 201 (CREATED), 202 (Accepted), 203
(Non-authoritative information), 204 (No content), 205 (Reset content),
206 (Partial content)
Redirection messages (3xx): Mã trạng thái này cho biết máy khách cần có thêm hoạt động để hoàn thành yêu cầu
VD: 301 (Moved permanently), 302 (Moved temporarily), 304 (Not modified), 305 (USE PROXY), …
Trang 11 Client error responses (4xx): Nó nghĩa là yêu cầu chứa cú pháp không chính xác hoặc không được thực hiện
VD: 400 (Bad request), 401 (Not authorized), 403 (Forbidden), 404 (Not found), …
Server error responses (5xx): Các máy chủ gặp lỗi và không thể thực hiện yêu cầu
VD: 500 (Internal server error), 501 (Not implemented), 502 (Bad gateway),503 (Service unavailable),
2.2 Phân tích ý nghĩa của các trường tin
2.2.1 Thông điệp yêu cầu (Request message)
• Request Method:
VD:POST /html/ HTTP/1.1
HTTP Method (Phương thức HTTP) là thành phần thứ nhất (ví dụ
trên là POST), nó có giá trị như POST, GET, PUT Nó cho biết yêu cầu cần được thực hiện trên server đối với một tài nguyên nào đó, cụ thể như các phương thức:
GET cho biết Request chỉ cần lấy dữ liệu (tài nguyên).
POST được sử dụng để cho biết Request là chuyển dữ liệu lên
server (thương HTTP Message trường hợp này có kèm dữ liệu như HTML Form )
PUT ghi đè (thay thế) tài nguyên nào đó bằng dữ liệu trong
Request
DELETE xóa tài nguyên
Trang 12 Địa chỉ URL - là thành phần thứ hai (ví dụ trên là /html/) Địa chỉ tài
nguyên truy vấn, có thể là URL tương đối - tuyệt đối (kể cả cổng, nếu có cổng thì viết cổng sau ký hiệu :)
HTTP Version Thành phần thứ ba cho biết phiên bản HTTP (thường
là HTTP/1.1)
• Request Header:
Host là header chỉ ra host (domain, IP) và cổng của server mà
Request gửi đến Nếu không chỉ rõ port thì mặc định là 80 với http
và 443 với https Ví dụ:
Host: xuanthulab.net
Accept trong Request cho biết kiểu nội dung trả về mà client có thể
hiểu (các kiểu cách nhau bởi , có độ ưu tiên mặc định 1, nếu muốn xác định độ ưu tiên cho kiểu nào thì cho thêm ;q=value) Ví dụ:
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8
User-Agent là header của Request cho phép server xác định được
ứng dụng nào, hệ điều hành gì gửi Request Ví dụ:
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0)
Gecko/20100101 Firefox/12.0
Content-Length cho biết độ dài (byte) của phần body (nếu có đính
kèm trong request) Ví dụ:
Content-Length: 12345
Content-Type trong Request, header này cho server biết kiểu dữ
liệu được đính kèm trong phần body Ví dụ:
Content-Type: application/x-www-form-urlencoded
Cookie header này gửi giá trị cookie lấy được từ truy vấn trước để
server phục hồi phiên làm việc Có thể gửi nhiều cookie cách nhau bởi ;
Cookie: name=value; name2=value2; name3=value3
• Request Body: Đây là thông tin tùy chọn mà máy chủ cần từ Request,
chẳng hạn như biểu mẫu người dùng – đăng nhập tên người dùng / mật khẩu, Response ngắn và tải lên tệp – đang được gửi đến trang web Có thể
có hoặc không Thông thường, nó chứa các bình luận được gửi tới
2.2.2 Thông điệp phản hồi (HTTP Response)
Trang 13Dòng đầu tiên: còn gọi là dòng trạng thái, nó chứa ba mẩu tin gồm
Phiên bản HTTP, ví dụ HTTP/1.1
Mã trả về như 200, 404, 301, 302
Đoạn text ngắn giải thích mã ví dụ OK, Not Found, Moved
Permanently
Đây là một dòng trạng thái: “HTTP/1.1 301 Moved Permanently”
Header của Response: tương tự như header của Request
Date chứa thông tin ngày tháng thông tin (response) được phát sinh Date: Wed, 21 Oct 2015 07:28:00 GMT
Set-Cookie header này chứa cookie của server gửi cho client Client
lưu lại để gửi lại cho server để phục hồi phiên làm việc
Set-Cookie: CookieID=94583405kfds; Max-Age=3600;
Một số giá trị thiết lập như:
Max-Age=number thời gian hết hạn cookie
HttpOnly không cho JS truy cập Cookie
Có những header giống header của Request như: Content-Type, Content-Length
Body của Response: Chứa dữ liệu của Respone (dữ liệu này có kiểu xác
định ở header Content-Type và độ dài Content-Length), không phải mọi Response đều có body
CHƯƠNG 3: PHƯƠNG THỨC HOẠT ĐỘNG CỦA GIAO THỨC HTTP
3.1 Phương thức hoạt động của giao thức HTTP
Trang 14-Hypertext Transfer Protocol hoạt động theo nguyên tắc như sau:
Client bắt đầu bằng việc gửi yêu cầu một trang web (thông qua việc tạo kết nối TCP tới cổng 80 hoặc một cổng khác trên máy chủ)
Trình duyệt sẽ gửi các HTTP Request Message về các đối tượng trong trang tới máy chủ
Máy chủ nhận yêu cầu
Máy chủ gửi lại HTTP Response Message cho Client kèm theo thông điệp (thông điệp này thường chứa thông tin yêu cầu, thông báo lỗi hoặc thông tin khác)
-HTTP sử dụng TCP làm giao thức lớp giao vận nền (thay vì chạy trên UDP) Đầu tiên máy khách HTTP sẽ khởi tạo kết nối TCP với máy chủ Một khi kết nối được thiết lập thì các tiến trình trình duyệt và máy chủ sẽ truy nhập TCP thông qua giao diện socket của nó Giao diện socket phía máy khách là cánh cửa giữa tiến trình máy khách và kết nối TCP, ở bên máy chủ là cánh cửa giữa tiến trình máy chủ và kết nối TCP Máy khách gửi các bản tin yêu cầu HTTP vào giao diện socket và nhận bản tin đáp ứng HTTP cũng từ giao diện socket của nó Tương tự như vậy, máy chủ HTTP nhận bản tin yêu cầu từ socket và gửi bản tin đáp ứng vào giao diện socket của
nó Một khi máy khách gửi bản tin vào giao diện socket của nó thì bản tin
đó đã ra khỏi sự kiểm soát của máy khách và đi vào phạm vi kiểm soát