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
编辑HTTP的初始版本(后称0.9)于1991年发布。请求仅由一行`GET`方法加资源路径组成,响应只包含HTML文件本身,无HTTP标头和状态码[4]。
HTTP/1.0
编辑HTTP/1.0于1996年作为RFC 1945正式发布[4]。相比0.9版本,它引入了版本信息、状态码行、HTTP标头以及`Content-Type`支持,使得协议可扩展并能传输多种文档类型。但每个请求仍需新建TCP连接。
HTTP/1.1
编辑HTTP/1.1于1997年发布(RFC 2068,后由RFC 2616取代,现为RFC 7230系列)[5][6]。主要改进包括持久连接、新增PUT/PATCH/OPTIONS/DELETE等方法、扩展状态码、断点续传、支持TLS以及引入Host请求头以支持同一IP上的多域名服务。
HTTP/2
编辑HTTP/2于2015年发布(RFC 7540,现为RFC 9113互联网标准)[7][8]。它采用二进制分帧层,取代了之前的纯文本格式,显著提高了页面加载性能。
HTTP/3
编辑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