29 | HTTP/1:HTTP性能优化
李兵
该思维导图由 AI 生成,仅供参考
谈及浏览器中的网络,就避不开 HTTP。我们知道 HTTP 是浏览器中最重要且使用最多的协议,是浏览器和服务器之间的通信语言,也是互联网的基石。而随着浏览器的发展,HTTP 为了能适应新的形式也在持续进化,我认为学习 HTTP 的最佳途径就是了解其发展史,所以在接下来的三篇文章中,我会从浏览器发展的视角来和你聊聊 HTTP 演进。这三篇分别是即将完成使命的 HTTP/1、正在向我们走来的 HTTP/2,以及未来的 HTTP/3。
本文主要介绍的是 HTTP/1.1,我们先讲解 HTTP/1.1 的进化史,然后再介绍在进化过程中所遇到的各种瓶颈,以及对应的解决方法。
超文本传输协议 HTTP/0.9
首先我们来看看诞生最早的 HTTP/0.9。HTTP/0.9 是于 1991 年提出的,主要用于学术交流,需求很简单——用来在网络之间传递 HTML 超文本的内容,所以被称为超文本传输协议。整体来看,它的实现也很简单,采用了基于请求响应的模式,从客户端发出请求,服务器返回数据。
下面我们就来看看 HTTP/0.9 的一个完整的请求流程(可参考下图)。
因为 HTTP 都是基于 TCP 协议的,所以客户端先要根据 IP 地址、端口和服务器建立 TCP 连接,而建立连接的过程就是 TCP 协议三次握手的过程。
建立好连接之后,会发送一个 GET 请求行的信息,如GET /index.html用来获取 index.html。
服务器接收请求信息之后,读取对应的 HTML 文件,并将数据以 ASCII 字符流返回给客户端。
HTML 文档传输完成后,断开连接。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
HTTP/1.1协议的演进历程和技术特点是本文的重点内容。从HTTP/0.9到HTTP/1.1的发展过程中,协议不断进化以满足不断迭代更新的需求。HTTP/1.0引入了请求头和响应头,支持多种类型文件的下载,并解决了多种类型文件的编码、压缩、语言版本等问题。而HTTP/1.1在此基础上做了大量更新,解决了HTTP/1.0存在的问题,如连接复用、管线化、缓存控制等,进一步提升了性能。持久连接、管线化、虚拟主机支持、动态内容支持、客户端Cookie和安全机制等都是HTTP/1.1的重要特点。尽管HTTP/1.1在HTTP/1.0的基础上做了大量的优化,但由于一些效率问题,最终被HTTP/2所取代。文章通过详细的演进史和技术特点,让读者了解了HTTP协议的发展历程和技术特点,对于理解HTTP协议的演进和性能优化具有重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《浏览器工作原理与实践》,新⼈⾸单¥59
《浏览器工作原理与实践》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(31)
- 最新
- 精选
- lee”目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接“,那就是如果浏览器同时请求n个不同域名的后台服务器,那就是允许同时建立n * 6 个TCP持久连接吗?
作者回复: 是的
2019-11-2139 - 月翎魂雨文中“目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接”,看老师画的图是一个tcp持久链接有6个请求的意思吧。而且前面第03章文中“同一个域名同时最多只能建立 6 个 TCP 连接,如果在同一个域名下同时有 10 个请求发生,那么其中 4 个请求会进入排队等待状态”。所以我就很迷糊了,这个请求数和tcp链接关系到底是啥?
作者回复: http/1.1中的一个tcp链接同时只能发起一个http请求! 浏览器会让每个域名同时最多建立6个tcp链接,也就是说同一个域名同时能支持6个http请求!
2019-11-1237 - 童欧巴李兵老师,想问您画图用的什么软件呢?
作者回复: mac自带的keynote
2019-10-2122 - Geek_07b5b0感谢李兵老师,我今天实习面试用到了很多从这个课程中学到的东西,人生第一次面试,给了我很大鼓励!2019-10-10575
- mfist1对头阻塞问题,没有解决 2文本传输效率问题,而且不安全 3header中每次都传输类似头,增加了传输成本2019-10-11143
- 奕对于 队头阻塞问题,只要传输层是TCP,就不会得到根本上的解决, http/2 利用流的的机制很大程度的缓解了这个问题,http/3 传输层换成了 UDP 才彻底解决这个问题2019-10-2240
- 大蓝学的时候不曾感觉,学完一个月,会发现这个课程带给我一个知识树这样子的知识结构,感谢! 我现在又回来继续看看知识哪里遗漏的2020-03-1617
- 君自兰芳“目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接” 我又有个疑问了⊙∀⊙!,每个TCP发送请求的数量有上限吗?上限是多少? 什么时候需要开启一个新的TCP连接?什么情况下可以关闭一个TCP连接?2020-11-1254
- 大可作为一名后端 觉得老师把浏览器讲的很明白2021-04-283
- 墨杰上传文件给服务器的HTTP请求和其它请求有什么不一样?如何获取当前上传文件的文件名?谢谢!2019-10-1143
收起评论