Khác biệt giữa bản sửa đổi của “Hypertext Transfer Protocol”
Không có tóm lược sửa đổi Thẻ: Đã bị lùi lại Sửa đổi di động Sửa đổi từ trang di động |
n Đã lùi lại sửa đổi của 14.236.37.63 (Thảo luận) quay về phiên bản cuối của InternetArchiveBot Thẻ: Lùi tất cả |
||
Dòng 2: | Dòng 2: | ||
{{Các tầng TCP/IP}} |
{{Các tầng TCP/IP}} |
||
''' |
'''HTTP''' ([[Tiếng Anh]]: '''HyperText Transfer Protocol''' - ''Giao thức truyền tải siêu văn bản'') là một giao thức [[Tầng ứng dụng|lớp ứng dụng]] cho [[Siêu phương tiện|các]] hệ thống thông tin [[siêu phương tiện]] phân tán, cộng tác. <ref name="ietf2616">{{Cite IETF|rfc=2616|first5=Larry|date=June 1999|publisher=[[Internet Engineering Task Force|IETF]]|last7=Berners-Lee|first7=Tim|last6=Leach|first6=Paul J.|last5=Masinter|last4=Nielsen|title=Hypertext Transfer Protocol – HTTP/1.1|first4=Henrik Frystyk|last3=Mogul|first3=Jeffrey C.|last2=Gettys|first2=James|last1=Fielding|first1=Roy T.|ref=ietf}}</ref> HTTP là nền tảng của truyền thông dữ liệu cho [[World Wide Web]], nơi [[siêu văn bản]] tài liệu bao gồm [[Siêu liên kết|các siêu liên kết]] đến các tài nguyên khác mà người dùng có thể dễ dàng truy cập, ví dụ bằng một [[Chuột (máy tính)|con chuột]] nhấp chuột hoặc bằng cách chạm vào màn hình trong một trình duyệt web. |
||
Sự phát triển của HTTP được [[Tim Berners-Lee]] tại [[CERN]] khởi xướng vào năm 1989. Việc phát triển các [[RFC]] HTTP ban đầu là một nỗ lực phối hợp của [[Internet Engineering Task Force|Lực lượng Đặc nhiệm Kỹ thuật Internet]] (IETF) và [[W3C|World Wide Web Consortium]] (W3C), với các thay đổi sau đó chuyển sang do IETF phụ trách. |
Sự phát triển của HTTP được [[Tim Berners-Lee]] tại [[CERN]] khởi xướng vào năm 1989. Việc phát triển các [[RFC]] HTTP ban đầu là một nỗ lực phối hợp của [[Internet Engineering Task Force|Lực lượng Đặc nhiệm Kỹ thuật Internet]] (IETF) và [[W3C|World Wide Web Consortium]] (W3C), với các thay đổi sau đó chuyển sang do IETF phụ trách. |
Phiên bản lúc 09:56, ngày 6 tháng 2 năm 2021
HTTP |
---|
Request methods |
Header fields |
Status codes |
Bộ giao thức Internet |
---|
Tầng ứng dụng (Application layer) |
Tầng giao vận (Transport layer) |
Tầng mạng (Internet layer) |
Tầng liên kết (Link layer) |
HTTP (Tiếng Anh: HyperText Transfer Protocol - Giao thức truyền tải siêu văn bản) là một giao thức lớp ứng dụng cho các hệ thống thông tin siêu phương tiện phân tán, cộng tác. [1] HTTP là nền tảng của truyền thông dữ liệu cho World Wide Web, nơi siêu văn bản tài liệu bao gồm các siêu liên kết đến các tài nguyên khác mà người dùng có thể dễ dàng truy cập, ví dụ bằng một con chuột nhấp chuột hoặc bằng cách chạm vào màn hình trong một trình duyệt web.
Sự phát triển của HTTP được Tim Berners-Lee tại CERN khởi xướng vào năm 1989. Việc phát triển các RFC HTTP ban đầu là một nỗ lực phối hợp của Lực lượng Đặc nhiệm Kỹ thuật Internet (IETF) và World Wide Web Consortium (W3C), với các thay đổi sau đó chuyển sang do IETF phụ trách.
HTTP/1.1 lần đầu tiên được chuẩn hóa trong RFC 2068 vào năm 1997. Đặc điểm kỹ thuật đó đã được RFC 2616 tuân theo vào năm 1999, cũng được thay thế bằng họ RFC RFC 7230 vào năm 2014.
HTTP/2 là một giao thức hiệu quả hơn về ngữ nghĩa của HTTP "trên dây" và được xuất bản vào năm 2015; nó hiện được hỗ trợ bởi hầu như tất cả các trình duyệt web [2] và các máy chủ web lớn qua Bảo mật tầng truyền tải (TLS) bằng cách sử dụng tiện ích mở rộng Application-Layer Protocol Negotiation (ALPN) [3] trong đó TLS 1.2 hoặc mới hơn là bắt buộc phải có. [4] [5]
HTTP/3 là sự kế thừa được đề xuất cho HTTP / 2, [6] [7] đã được sử dụng trên web (được bật theo mặc định trong macOS mới nhất), sử dụng UDP thay vì TCP cho giao thức truyền tải cơ bản. Giống như HTTP / 2, nó không lỗi thời các phiên bản chính trước đó của giao thức. Hỗ trợ cho HTTP/3 đã được thêm vào Cloudflare và Google Chrome vào tháng 9 năm 2019, [8] [9] và có thể được kích hoạt trong các phiên bản ổn định của Chrome và Firefox. [10]
Lịch sử
HTTP cùng với HTML là phát kiến của Tim Berners-Lee ở CERN vào năm 1989 đứng sau là các tổ chức lớn (IETF) và World Wide Web Consortium (W3C), và đỉnh cao là việc công bố ra hàng loạt các bản RFC(Request for Comments).
Phiên bản đầu tiên của HTTP là HTTP V0.9 (1991). Năm 1995, David Ragger lãnh đạo nhóm HTTP Working Group (viết tắt HTTP WG) muốn mở rộng giao thức này đa dạng hơn như: thẻ meta-rich decription, và bảo mật hơn bằng cách thêm các phương thức khác và các trường header.[11]
HTTP lúc công bố đến nay đã trải qua nhiều phiên bản 1.x (1.0, 1.1, 1.2,1.3), đến ngày nay là phiên bản 2.x.
HTTP/2 được công bố trong bản RFC 7540 vào tháng 7 năm 2015.[11]
HTTP Session
HTTPS:\\ Authentication
HTTP Request methods
HTTP Request Method chỉ phương thức để được thực hiện trên nguồn được nhận diện bởi Request-URI đã cung cấp
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 chỉ nhận dữ liệu và 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.
HTTP Response
Khi nhận và phiên dịch một HTTP Request, Server sẽ gửi tín hiệu phản hồi là một HTTP Response bao gồm các thành phần sau:
- Một dòng trạng thái (Status-Line)
- Không hoặc nhiều hơn các trường Header (General|Response|Entity) được theo sau CRLF
- Một dòng trống chỉ dòng kết thúc của các trường Header
- Một phần thân thông báo tùy ý
Server response
Một ví dụ về một HTTP Response:
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
Hello World, this is a very simple HTML document.
</body>
</html>
Dòng Status-Line: Một dòng Status Line bao gồm phiên bản giao thức (HTTP-Version) sau đó là mã hóa trạng thái số (Status-Code) và cụm từ thuần văn bản được liên kết của nó. Các thành phần được phân biệt bởi dấu cách.
HTTP Status Code
Mã trạng thái HTTP được server phản hồi lại mỗi khi nhận được http resquest
Yếu tố Status-Code là một số nguyên 3 ký tự, trong đó ký tự đầu tiên của mã hóa trạng thái định nghĩa hạng (loại) phản hồi và hai ký tự cuối không có bất cứ vai trò phân loại nào. Có 5 giá trị của ký tự đầu tiên như sau:
1xx: Thông tin
Nó nghĩa là yêu cầu đã được nhận và tiến trình đang tiếp tục.
100 (Continue)
Máy chủ trả về mã này để chỉ ra rằng nó đã nhận được một phần đầu tiên của một yêu cầu và được chờ đợi cho phần còn lại.
101 (Switching protocols)
Bên yêu cầu đã yêu cầu các máy chủ để chuyển đổi và máy chủ được thừa nhận rằng nó sẽ làm như vậy
2xx: Thành công
Nó nghĩa là hoạt động đã được nhận, được hiểu, và được chấp nhận một cách thành công.
200 (Successful)
Các máy chủ xử lý yêu cầu thành công
201 (Created)
Yêu cầu đã thành công và các máy chủ tạo ra một nguồn tài nguyên mới.
202 (Accepted)
Máy chủ đã chấp nhận yêu cầu, nhưng vẫn chưa xử lý nó
203 (Non-authoritative information)
Máy chủ xử lý yêu cầu thành công, nhưng đang quay trở lại các thông tin mà có thể là từ một nguồn khác.
204 (No content)
Các máy chủ xử lý yêu cầu thành công, nhưng không trả lại bất kỳ nội dung nào
205 (Reset content)
Các máy chủ proccessed yêu cầu thành công, nhưng không trả lại bất kỳ nội dung. Không giống như một phản ứng 204, phản ứng này đòi hỏi người yêu cầu thiết lập lại xem tài liệu
206 (Partial content)
Các máy chủ xử lý thành công một phần của một yêu cầu
3xx: Sự điều hướng lại
Nó nghĩa là hoạt động phải được thực hiện để hoàn thành yêu cầu.
301 (Moved permanently)
Các trang web yêu cầu đã bị di chuyển vĩnh viễn tới URL mới
302 (Moved temporarily)
Trang được yêu cầu đã di chuyển tạm thời tới một URL mới
304 (Not modified)
Các trang yêu cầu đã không được sửa đổi kể từ khi yêu cầu cuối cùng. Khi máy chủ trả về phản hồi này, nó không trả lại các nội dung của trang.
4xx: Lỗi Client
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
400 (Bad request)
Các máy chủ không hiểu được yêu cầu.
401 (Not authorized)
Đề nghị yêu cầu xác thực. Máy chủ có thể trả về phản hồi này yêu cầu xác thực đăng nhập tài khoản và mật khẩu (thông thường máy chủ trả về phản hồi này nếu client gửi request một trang đăng nhập)
403 (Forbidden)
Máy chủ từ chối yêu cầu.(thông thường nếu đăng nhập không thành công máy chủ sẽ trả về mã lỗi này)
404 (Not found)
Máy chủ không thể tìm thấy trang yêu cầu. Ví dụ, máy chủ thường trả về mã này nếu có 1 yêu cầu tới một trang không tồn tại trên máy chủ.
405 (Method not allowed)
Phương thức được xác định trong yêu cầu là không được cho phép.
406 (Not acceptable)
Server chỉ có thể tạo một phản hồi mà không được chấp nhận bởi Client.
407 (Proxy authentication required)
Yêu cầu client phải xác thực sử dụng một proxy. Khi máy chủ trả về phản hồi này, nó cũng chỉ ra proxy mà người yêu cầu phải sử dụng.
408 (Request timeout)
Request tốn thời gian dài hơn thời gian Server phản hồi
409 (Conflict)
Các máy chủ gặp phải một cuộc xung đột thực hiện yêu cầu. Các máy chủ phải bao gồm thông tin về các cuộc xung đột trong các phản ứng. Máy chủ có thể trả về mã này để đáp ứng với yêu cầu PUT xung đột với yêu cầu trước đó, cùng với một danh sách các sự khác biệt giữa các yêu cầu.
410 (Gone)
Các máy chủ trả về phản hồi này khi các nguồn tài nguyên yêu cầu đã bị loại bỏ vĩnh viễn. Nó tương tự như một 404 (Không tìm thấy) mã, nhưng đôi khi được sử dụng ở vị trí của một 404 cho nguồn lực được sử dụng để tồn tại nhưng không còn làm. Nếu tài nguyên đã di chuyển vĩnh viễn, bạn nên sử dụng một 301 để xác định vị trí mới của tài nguyên.
411 (Length required)
Content-Length không được xác định rõ. Server sẽ không chấp nhận yêu cầu mà không có nó
412 (Precondition failed)
Các máy chủ không đáp ứng một trong các điều kiện tiên quyết mà người yêu cầu đưa vào yêu cầu.
413 (Request entity too large)
Máy chủ không thể xử lý yêu cầu bởi vì nó là quá lớn đối với các máy chủ để xử lý.
414 (Requested URI is too long)
URI yêu cầu (thường là một URL) là quá dài đối với máy chủ để xử lý.
416 (Requested range not satisfiable)
Máy chủ trả về mã trạng thái này nếu yêu cầu cho một phạm vi không có sẵn cho trang.
417 (Expectation failed)
Máy chủ không thể đáp ứng yêu cầu của các trường yêu cầu, tiêu đề mong đợi.
5xx: Lỗi Server
Nó nghĩa là Server thất bại với việc thực hiện một yêu cầu nhìn như có vẻ khả thi.
500 (Internal server error)
Các máy chủ gặp lỗi và không thể thực hiện yêu cầu.
501 (Not implemented)
Các máy chủ không có các chức năng để thực hiện yêu cầu. Ví dụ, máy chủ có thể trả về mã này khi nó không nhận ra phương thức yêu cầu.
502 (Bad gateway)
Các máy chủ đã hoạt động như một gateway hoặc proxy và nhận được một phản ứng không hợp lệ từ máy chủ ngược.
503 (Service unavailable)
Máy chủ hiện không có sẵn (vì nó bị quá tải hoặc xuống để bảo trì). Nói chung, đây là một trạng thái tạm thời.
504 (Gateway timeout)
Các máy chủ đã hoạt động như một gateway hoặc proxy và đã không nhận được yêu cầu kịp thời từ máy chủ ngược.
505 (HTTP version not supported)
Các máy chủ không hỗ trợ phiên bản giao thức HTTP được sử dụng trong yêu cầu.
Sau đây là danh sách tất cả các mã trạng thái HTTP được liệt kê theo tài liệu giao thức HTTP của trang w3c
HTTP Response Header Fields
Các trường Header phản hồi cho phép Server truyền thông tin thêm về phản hồi mà không thể được đặt trong dòng Status-Line. Những trường Header này cung cấp thông tin về Server và về truy cập từ xa tới nguồn được xác định bởi Request-URI:
response-header = Accept-Ranges;
| Age ;
| ETag ;
| Location;
| Proxy-Authenticate;
| Retry-After;
| Server ;
| Vary ;
| WWW-Authenticate;
HTTP CACHING
Encrypted connections
Có 2 cách phổ biến mã hóa kết nối HTTP là HTTP secure (viết tắt HTTPS = HTTP + SSL) hoặc kết hợp HTTP và Transport Layer Securerity (TLS)
Liên quan
Tham khảo
- ^ Fielding, Roy T.; Gettys, James; Mogul, Jeffrey C.; Nielsen, Henrik Frystyk; Masinter, Larry; Leach, Paul J.; Berners-Lee, Tim (June 1999). Hypertext Transfer Protocol – HTTP/1.1. IETF. RFC 2616. https://tools.ietf.org/html/rfc2616.
- ^ “Can I use... Support tables for HTML5, CSS3, etc”. caniuse.com. Truy cập ngày 2 tháng 6 năm 2020.
- ^ “Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension”. IETF. tháng 7 năm 2014. RFC 7301.
- ^ Belshe, M.; Peon, R.; Thomson, M. “Hypertext Transfer Protocol Version 2, Use of TLS Features”. Bản gốc lưu trữ ngày 15 tháng 7 năm 2013. Truy cập ngày 10 tháng 2 năm 2015. Đã bỏ qua tham số không rõ
|dead-url=
(gợi ý|url-status=
) (trợ giúp) - ^ Benjamin, David. “Using TLS 1.3 with HTTP/2”. tools.ietf.org (bằng tiếng Anh). Truy cập ngày 2 tháng 6 năm 2020.
This lowers the barrier for deploying TLS 1.3, a major security improvement over TLS 1.2.
- ^ Bishop, Mike (9 tháng 7 năm 2019). “Hypertext Transfer Protocol Version 3 (HTTP/3)”. tools.ietf.org (bằng tiếng Anh). draft-ietf-quic-http-22. Truy cập ngày 16 tháng 8 năm 2019.
- ^ Cimpanu, Catalin. “HTTP-over-QUIC to be renamed HTTP/3 | ZDNet”. ZDNet (bằng tiếng Anh). Truy cập ngày 19 tháng 11 năm 2018.
- ^ Cimpanu, Catalin (26 tháng 9 năm 2019). “Cloudflare, Google Chrome, and Firefox add HTTP/3 support”. ZDNet. Truy cập ngày 27 tháng 9 năm 2019.
- ^ “HTTP/3: the past, the present, and the future”. The Cloudflare Blog (bằng tiếng Anh). 26 tháng 9 năm 2019. Truy cập ngày 30 tháng 10 năm 2019.
- ^ “Firefox Nightly supports HTTP 3 - General - Cloudflare Community”. 19 tháng 11 năm 2019. Truy cập ngày 23 tháng 1 năm 2020.
- ^ a b “RFC 1945”.
Liên kết ngoài
Wikimedia Commons có thêm hình ảnh và phương tiện truyền tải về Hypertext Transfer Protocol. |
- HTTP Protocol w3c.org. Liên kết: https://www.w3.org/Protocols/
- Hypertext Transfer Protocol wikipedia https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
- Bản RFC 2616 https://tools.ietf.org/html/rfc2616