跳转到内容

HTTP:修订间差异

轻之舟百科,让知识轻装启航
云云​(留言 | 贡献)
小 云云移动页面超文本传输协议至HTTP
IdleTap-bot​(留言 | 贡献)
由旧格式Infobox转换为新参数格式(label/data),修复空信息框(由IdleTap-bot执行)
 
(未显示另一用户的1个中间版本)
第1行: 第1行:
{{Infobox|标题=HTTP|内容={{!}}-
{{Infobox
! 中文名
| title = HTTP
{{!}} 超文本传输协议
 
{{!}}-
| label1 = 中文名
! 外文名
| data1 = 超文本传输协议
{{!}} HTTP
 
{{!}}-
| label2 = 外文名
! 工作层
| data2 = HTTP
{{!}} 应用层
 
{{!}}-
| label3 = 工作层
! 基础
| data3 = 应用层
{{!}} 架构于TCP之上(HTTP/3基于QUIC)
 
{{!}}-
| label4 = 基础
! 适用浏览器
| data4 = 架构于TCP之上(HTTP/3基于QUIC)
{{!}} Firefox、Google Chrome等
 
{{!}}-
| label5 = 适用浏览器
! 作用
| data5 = Firefox、Google Chrome等
{{!}} 规定WWW服务器与浏览器之间信息传递规范}}
 
| 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" />。
[[万维网]]([[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、nginx 等,客户端实现主要是Web浏览器,例如 Firefox、[[Google]] Chrome 等<ref name="mdn">[https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview MDN Web Docs - HTTP Overview]</ref>。
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`方法加资源路径组成,响应只包含HTML文件本身,无HTTP标头和状态码<ref name="rfc1945">[https://tools.ietf.org/html/rfc1945 RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0](见附录中对早期版本的说明)</ref>。
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`支持,使得协议可扩展并能传输多种文档类型。但每个请求仍需新建TCP连接。
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等方法、扩展状态码、断点续传、支持TLS以及引入Host请求头以支持同一IP上的多域名服务。
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采用请求/响应模型。客户端向服务器发送请求,包含请求方法、URL、协议版本及请求头等;服务器处理后返回响应,包含协议版本、状态码(如200)、原因短语、响应首部字段及实体主体<ref name="rfc7230" />。
HTTP采用请求/响应模型。客户端向服务器发送请求,包含请求方法、[[URL]]、协议版本及请求头等;服务器处理后返回响应,包含协议版本、状态码(如200)、原因短语、响应首部字段及实体主体<ref name="rfc7230" />。


== 报文格式 ==
== 报文格式 ==

2026年8月11日 (二) 10:16的最新版本

HTTP
中文名超文本传输协议
外文名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(服务器错误):服务器在处理请求时发生错误。

参考文献

[编辑 | 编辑源代码]