HTTP là một mô hình kiến trúc máy khách / máy chủ (Client / Server) để trao đổi thông tin qua một liên kết an toàn, nó là một giao thức Request / Response không trạng thái.
HTTP Client là một ứng dụng (trình duyệt Web hoặc bất kỳ Client nào), bằng cách gửi yêu cầu kết nối với máy chủ HTTP Server để đạt được một hoặc nhiều mục đích của HTTP Server.
HTTP Server cũng là một ứng dụng (thường là một dịch vụ Web, chẳng hạn như Web Apache server hoặc IIS server, v.v.), bằng cách nhận yêu cầu của HTTP Client để gửi dữ liệu phản hồi – HTTP response.
HTTP sử dụng mã định danh URI (Uniform Resource Recognition) để truyền dữ liệu và thiết lập kết nối.
Sau khi kết nối được thiết lập, thông điệp dữ liệu trên Internet qua định dạng e-mail tương tự như [RFC5322] được sử dụng và giao thức mở rộng thư điện tử Internet đa mục đích hay MIME (Multipurpose Internet Mail Extensions) để truyền.
Browser – trình duyệt
Bất cứ khi nào bạn đưa ra một URL từ trình duyệt của mình để lấy tài nguyên web bằng HTTP, ví dụ: http://www.insys.vn/index.html, trình duyệt chuyển URL thành một thông báo yêu cầu (request message) và gửi nó đến máy chủ HTTP (HTTP server). Máy chủ HTTP diễn giải thông báo yêu cầu và trả về cho bạn một thông báo phản hồi (response message) thích hợp, đó là tài nguyên bạn đã yêu cầu hoặc thông báo lỗi.
Uniform Resource Locator (URL)
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, ví dụ HTTP, FTP và telnet.
Hostname: tên miền DNS (ví dụ như www.insys.vn) hay địa chỉ IP (ví dụ như 192.168.1.10) của server.
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.
Ví dụ, trong URL http://www.insys.vn/index.html, giao thức mạng là http, hostname là www.insys.vn, cổng TCP không được chỉ định trong URL và lấy số mặc định cổng TCP 80 cho HTTP, tên và vị trí của tài nguyên “index.html”.
Ví dụ một số URL khác:
ftp://www.insys.vn/docs/test.txt
mailto:user@test101.com
news:soc.culture.vietnam
telnet://www.insys.vn/
Định dạng của gói tin (Message)
HTTP client và HTTP server giao tiếp bằng cách gửi tin nhắn văn bản. Client gửi một tin nhắn yêu cầu – request message đến Server. Đến lượt nó, Server sẽ trả về một tin nhắn phản hồi – respone message.
Một gói tin HTTP bao gồm tiêu đề tin (message header), nội dung tin tùy chọn (optional message body), được tách bằng một dòng trống, như được minh họa bên dưới:
Hình 3.19 Cấu trúc chuẩn một gói tin HTTP
Định dạng gói tin “HTTP Request” được mô tả như sau:
Hình 3.20 Cấu trúc gói tin HTTP Request
Request Line: Dòng đầu tiên của gói tin Request, và có định dạng như sau:
request-method-namerequest-URIHTTP-version
request-method-name: Giao thức HTTP xác định một tập hợp các phương pháp Request như GET, POST, HEAD và OPTIONS. Client có thể sử dụng một trong các phương pháp này để gửi yêu cầu đến Server.
GET: Client có thể sử dụng GET để lấy tài nguyên web từ Server
HEAD: Client có thể sử dụng HEAD để lấy tiêu đề của gói tin GET. Vì tiêu đề chứa ngày dữ liệu được sửa đổi lần cuối, nên điều này có thể được sử dụng để kiểm tra bản sao bộ nhớ cache cục bộ.
POST: Được sử dụng để úp dữ liệu lên web server.
PUT: Yêu cầu server lưu trữ dữ liệu.
DELETE: Yêu cầu server xóa dữ liệu.
TRACE: Yêu cầu server trả lại các dấu vết chẩn đoán về các hoạt động mà nó thực hiện.
OPTIONS: Yêu cầu server trả lại danh sách các phương pháp Request mà nó hỗ trợ.
CONNECT: Được sử dụng để yêu cầu proxy tạo kết nối với host khác và chỉ cần trả lời nội dung, mà không cần phân tích cú pháp hoặc lưu vào bộ nhớ cache. Điều này thường được sử dụng để tạo kết nối SSL thông qua proxy