跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
HTTP 1.0、HTTP 1.1 与 HTTP 2.0 的区别
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 核心特性对比 == {| class="wikitable" |- ! 特性 ! HTTP/1.0 ! HTTP/1.1 ! HTTP/2.0 |- | '''连接方式''' | 非持久连接(默认) | 持久连接(默认) | 多路复用 |- | '''头部压缩''' | 无 | 无 | HPACK压缩 |- | '''数据格式''' | 文本 | 文本 | 二进制帧 |- | '''服务器推送''' | 不支持 | 不支持 | 支持 |- | '''优先级控制''' | 无 | 有限(管道化) | 流优先级 |} === HTTP/1.0 的局限性 === * 每个请求需建立新TCP连接(高延迟)。 * 无主机头(Host header),无法支持虚拟主机。 * 无缓存控制机制。 示例请求: <syntaxhighlight lang="http"> GET /index.html HTTP/1.0 User-Agent: Mozilla/4.0 </syntaxhighlight> === HTTP/1.1 的改进 === ==== 持久连接 ==== 通过<code>Connection: keep-alive</code>(默认启用)复用TCP连接: <syntaxhighlight lang="http"> GET /page1.html HTTP/1.1 Host: example.com Connection: keep-alive GET /page2.html HTTP/1.1 Host: example.com </syntaxhighlight> ==== 管道化(Pipelining) === 客户端可连续发送多个请求(无需等待响应),但响应必须按序返回,易引发队头阻塞。 ==== 分块传输 === 通过<code>Transfer-Encoding: chunked</code>支持流式传输。 === HTTP/2.0 的革命性变化 === ==== 二进制分帧 === 将消息分解为二进制帧(Frame),例如: <mermaid> graph LR Message -->|拆分| Frame1 Message -->|拆分| Frame2 Frame1 -->|重组| Message Frame2 -->|重组| Message </mermaid> ==== 多路复用 === 单个连接上并行交错传输多个请求/响应,彻底解决队头阻塞。 ==== 头部压缩 === 使用HPACK算法压缩头部,减少冗余数据传输。压缩原理: <math> Huffman\ Encoding + \text{静态/动态字典} </math> ==== 服务器推送 === 服务器可主动推送资源(如CSS/JS),无需客户端显式请求。
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)