HTTP:修订间差异
创建页面,内容为“{{Infobox|标题=HTTP|内容={{!}}- ! 中文名 {{!}} 超文本传输协议 {{!}}- ! 外文名 {{!}} HTTP {{!}}- ! 工作层 {{!}} 应用层 {{!}}- ! 基础 {{!}} 架构于TCP之上(HTTP/3基于QUIC) {{!}}- ! 适用浏览器 {{!}} Firefox、Google Chrome等 {{!}}- ! 作用 {{!}} 规定WWW服务器与浏览器之间信息传递规范}} == 简介 == 万维网(WWW)发源于欧洲日内瓦的欧洲核子研究组织(CERN)。1990年…” |
IdleTap-bot(留言 | 贡献) 由旧格式Infobox转换为新参数格式(label/data),修复空信息框(由IdleTap-bot执行) |
||
| (未显示2个用户的2个中间版本) | |||
| 第1行: | 第1行: | ||
{{Infobox| | {{Infobox | ||
| title = HTTP | |||
| label1 = 中文名 | |||
| data1 = 超文本传输协议 | |||
| label2 = 外文名 | |||
| data2 = HTTP | |||
| label3 = 工作层 | |||
| data3 = 应用层 | |||
| label4 = 基础 | |||
| data4 = 架构于TCP之上(HTTP/3基于QUIC) | |||
| label5 = 适用浏览器 | |||
| data5 = Firefox、Google Chrome等 | |||
| label6 = 作用 | |||
| data6 = 规定WWW服务器与浏览器之间信息传递规范 | |||
}} | |||
== 简介 == | == 简介 == | ||
[[万维网]]([[WWW]])发源于欧洲日内瓦的欧洲核子研究组织([[CERN]])。1990年,HTTP成为WWW的支撑协议,当时由其创始人蒂姆·伯纳斯‑李提出<ref name="tim">[https://www.w3.org/People/Berners-Lee/ Tim Berners‑Lee's original proposal]</ref>。随后,[[W3C|万维网联盟(W3C)]]成立,并联合[[互联网]]工程任务组(IETF)进一步完善和发布HTTP标准<ref name="w3c" />。 | |||
HTTP是一种协议规范,记录于文档中,为实际通信程序提供标准。服务器端实现有 httpd | HTTP是一种协议规范,记录于文档中,为实际通信程序提供标准。[[服务器]]端实现有 httpd、[[nginx]] 等,客户端实现主要是Web[[浏览器]],例如 [[Firefox]]、[[Google]] [[Chrome]] 等<ref name="mdn">[https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview MDN Web Docs - HTTP Overview]</ref>。 | ||
== 发展历史 == | == 发展历史 == | ||
| 第27行: | 第30行: | ||
=== HTTP/0.9 === | === HTTP/0.9 === | ||
HTTP的初始版本(后称0.9)于1991年发布。请求仅由一行`GET`方法加资源路径组成,响应只包 | HTTP的初始版本(后称0.9)于1991年发布。请求仅由一行`GET`方法加资源路径组成,响应只包含[[HTML]]文件本身,无HTTP标头和状态码<ref name="rfc1945">[https://tools.ietf.org/html/rfc1945 RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0](见附录中对早期版本的说明)</ref>。 | ||
=== HTTP/1.0 === | === HTTP/1.0 === | ||
HTTP/1.0于1996年作为RFC 1945正式发布<ref name="rfc1945" />。相比0.9版本,它引入了版本信息、状态码行、HTTP标头以及`Content-Type`支持,使得协议可扩展并能传输多种文档类型。但每个请求仍需新 | HTTP/1.0于1996年作为RFC 1945正式发布<ref name="rfc1945" />。相比0.9版本,它引入了版本信息、状态码行、HTTP标头以及`Content-Type`支持,使得协议可扩展并能传输多种文档类型。但每个请求仍需新建[[TCP]]连接。 | ||
=== HTTP/1.1 === | === HTTP/1.1 === | ||
HTTP/1.1于1997年发布(RFC 2068,后由RFC 2616取代,现为RFC 7230系列)<ref name="rfc2616">[https://tools.ietf.org/html/rfc2616 RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1]</ref><ref name="rfc7230">[https://tools.ietf.org/html/rfc7230 RFC 7230 - HTTP/1.1 Message Syntax and Routing]</ref>。主要改进包括持久连接、新增PUT/PATCH/OPTIONS/DELETE等方法、扩展状态码、断点续传、支 | HTTP/1.1于1997年发布(RFC 2068,后由RFC 2616取代,现为RFC 7230系列)<ref name="rfc2616">[https://tools.ietf.org/html/rfc2616 RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1]</ref><ref name="rfc7230">[https://tools.ietf.org/html/rfc7230 RFC 7230 - HTTP/1.1 Message Syntax and Routing]</ref>。主要改进包括持久连接、新增PUT/PATCH/OPTIONS/DELETE等方法、扩展状态码、断点续传、支持[[TLS]]以及引入Host请求头以支持同一IP上的多域名服务。 | ||
=== HTTP/2 === | === HTTP/2 === | ||
HTTP/2于2015年发布(RFC 7540,现为RFC 9113互联网标准)<ref name="rfc7540">[https://tools.ietf.org/html/rfc7540 RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)]</ref><ref name="rfc9113">[https://tools.ietf.org/html/rfc9113 RFC 9113 - HTTP/2]</ref>。它采用二进制分帧层,取代了之前的纯文本格式,显著提高了页面加载性能。 | HTTP/2于2015年发布(RFC 7540,现为RFC 9113互联网标准)<ref name="rfc7540">[https://tools.ietf.org/html/rfc7540 RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)]</ref><ref name="rfc9113">[https://tools.ietf.org/html/rfc9113 RFC 9113 - HTTP/2]</ref>。它采用[[二进制]]分帧层,取代了之前的纯[[文本]]格式,显著提高了页面加载性能。 | ||
=== HTTP/3 === | === HTTP/3 === | ||
| 第42行: | 第45行: | ||
== 工作原理 == | == 工作原理 == | ||
HTTP采用请求/响应模型。客户端向服务器发送请求,包含请求方法 | HTTP采用请求/响应模型。客户端向服务器发送请求,包含请求方法、[[URL]]、协议版本及请求头等;服务器处理后返回响应,包含协议版本、状态码(如200)、原因短语、响应首部字段及实体主体<ref name="rfc7230" />。 | ||
== 报文格式 == | == 报文格式 == | ||
2026年8月11日 (二) 10:16的最新版本
| 中文名 | 超文本传输协议 |
|---|---|
| 外文名 | HTTP |
| 工作层 | 应用层 |
| 基础 | 架构于TCP之上(HTTP/3基于QUIC) |
| 适用浏览器 | Firefox、Google Chrome等 |
| 作用 | 规定WWW服务器与浏览器之间信息传递规范 |
万维网(WWW)发源于欧洲日内瓦的欧洲核子研究组织(CERN)。1990年,HTTP成为WWW的支撑协议,当时由其创始人蒂姆·伯纳斯‑李提出[1]。随后,万维网联盟(W3C)成立,并联合互联网工程任务组(IETF)进一步完善和发布HTTP标准[2]。
HTTP是一种协议规范,记录于文档中,为实际通信程序提供标准。服务器端实现有 httpd、nginx 等,客户端实现主要是Web浏览器,例如 Firefox、Google Chrome 等[3]。
HTTP自诞生以来经历了多个版本的演进。
HTTP的初始版本(后称0.9)于1991年发布。请求仅由一行`GET`方法加资源路径组成,响应只包含HTML文件本身,无HTTP标头和状态码[4]。
HTTP/1.0于1996年作为RFC 1945正式发布[4]。相比0.9版本,它引入了版本信息、状态码行、HTTP标头以及`Content-Type`支持,使得协议可扩展并能传输多种文档类型。但每个请求仍需新建TCP连接。
HTTP/1.1于1997年发布(RFC 2068,后由RFC 2616取代,现为RFC 7230系列)[5][6]。主要改进包括持久连接、新增PUT/PATCH/OPTIONS/DELETE等方法、扩展状态码、断点续传、支持TLS以及引入Host请求头以支持同一IP上的多域名服务。
HTTP/2于2015年发布(RFC 7540,现为RFC 9113互联网标准)[7][8]。它采用二进制分帧层,取代了之前的纯文本格式,显著提高了页面加载性能。
HTTP/3基于QUIC协议(RFC 9114)[9],于2022年正式成为标准。它使用UDP传输,减少了连接建立时延,并已获得大多数主流浏览器支持[3]。
HTTP采用请求/响应模型。客户端向服务器发送请求,包含请求方法、URL、协议版本及请求头等;服务器处理后返回响应,包含协议版本、状态码(如200)、原因短语、响应首部字段及实体主体[6]。
HTTP请求和响应消息的首部以ASCII文本形式给出,消息内容则具有类似MIME的格式。请求报文由请求行、请求首部字段和内容实体构成;响应报文由状态行、响应首部字段和实体主体构成[6]。
HTTP状态码指示请求结果,分为五类[10]:
- 1xx(信息性):请求已接收,继续处理。
- 2xx(成功):请求已成功被服务器接收、理解并处理。
- 3xx(重定向):需进一步操作以完成请求。
- 4xx(客户端错误):请求包含语法错误或无法完成。
- 5xx(服务器错误):服务器在处理请求时发生错误。
- ↑ Tim Berners‑Lee's original proposal
- ↑ 引用错误:
<ref>标签无效;未给name(名称)为w3c的ref(参考)提供文本 - ↑ 3.0 3.1 MDN Web Docs - HTTP Overview
- ↑ 4.0 4.1 RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0(见附录中对早期版本的说明)
- ↑ RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
- ↑ 6.0 6.1 6.2 RFC 7230 - HTTP/1.1 Message Syntax and Routing
- ↑ RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)
- ↑ RFC 9113 - HTTP/2
- ↑ RFC 9114 - HTTP/3
- ↑ RFC 7231 - HTTP/1.1 Semantics and Content