Tổng quan về HTTP
Tiêu chuẩn Hypertext Transfer Protocol (HTTP) – Giao thức truyền siêu văn bản được ứng dụng để truyền tải tài liệu và các tệp siêu văn bản giữa máy chủ Web (Web server) và máy khách Web (Web client) thông qua một trình duyệt Web. Cụ thể hơn, HTTP là một giao thức ở tầng ứng dụng trong các hệ thống thông tin phân tán, cộng tác, siêu phương tiện (hypermedia), cho phép một máy khách gửi yêu cầu đơn giản dạng tệp siêu văn bản đến máy chủ và nhận đáp ứng từ máy chủ.
Tim Berners-Lee, một nhà khoa học máy tính người Anh và nhóm dự án “World Wide Web” là những người đầu tiên được công nhận phát minh ra HTTP cùng với ngôn ngữ đánh dấu siêu văn bản HTML (HyperText Markup Language), công nghệ liên quan đến máy chủ web và trình duyệt web dựa trên văn bản. Cho đến nay, giao thức HTTP gồm có baphiên bản là:
- Phiên bản đầu tiên là HTTP 0.9, được Hiệp hội web toàn cầu (World Wide Web - W3C) công bố năm 1991 (có thể tham khảo tài liệu tại đây). Đây là giao thức đơn giản để truyền dữ liệu thô trên Internet.
- Phiên bản thứ hai là HTTP 1.0, được định nghĩa tại RFC 1945 vào năm 1996 (RFC - Request for Comments, là những tài liệu kỹ thuật và tổ chức về Internet, bao gồm những tài liệu đặc tả kỹ thuật và chính sách được tổ chức IETF (Internet Engineering Task Force – Nhóm chuyên trách kỹ thuật Internet) phát hành), cho phép thông điệp định dạng kiểu giao thức mở rộng thư Internet đa chức năng (Multipurpose Internet Mail Extensions - MIME), như kiểu văn bản phi cấu trúc (Text), kiểu hình ảnh (Image), kiểu âm thanh (Audio), kiểu phim (Video), kiểu ứng dụng (Application), chứa các thông tin mô tả về dữ liệu được truyền và các tham số chỉnh sửa theo yêu cầu/đáp ứng. Tuy nhiên, phiên bản này không tác động nhiều đến các proxy phân cấp, bộ nhớ đệm, nhu cầu kết nối liên tục hay đến các máy chủ lưu trữ ảo. Proxy là một chương trình trung gian hoạt động vừa như một máy chủ và vừa như một máy kháchnhằm mục đích thực hiện các yêu cầu thay cho các máy khách khác.
- Phiên bản thứ ba là HTTP 1.1, lần đầu tiên được công bố tại RFC 2608 vào tháng 01 năm 1997 và sau đó được cập nhật tại RFC 2616 vào tháng 07 năm 1999. HTTP 1.1 có các yêu cầu nghiêm ngặt hơn HTTP 1.0 để đảm bảo tính tin cậy khi thực hiện các tính năng của nó.
HTTP cho phép một tập các phương thức hoặc câu lệnh (methods/commands) và các tiêu đề mở-đóng (open-ended header) để chỉ ra mục đích của một yêu cầu. HTTP được xây dựng trên nguyên tắc tham chiếu được cung cấp bởi định danh tài nguyên thống nhất (Uniform Resource Identifier - URI), hoặc định vị tài nguyên thống nhất (Uniform Resource Locator - URL) hay tên tài nguyên thống nhất (Uniform Resource Name - URN), nhằm chỉ ra nguồn tài nguyên áp dụng phương thức. Thông điệp được gửi theo định dạng tương tự với định dạng sử dụng thư Internet theo quy định của MIME.
HTTP cũng được sử dụng như một giao thức chung để truyền thông giữa tác nhân người dùng (User Agent - UA) và các proxy, gateway (Một máy chủ hoạt động như một điểm trung gian đối với máy chủ khác, tiếp nhận các yêu cầu từ máy khách với vai trò như một máy chủ gốc) đến các hệ thống Internet khác, gồm cả các hệ thống hỗ trợ giao thức truyền thư đơn giản (Simple Mail Transfer Protocol – SMTP), giao thức truyền tin tức liên mạng (Network News Transfer Protocol – NNTP), giao thức truyền tệp tin (File Tranfer Protocol – FTP), giao thức Gopher (được thiết kế chính để tìm kiếm và lưu trữ tài liệu phân tán) và WAIS (hệ thống tìm kiếm theo mô hình khách – chủ sử dụng tiêu chuẩn ANSI Z39.50). Bằng cách này, HTTP cho phép truy cập siêu phương tiện đến các tài nguyên sẵn có từ các ứng dụng đa dạng.
Mô hình HTTP
Giao thức HTTP là một giao thức có dạng yêu cầu/đáp ứng. Khi một máy khách gửi một yêu cầu đến máy chủ gồm phương thức yêu cầu (gồm GET, POST, HEAD,…), URI, phiên bản giao thức, kèm với thông điệp kiểu MIME gồm các tham số chỉnh sửa của yêu cầu, thông tin máy khách và nội dung chính thông qua kết nối đến máy chủ. Máy chủ sẽ đáp ứng bằng dòng trạng thái, gồm phiên bản giao thức thông điệp và mã thông báo thành công hay lỗi, kèm với thông điệp kiểu MIME có chứa thông tin về máy chủ, các thông tin thêm về đối tượng và nội dung chính của đối tượng.
Hầu hết giao tiếp HTTP được khởi tạo từ UA và một yêu cầu sử dụng nguồn tài nguyên trên máy chủ gốc (Origin Server - O). Trong trường hợp đơn giản nhất, giao tiếp này có thể được thực hiện thông qua một kết nối duy nhất (v) giữa UA và O như Hình 1.
Tình huống phức tạp hơn xảy ra khi có một hoặc nhiều điểm trung gian trong chuỗi yêu cầu/đáp ứng. Có ba dạng trung gian phổ biến như: proxy, gateway và tunnel (Một chương trình trung gian hoạt động như một điểm trung chuyển giữahai kết nối). Proxy là một điểm chuyển tiếp, nhận các yêu cầu cho một URI, viết lại tất cả hoặc một phần của thông điệpvà chuyển tiếp yêu cầu đã định dạng lại về phía máy chủ xác định bởi URI. Ở đây, gateway hoạt động như một lớp phía trên của máy chủ khácvà nếu cần thiết, biên dịch các yêu cầu tới giao thức máy chủ cơ sở. Tunnel hoạt động như một điểm trung chuyển giữa hai kết nối mà không cần thay đổi thông điệp, các tunnel được sử dụng khi giao tiếp cần phải đi qua một điểm trung gian (như tường lửa) ngay cả khi điểm trung gian này không hiểu được nội dung của thông điệp.
Hình 2 mô tả ba điểm trung gian (A, B và C) giữa tác nhân người dùng và máy chủ gốc. Một thông điệp yêu cầu/đáp ứng sẽ truyền qua toàn bộ các điểm này bằng bốn kết nối riêng biệt. Mỗi điểm trung gian có thể được tham gia vào nhiều kết nối và các giao tiếp khác tại cùng một thời điểm. Ví dụ, điểm B có thể nhận yêu cầu từ nhiều máy khách khác ngoài A, hay chuyển tiếp yêu cầu đến nhiều máy chủ khác ngoài C đồng thời với việc xử lý yêu cầu từ điểm A.
Bất cứ thành phần nào tham gia kết nối mà không hoạt động như một tunnel đều có thể sử dụng một bộ nhớ đệm (cache) nội bộ để xử lý các yêu cầu. Bộ nhớ đệm giúp cho chuỗi yêu cầu/đáp ứng được xử lý nhanh hơn khi một trong các thành phần tham gia trong chuỗi có yêu cầu về dữ liệu. Hình 3 sau đây minh họa chuỗi yêu cầu/đáp ứng từ điểm UA đến điểm B khi tại điểm B có lưu trữ dữ liệu tạm thời từ điểm O (thông qua điểm C), không được lưu trữ tạm thời tại UA hay tại điểm A.
An toàn bảo mật của giao thức HTTP phiên bản 1.1 cũng là một vấn đề hết sức quan trọng đối với các nhà phát triển ứng dụng, nhà cung cấp thông tin và người dùng cuối. Các vấn đề an toàn bảo mật cần xem xét bao gồm: Bảo vệ thông tin cá nhân (lạm dụng thông tin đăng nhập máy chủ, truyền thông tin nhạy cảm, mã hóa thông tin nhạy cảm ở dạng URI, vấn đề riêng tư khi kết nối để nhận các tiêu đề), các tấn công tệp tin và tên đường dẫn, hệ thống tên miền (Domain Name System – DNS) giả, các tiêu đề giả, các vấn đề sắp xếp nội dung, vấn đề xác thực và máy khách không hoạt động, vấn đề về proxy và cache, các tấn công từ chối dịch vụ trên proxy. Do đó, để đảm bảo an toàn khi truyền thông trên mạng, có thể sử dụng HTTPS (Hypertext Transfer Protocol Secure – đây là sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL (Secure Socket Layer) hay TLS (Transport Layer Security) cho phép trao đổi thông tin một cách bảo mật trên Internet).
Ứng dụng
HTTP được ứng dụng trong các phần mềm máy chủ Web và trong các trình duyệt Web để trao đổi thông tin giữa máy chủ Web và máy khách Web trên môi trường mạng. Trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Bắt buộc áp dụng tiêu chuẩn HTTP phiên bản 1.1 và được xếp vào nhóm Tiêu chuẩn về kết nối.
Theo AITA
Thêm bình luận