Tải bản đầy đủ (.docx) (41 trang)

Tiểu luận cuối kì môn internet và giao thức (2)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.02 MB, 41 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA VIỄN THƠNG I
--------------------------------------

TIỂU LUẬN HỌC PHẦN
INTERNET VÀ GIAO THỨC
ĐỀ TÀI
TÌM HIỂU VỂ GIAO THỨC HTTP
Giảng viên: PGS.TS. NGUYỄN TIẾN BAN
Nhóm tiểu luận: 07
Sinh viên:

ĐỖ VĂN VIỆT – B18DCVT437
HỒ PHI TUÂN – B18DCVT373
PHẠM NGỌC BÌNH – B18DCVT037
CAO XUÂN BÁCH – B18DCVT029

HÀ NỘI – 2021


MỤC LỤC


DANH MỤC HÌNH VẼ


THUẬT NGỮ VIẾT TẮT

URL

Giao thức truyền tin siêu văn


bản
Giao thức truyền tin siêu văn
Hypertext Transper Protocol Secure
bản bảo mật
Transmission Control Protocol /
Bộ giao thức Internet
Internet Protocol
Uniform Resource Locator
Định vị tài nguyên

DNS

Domain Name System

Hệ thống tiên miền

SSL

Secure Sockets Layer

Lớp bảo vệ các socket

TLS

Transport Layer Secure

Bảo vệ lớp giao vận

URI


Uniform Resource Identifier

Định dạng tài nguyên

RTT

Round Trip Time

Thời gian một vòng truyền tin

TTL

Time to Live

Thời gian tồn tại

MITM

Man in the middle attack

Tấn công xen giữa

HTTP
HTTPS
TCP/IP

Hypertext Transper Protocol


MỞ ĐẦU

Hiện nay, mạng Internet đã là một vấn đề bùng nổ toàn cầu. Việc xuất hiện mạng
Internet đã giúp ích rất nhiều cho đời sống con người. Có nhiều giao thức mạng
được sử dụng trong Internet tùy vào mục đích khác nhau và độ tiện dụng của nó.
Trong đó phải kể đến giao thức HTTP – Giao thức truyền tin siêu văn bản. HTTP
được sử dụng trong các truy nhập Web.
Bài Tiểu luận này sẽ trình bày các nội dung như sau:
Chương 1: Nêu các khái niệm về HTTP, cũng như một số đặc điểm của giao thức
này.
Chương 2: Giới thiệu về các loại kết nối HTTP được sử dụng.
Chương 3: Trình bày nguyên lý hoạt động khi truyền tin
Chương 4: Giới thiệu về cấu trúc bản tin HTTP và làm rõ các thành phần.
Chương 5: Trình bày khái niệm về Cookie cũng như các lợi ích của nó.
Chương 6: Khái niệm lưu đệm Web (Web-Cache) và tầm quan trọng của nó.
Chương 7: Trình bày các vấn đề bảo mật trong HTTP và phiên bản giao thức
HTTPS
Sự mã hóa thơng tin cho phép chúng ta ký hiệu hóa các thông tin hay sử dụng bộ
ký hiệu đã quy ước để biểu diễn bản tin ở dạng phù hợp. Chính nhờ mã hóa, chúng
ta có thể nhìn thấy hay hiển thị được thơng tin có bản chất là các khái niệm (thông
tin là hiểu biết của con người). Đối với một hệ thống truyền tin, việc mã hóa sẽ cho
phép tăng tính hữu hiệu và độ tin cậy của hệ thống truyền tin, nghĩa là tăng tốc độ
truyền tin và khả năng chống nhiễu của hệ thống.
Trong nội dung tiểu luận này trình bày cơ sở lý thuyết và phương pháp xây dựng
mã hiệu tối ưu, mã hiệu chống nhiễu về một số vấn đề như Điều kiện phân tách của
mã hiệu, Giới thiệu về mã hệ thống và mã có dấu phân tách.
Bên cạnh nội dung lý thuyết liên quan tới mã hiệu được trình bày ở Chương I, bài
tiểu luận còn đề cập đến các lớp trong lớp quang, nằm trong nội dung điều khiển và
quản lý mạng quang sẽ được trình bày trong Chương II.

5



6


CHƯƠNG 1:
TỔNG QUAN VỀ GIAO THỨC HTTP
1.1.

Khái niệm giao thức HTTP
HTTP là tên viết tắt của từ Hyper Text Transfer Protocol: Giao thức truyền dẫn
siêu văn bản ra đời vào năm 1990.
Là giao thức truyền tải siêu văn bản nằm ở tầng ứng dụng (Application layer),
cung cấp các giao thức trực tiếp với người dùng HTTP, SMTP, POP, DHCP,FTP)
của tập giao thức TCP/IP, sử dụng để truyền nhận dữ liệu giữa các hệ thống phân
tán thông qua internet.
HTTP được dùng trong www (world wide web) với mục đích tạo nên nền tảng kết
nối giữa client và server bằng cách thực hiện các q trình Request-Response giữa
các hệ thống máy tính khác nhau. Quá trình giao tiếp sẽ dựa trên các message (bản
tin) độc lập.
Giao thức HTTP hoạt động theo mô hình Máy khách – Máy chủ (Client-Server):


Client: Trình duyệt yêu cầu (request), nhận, hiện thị các đối tượng Web, sử

dụng TCP port 80. Đại diện cho bất kỳ loại thiết bị hoặc chương trình nào,
có thể là PC, smartphone…
 Server: Gửi các đối tượng để đáp ứng (response) lại yêu cầu của client.
Được dùng để chỉ những máy tính trên đám mây.

Hình 1.1. Mơ hình gửi bản tin request-response giữa client và server


7


HTTP là một giao thức cho phép trao đổi và sử dụng các nguồn tài nguyên khác
nhau. Trang Web chứa các đối tượng đối tượng có thể là file HTML, hình ảnh
JPEG, ứng dụng Java, file audio... (chẳng hạn như HTML doc: một doc hoàn chỉnh
sẽ được tạo nên từ nhiều doc con bao gồm văn bản, layout, media, video, script…)
mỗi đối tượng được xác định bằng địa chỉ URL. Trong 1 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 ngun u cầu.

Hình 1.2. Ví dụ về địa chỉ URL

1.2. HTTPS là gì?
Khi tìm hiểu về HTTP, ta sẽ có thể bắt gặp thuật ngữ HTTPS. Vậy HTTPS là gì?
HTTPS là phiên bản an tồn hơn của HTTP. Nó là tên viết tắt của cụm từ
Hypertext Transfer Protocol Secure, nghĩa là giao thức truyền tải siêu văn bản
bảo mật. HTTPS hoạt động không khác gì HTTP ngồi việc bổ sung thêm giao thức
SSL(Secure Sockets Layer) và TLS(Transport Layer Secure) nhằm mục đích ngăn
chặn mọi sự xâm nhập từ bên ngoài. Khi một kết nối giữa máy chủ và máy khách
hoạt động, HTTPS sẽ tiến hành xác minh danh tính và nhanh chóng mã hóa các
thơng tin trao đổi, tránh trường hợp hacker xâm nhập đánh cắp dữ liệu.


1.3. Đặc điểm giao thức HTTP
HTTP có ba đặc điểm nổi bật mà người sử dụng cần quan tâm:
HTTP có thiết kế đơn giản:
Đây cũng là đặc điểm nổi bật nhất của giao thức HTTP. Giao thức HTTP là một
giao thức có thể dễ dàng hiểu và sử dụng. Mục đích xuất hiện của HTTP là tạo ra
một cơng cụ thật thân thiện, có thể được sử dụng dễ dàng bởi mọi đối tượng. Các
HTTP message đều có cấu tạo rất đơn giản để những người mới sử dụng cũng có
thể đọc hiểu được.
8


HTTP có khả năng mở rộng:
HTTP sở hữu tính linh hoạt rất cao. Nó khơng có bất kỳ một giới hạn nào về sự
nâng cấp và mở rộng. Thậm chí, chỉ cần bằng một thỏa thuận thống nhất giữa client
và server là một tính năng mới của HTTP đã được hình thành.
HTTP là stateless (khơng có trạng thái)
Server và Client biết về nhau chỉ trong một yêu cầu hiện tại. Sau đó, cả hai chúng
nó quên tất cả về nhau. Bởi mọi phản hồi của HTTP là độc lập nên người dùng
không thể tạo sự liên kết thông tin giữa các phản hồi được. Điều này có thể sẽ trở
thành một nhược điểm đối với những trường hợp người dùng cần có các tương tác
mạch lạc và bổ trợ cho nhau, ví dụ như shopping cart trên các trang thương mại
điện tử.
Để khắc phục vấn đề này, HTTP cho phép mở rộng tự do các header. Trong đó,
người dùng có thể tự tạo cho mình session trên mỗi request nhằm mục đích chia sẻ
các ngữ cảnh hoặc trạng thái giữa các request với nhau. Sở dĩ trường hợp này có thể
thực hiện được vì bản thân HTTP là stateless.

1.4. Giao thức HTTP trong mơ hình TCP/IP


Hình 1.3. HTTP trong tầng ứng dụng của tập giao thức TCP/IP

Bộ giao thức TCP/IP là một bộ các giao thức truyền thông cài đặt chồng giao
thức mà Internet và hầu hết các mạng máy tính thương mại đang chạy trên đó. Bộ
9


giao thức này được đặt tên theo hai giao thức chính của nó là TCP (Transmission
Control Protocol - Giao thức điều khiển truyền vận) và IP (Internet Protocol - Giao
thức Internet).


Network Access Layer xác định chi tiết về về cách thức dữ liệu được gửi qua

mạng, bởi các thiết bị phần cứng trực tiếp giao tiếp với môi trường mạng,
chẳng hạn như cáp đồng trục, cáp quang hay dây đồng xoắn đôi. Các giao
thức bao gồm trong Network Access Layer là Ethernet, Token Ring, FDDI,
X.25, Frame Relay.
 Internet Layer đóng gói dữ liệu vào các gói dữ liệu được biết đến dưới dạng
các gói tin thơng giao thức Internet Protocol, chứa địa chỉ nguồn và đích (địa
chỉ logic hoặc địa chỉ IP) được sử dụng để chuyển tiếp các gói tin giữa các
máy chủ và qua các mạng.


Transport Layer là cho phép các thiết bị trên máy chủ nguồn và đích đến trao
đổi dữ liệu. Transport Layer sẽ xác định mức độ service và trạng thái của kết
nối được sử dụng khi vận chuyển dữ liệu.Trong đó có giao thức chính trong
lớp Transport là TCP (Transmission Control Protocol) . Sử dụng TCP, các
ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau,
mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm

bảo chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự.



Các thực thể của lớp Application cung cấp các ứng dụng cho phép người
dùng trao đổi dữ liệu ứng dụng qua mạng. Một số ứng dụng thường gặp của
chồng giao thức TCP/IP: FTP (File Transfer Protocol), DNS.

1.5. Các lỗi thường gặp khi duyệt giao thức HTTP
Trong quá trình dử sụng Web cũng như giao thức HTTP, người sử dụng có thể
gặp một số lỗi cơ bản sau đây:

10


HTTP 404 Not Found

Hình 1.4. Ví dụ về HTTP 404

Lỗi này xảy ra khá phổ biến đối với ngưới sử dụng trong q trình duyệt Web.
Khi xảy ra lỗi, có thể nhận được một số phản hồi khác nhau như: Page not found,
The requested URL was not found, …
Nguyên nhân xảy ra lỗi này là vì địa chỉ trang web mà bạn truy cập khơng được
tìm thấy trên máy chủ. Có thể vấn đề nằm ở tên miền bị lỗi hoặc địa chỉ web bạn
soạn thảo bị sai chính tả.
Để khắc phục tình trạng này, trước tiên bạn hãy reload lại trang web đó. Nếu vẫn
lỗi, hay kiểm tra lại lỗi text URL. Khi đã chắc chắn rằng URL bạn điền hồn tồn
đúng, thử xóa bớt các phân trang đi.
Ví dụ có một địa chỉ là: />Nếu bạn hãy xóa phần 1/ đi, đó gọi là đi lùi mức địa chỉ của URL. Tương tự, nếu
bạn xóa thêm box3/ nữa nghĩa là bạn đã lùi 2 mức địa chỉ URL. Hãy xóa bớt các

mức địa chỉ đi cho đến khi một trang web khơng bị lỗi hiện ra.
Nếu đã xóa hết các mức rồi mà vẫn khơng có gì hiện ra thì bạn hãy truy cập thử
vào máy chủ. Trong trường hợp kia thì sẽ là . Bằng cách điền địa chỉ
trang web bị lỗi 404 vào thanh tìm kiếm, bạn sẽ biết được lý do tại sao nó xảy ra lỗi.

11


HTTP 500 Internet Server Error

Hình 1.5. Ví dụ về HTTP 500

Tương tự như lỗi 404, lỗi 500 cũng làm gián đoạn quá trình truy cập web của bạn.
Tuy nhiên, 500 xảy ra là do phía bên máy chủ gặp trục trặc, không phải do kết nối
hay đường truyền của bạn. Lỗi này thường xảy ra trong thời gian ngắn, vì thế bạn
có thể thử reload lại trang cho đến khi hết lỗi.
Nếu reload rồi mà vẫn khơng được thì bạn chỉ còn cách liên lạc với người quản trị
trang web để hỏi về cách khắc phục.
HTTP 403 Forbidden

Hình 1.6. Ví dụ về HTTP 403
12


Lỗi này thường xảy ra khi URL bị sai. Bạn nên kiểm tra lại kỹ chính tả trong
URL. Nếu bạn chắc chắn URL là đúng thì nó có thể do nhầm lẫn của máy chủ.
Trong trường hợp này bạn buộc phải liên hệ với quản trị viên.
Khi máy chủ đặt ra các giới hạn truy cập vào website con mà bạn lại không nằm
trong trường hợp được phép truy cập thì tất nhiên cũng sẽ hiện ra lỗi HTTP 403
Forbidden. Riêng trường hợp này khơng có cách nào có thể khắc phục được cho đến

khi truy cập của bạn được cấp phép.

13


CHƯƠNG 2:
KẾT NỐI HTTP
Dựa trên ứng dụng Internet, truyền thông máy khách và máy chủ có thể kéo dài
trong một khoảng thời gian, với việc máy khách tạo ra một loạt các yêu cầu và máy
chủ có nhiệm vụ đáp ứng lại các yêu cầu đó. Các yêu cầu này được tùy chọn đề có
thể thực hiện đi thực hiện lại một cách theo chu kì hoặc khơng liên tục. Đối với
tương tác máy khác – máy chủ được thực hiện trên kết nối TCP, nhà phát triển ứng
dụng cần phải đưa ra quyết định quan trọng về việc sử dụng một trong hai kết nối:


Kết nối liên tục (Non-Persistent Connection): Mỗi cặp <yêu cầu / đáp ứng> được

gửi trên một kết nối TCP riêng.
 Kết nối không liên tục (Persistent Connection): Tất cả các cặp <yêu cầu / đáp ứng>
được gửi trên cùng một kết nối TCP.
Ở chế độ mặc định HTTP sử dụng kết nối liên tục, nhưng máy khách và và máy
chủ HTTP có thể được cấu hình để sử dụng kết nối khơng liên tục. Phần tiếp theo sẽ
trình bày rõ hơn về hai loại kết nối này.

2.1. Kết nối khơng liên tục
Q trình truyền một trang Web từ máy chủ tới khách hàng trong trường hợp sử
dụng kết nối không liên tục được mô tả như sau. Giả sử trang Web này gồm một tệp
HTML cơ sở và 10 hình ảnh JPEG, tổng cộng có 11 đối tượng trên cùng một máy
chú.
URL cho tệp HTML cơ sở ví dụ như:

/>Q trình hoạt động kết nối xảy ra như sau:
1) Client HTTP khởi tạo kết nối TCP tới server HTTP tại www.abcd.edu trên cổng 80,
cổng mặc định của HTTP.
2) Server HTTP tại trạm chủ www.abcd.edu chờ kết nối TCP ở cổng 80. “Chấp nhận”
kết nối và báo cho client. Lúc này sẽ có một socket phía máy khác và một socket
phía máy chủ.
3) Client HTTP gửi một bản tin yêu cầu HTTP (chứa URL) tới server thông qua socket
kết nối TCP. Bản tin này cho biết client muốn đối tượng /someObject/home.index từ
trạm chủ.

14


4) Server HTTP nhận bản tin yêu cầu thông qua socket của nó, lấy đối tượng

/someObject/home.index, đóng gói đối tượng vào một bản tin đáp ứng HTTP và gửi
bản tin đáp ứng này vào socket.
5) Server HTTP báo cho TCP đóng kết nối TCP (Nhưng kết nối TCP chỉ thực sự được
đóng cho tới khi chắc chắn rằng client HTTP đã nhận được nguyên vẹn bản tin đáp
ứng)
6) Client HTTP nhận bản tin đáp ứng. Kết nối TCP kết thúc. Bản tin đáp ứng nhận
được chứa file html. Client hiển thị html ,phân tích cú pháp file html và tìm tham
chiếu tới 10 đối tượng JPEG.
7) Với mỗi tham chiếu đối tượng JPEG, lặp lại 6 bước bên trên.
Các bước ở trên minh hoạ việc sử dụng kết nối không liên tục trong đó mỗi kết nối
TCP sẽ kết thúc ngay sau khi client HTTP nhận được đối tượng đã yêu cầu tương
ứng từ server HTTP – kết nối này không liên tục cho những đối tượng khác. Mỗi
kết nối TCP truyền tải chính xác một bản tin yêu cầu và một bản tin đáp ứng tương
ứng. Vì vậy, đối với ví dụ trên, việc tham chiều tới tồn bộ đối tượng sẽ có 11 kết
nối TCP được tạo ra.

Thời gian đáp ứng
Với ví dụ như trên, chúng ta thử xem xét đến khoảng thời gian đáp ứng, tức là
khoảng thời gian bắt đầu từ thời điểm client yêu cầu file HTML cơ sở cho tới khi nó
nhận được tồn bộ tệp yêu cầu. Định nghĩa RTT (Round Trip Time) là thời gian cho
một gói tin đi từ client tới server và phản hồi lại cho client. RTT gồm có trễ lan
truyền gói tin, trễ hàng đợi ở các bộ định tuyến, chuyển mạch trung gian và trễ xử lý
gói tin.

Hình 2.7. Ví dụ về q trình truyền tin giao thức HTTP
15


Như vậy, thời gian đáp ứng được mô tả giống như trong Hình 1. Tính từ thời điểm
bắt đầu q trình truyền tin giữa client HTTP và server HTTP, có ba khoảng thời
gian như sau:



Một RTT dành cho việc khởi tạo kết nối TCP.
Một RTT cho bản tin yêu cầu HTTP và một bài byte đầu của bản tin đáp ứng HTTP

được phản hồi lại.
 Thời gian truyền file, là thời gian từ khi client nhận được vài byte xác nhận đầu tiên
cho tới khi nhận được toàn bộ bản tin đáp ứng.
Vậy, đối với mỗi tham chiều đối tượng trong trường hợp sử dụng kết nối không
liên tục, tổng thời gian truyền file bao gồm hai RTT cộng với thời gian truyền dẫn
file HTML từ server tới client.

2.2. Kết nối liên tục
Các kết nối không liên tục gặp phải một số thiếu sót như sau:



Phải thiết lập và duy trì kết nối mới cho mỗi đối tượng được yêu cầu. Đối với mỗi

kết nối này, cần phải cấp phát bộ đệm TCP và duy trì các biến TCP trên cả client và
server. Điều này sẽ tạo gánh nặng cho máy chủ Web vì nó có thể phải phục vụ yêu
cầu cho số lượng lớn các client khác nhau đồng thời.
 Mỗi yêu cầu tham chiếu đối tượng cần hai RTT: một RTT thiết lập kết nối TCP, một
RTT để yêu cầu và nhận đối tượng. Điều này gây trễ nhiều thời gian khi số lượng
đối tượng cần tham chiếu lớn
 Các trình duyệt thường mở song song một số kết nối TCP để lấy các đối tượng tham
chiếu.
Việc sử dụng kết nối liên tục sẽ khắc phục được những hạn chế đã nêu ở trên với
những đặc điểm như sau:



Server phải để kết nối TCP mở sau khi gửi bản tin đáp ứng.
Sau đó, các yêu cầu và đáp ứng liên tiếp cùng một client với server có thể gửi trên

cùng một kết nối.
 Nhiều trang Web trong cùng một server có thể được gửi từ server này tới cùng một



cùng client mà chỉ qua một kết nối.
Client có thể gửi yêu cầu bất cứ khi nào nó cần tham chiều tới một đối tượng.
Chỉ cần một RTT cho tất cả đối tượng tham chiếu
16



Về vấn đề kết thúc một kết nối, server HTTP sẽ đóng một kết nối khi nó khơng
được sử dụng trong một khoảng thời gian nhất định (khoảng thời gian quá hạn này
có khả năng thiết lập). Ở chế độ mặc định, HTTP sử dụng kết nối liên tục.

17


CHƯƠNG 3:
NGUYÊN LÝ HOẠT ĐỘNG

Hình 3.8. Sơ đồ hoạt động của giao thức HTTP

Hình 3.1. thể hiện mơ hình hoạt động của giao thức HTTP - HTTP hoạt động dựa
trên mơ hình Client – Server. Trong mơ hình này, các máy tính của người dùng sẽ
đóng vai trị làm máy khách (Client). Sau một thao tác nào đó của người dùng, các
máy khách sẽ gửi yêu cầu đến máy chủ (Server) và chờ đợi câu trả lời từ những máy
chủ này.

Hình 3.9. Cách giao thức HTTP hoạt động

3.1. Client
Hình 3.2. trình bày quá trình người dùng thực hiện truy vấn HTTP qua các trình
duyệt Web phổ biến hiện nay.
Bắt đầu bằng việc thực hiện tạo một kết nối Client – Server, đó là thiết lập một kết
nối TCP do HTTP là giao thức lớp ứng dụng trong tập giao thức TCP/IP.
18


Client gửi một yêu cầu tới Server theo mẫu của một phương thức yêu cầu, URI, và

phiên bản giao thức, được theo bởi một thông báo MIME chứa các bộ chỉnh sửa yêu
cầu, thông tin Client, và nội dung đối tượng có thể qua một kết nối TCP/IP.

3.2. Server
Server phản hồi với một dòng trạng thái, bao gồm phiên bản giao thức của thông
báo và một code thành công hoặc lỗi, theo sau bởi một thông báo MIME chứa thông
tin Server, thông tin thực thể đa phương tiện và nội dung đối tượng có thể.

19


CHƯƠNG 4:
CẤU TRÚC BẢN TIN
4.1. Bản tin Request
4.1.1. Tổng quan bản tin Request
HTTP Request Method: Là phương thức để chỉ ra hành động mong muốn được
thực hiện trên tài nguyên đã xác định.
Hình 4.1. trình bày cấu trúc của một bản tin HTTP Request:


Một Request-line = Phương thức + URI–Request + Phiên bản HTTP . Giao thức
HTTP định nghĩa một tập các giao thức GET, POST, HEAD, PUT ... Client có
thể sử dụng một trong các phương thức đó để gửi request lên server.



Có thể có hoặc khơng 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.



Request Header Fields: Các trường header cho phép client truyền thông tin bổ
sung về yêu cầu, và về chính client, đến server. Một số trường: Accept-Charset,
Accept-Encoding, Accept-Language, Authorization, Expect, From, Host, …




Tùy chọn một thông điệp

Khi bản tin Request đến server, server thực hiện một trong 3 hành động sau:


Server phân tích request nhận được, maps yêu cầu với tập tin trong tập tài liệu
của server, và trả lại tập tin yêu cầu cho client.



Server phân tích request nhận được, maps yêu cầu vào một chương trình trên
server, thực thi chương trình và trả lại kết quả của chương trình đó.



Request từ client khơng thể đáp ứng, server trả lại thông báo lỗi.

20



Hình 4.10. Ví dụ về bản tin Request

Giao thức HTTP định nghĩa một tập các phương thức request, client có thể sử dụng
một trong các phương thức này để tạo Request tới HTTP server, dưới đây liệt kê một
số phương thức phổ biến:

21


4.1.2. Cấu trúc bản tin Request
Request-Line
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).
 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.
 GET: GET được sử dụng để lấy lại thông tin từ Server đã cung cấp bởi sử
dụng một URI đã cung cấp. Các yêu cầu sử dụng GET nên chỉ nhận dữ liệu
và nên khơng có ảnh hưởng gì tới dữ liệu.
 HEAD: Tương tự như GET, nhưng nó truyền tải dịng trạng thái và khu vực
Header.
 POST: Một yêu cầu POST được sử dụng để gửi dữ liệu tới Server, ví dụ,
thơng tin khách hàng, file tải lên, …, bởi sử dụng các mẫu HTML.
 PUT: Thay đổi tất cả các đại diện hiện tại của nguồn mục tiêu với nội dung



được tải lên.

DELETE: Gỡ bỏ tất cả các đại diện hiện tại của nguồn mục tiêu bởi URI.
CONNECT: Thiết lập một tunnel tới Server được xác định bởi URI đã cung

cấp.
 OPTIONS: Miêu tả các chức năng giao tiếp cho nguồn mục tiêu.
 TRACE: Trình bày một vịng lặp kiểm tra thơng báo song song với path tới
nguồn mục tiêu.
 Đườ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 “/”.
 Một dấu * được sử dụng khi một yêu cầu HTTP không áp dụng tới một
nguồn cụ thể, nhưng tới chính Server đó, và chỉ được cho phép khi phương
thức được sử dụng không cần thiết áp dụng tới một nguồn.
Ví dụ: OPTIONS * HTTP/1.1
 absoluteURI được sử dụng khi một yêu cầu HTTP đang được tạo ra cho một
sự ủy nhiệm. Sự ủy nhiệm được yêu cầu chuyển tới yêu cầu hoạc dịch vụ từ
một cache hiệu lực, và trả lại phản hồi.
Ví dụ: GET HTTP/1.1
 Mẫu phổ biến nhất của Request-URI được sử dụng để xác định một nguồn
trên một Server hoặc gateway ban đầu. Ví dụ, một Client mong muốn lấy
được một nguồn một cách trực tiếp từ Server ban đầu sẽ tạo một kết nối TCP
tới port 80 của host www.w3.org và gửi các dòng sau:
GET /pub/WWW/TheProject.html HTTP/1.1
22


Host: www.nhom7.org
Ghi chú rằng, đường truyền tuyệt đối không thể là trống rỗng; nếu khơng gì được
trình bày trong URI ban đầu, nó Phải được cung cấp như là “/” (Server root).
 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)

Header
Header, 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ư:







Date: Thời gian.
Ví dụ: Thu, 16 December 2021 5:31 GMT
From: Địa chỉ người gửi.
Ví dụ:
Accept: Loại nội dung có thể nhận được từ thơng điệp response.
Ví dụ:
text/plain, text/html
Accept-Encoding: Các kiểu nén được chấp nhận.
Ví dụ: gzip, deflate, xz, exi…
Connection: Tùy chọn điều khiển cho kết nối hiện thời.
Ví dụ: Keep-Alive, Close…
Cookie: Thơng tin HTTP Cookie từ server.

Body
Cuối cùng là phần 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, 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.
Sử dụng phương thức GET gửi dữ liệu đến server sử dụng chuỗi truy vấn

(query string): khi gửi một gói tin HTTP request theo phương thức GET, trong
trường hợp client muốn gửi dữ liệu lên server để thực hiện lưu trữ hoặc thực hiện
một yêu cầu cụ thể nào đó, thơng thường client sẽ khơng đóng gói dữ liệu trong
Body mà sẽ được gửi thẳng ở dịng Header line phía sau trường path theo định dạng
các tham số dạng “key=value” như sau:
 GET /path?key1=value1&key2=value2&…&keyn=valuen HTTP/1.1

Dữ liệu gửi lên như vậy gọi là một chuỗi truy vấn (query string), được bắt đầu
bằng dấu “?” và kế tiếp là các cặp “key=value”. Trong đó giá trị của các key thường
23


sẽ được cung cấp bởi API từ phía server và client sẽ cung cấp dữ liệu của key thông
qua value tương ứng. Ví dụ API cập nhật dữ liệu lên nhom7 có dạng:
 GETapi.nhom7.com/update?api_key=xxxxxxxxxx&field1=value HTTP/1.1

4.2. Bản tin Respond
4.2.1. Tổng quan bản tin Respond
Cấu trúc HTTP Respond gần giống với HTTP Request. Điểm khác biệt thay vì
Request-Line, HTTP Respond có Status-Line.
Hình 4.2. trình bày cấu trúc của một bản tin HTTP Respond:


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.

Hình 4.11. Ví dụ về bản tin Respond

4.2.2. Cấu trúc bản tin Respond
Status-Line
Khi được nhận và phiên dịch 1 yêu cầu HTTP từ phía client, HTTP status code sẽ
được máy chủ cung cấp để đáp ứng yêu cầu đó của họ. Nó bao gồm code từ IETF
Request for Comments (RFC), các thông số kỹ thuật khác và 1 số code bổ sung
được sử dụng trong 1 số ứng dụng phổ biến của giao thức HTTP. Bên cạnh dó nó
24


còn 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):


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



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ố ngun. Ví dụ: 200, 404, 302,…




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,…

Tất cả các HTTP status code phản hồi được chia ra thành 5 hạng mục riêng biệt và
là các số nguyên có 3 chữ số. Chữ số đầu được dùng để xác định loại phản hồi,
trong khi 2 chữ số cuối thì khơng có bất kỳ vai trò phân loại nào. HTTP status code
sẽ cho ta biết liệu 1 yêu cầu HTTP cụ thể đã được hồn thành thành cơng hay chưa.
Các ứng dụng hiểu HTTP status code không cần phải biết hết tất cả code, tức là dù
code khơng xác định cũng có cụm từ để chỉ lý do không xác định. Cụm từ này
khơng cho phía client nhiều thơng tin nhưng các ứng dụng HTTP đó phải hiểu được
nó thuộc 1 trong 5 hạng mục riêng biệt, cụ thể bao gồm:
 1xx: information Message

Các status code này chỉ có tính chất tạm thời, client có thể khơng quan tâm.
 2xx: Successful

Khi đã xử lý thành công request của client, server trả về status dạng này:


200 OK: request thành công.



202 Accepted: request đã được nhận, nhưng khơng có kết quả nào trả về,
thơng báo cho client tiếp tục chờ đợi.




204 No Content: request đã được xử lý nhưng khơng có thành phần nào
được trả về.



205 Reset: giống như 204 nhưng mã này còn yêu câu client reset lại
document view.



206 Partial Content: server chỉ gửi về một phần dữ liệu, phụ thuộc vào giá
trị range header của client đã gửi.

 3xx: Redirection
25


×