3.4.1 Tổng quan về HTTP
Là giao thức ở tầng ứng dụng dùng để truyền dữ liệu (văn bản, hình ảnh, âm thanh, …) thông qua kết nối TCP/IP giữa trình duyệt web (Web browser) và máy chủ (Web server). Hoạt động theo mô hình client – server.
Truyền nhận theo kiểu request/respone. Client gửi yêu cầu kết nối đến server với một định dạng header tổng quát như sau:
Request = Request-Line *(( general-header | request-header | entity-header ) CRLF) CRLF [ message-body ]
Ví dụ: 1 yêu cầu kết nối khi truy cập trang web google.com.vn GET http://www.google.com.vn/ HTTP/1.1\r\n
Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Trong đó:
Request Line:
Chứa các thông tin về phương thức kết nối, địa chỉ tài nguyên yêu cầu và phiên bản HTTP yêu cầu
Request-Line = Method Request-URI/HTTP-Version CRLF. Phương thức kết nối (Method):
- GET: Yêu cầu lấy thông tin. Đây là phương thức dùng nhiều nhất trong duyệt web - HEAD: Chỉ yêu cầu lấy thông tin kết nối
- POST: Chú thích thêm về tài nguyên yêu cầu, gửi thông tin của một biểu mẫu, … - DELETE: yêu cầu máy chủ xóa nguồn tài nguyên yêu cầu.
- …
Địa chỉ tài nguyên (Request URI):
Request-URI = absoluteURI | abs_path | authority
Thường dùng cách truy cập địa chỉ tuyệt đối (đầy đủ thông tin về địa chỉ của nguồn tài nguyên cần yêu cầu)
Ví dụ: http://hocvui.net/html/paragraph-tag-p.html
Hoặc truy cập theo địa chỉ tương đối (chỉ chứa một phần thông tin về nguồn tài nguyên yêu cầu)
Ví dụ: http://tanbachkhoa.edu.vn/
Khi đó theo mặc định thì nguồn yêu cầu sẽ bổ sung thêm là index.html Thông tin bổ sung header (message body)
Phần này sẽ kèm theo các thông tin về client như: trình duyệt đang sử dụng, phiên bản trình duyệt, …
Sau khi đã nhận đầy đủ thông tin về yêu cầu kết nối từ client thì server xử lý thông tin và trả về bản tin (Respone): Response = Status-Line *(( general-header | response-header | entity-header ) CRLF) CRLF [ message-body ] Ví dụ: HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/html
Content-Length: 1354 <html>
<body>
<h1>Happy New Millennium!</h1> … (more file contents)
</body> </html> Status Line:
Chứa các thông tin về phiên bản HTTP, mã trạng thái kết nối và kèm theo cụm từ chú thích.
Mã trạng thái kết nối (Status code):
Gồm 3 số để chú thích về trạng thái kết nối
1xx: yêu cầu đang được xử lý.
2xx: yêu cầu thành công.
3xx: hướng dẫn, thực hiện thao tác khác để tiếp tục.
4xx: lỗi từ phía client, yêu cầu không đúng hoặc sai cú pháp, …
5xx: lỗi từ phía server. Ví dụ:
100: Continue