浏览器工作原理与实践
李兵
前盛大创新院高级研究员
56402 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
浏览器工作原理与实践
15
15
1.0x
00:00/00:00
登录|注册

29 | HTTP/1:HTTP性能优化

客户端Cookie、安全机制
对动态生成的内容提供了完美支持
提供虚拟主机的支持
不成熟的HTTP管线化
改进持久连接
新特性
请求头和响应头
多种文件下载支持
诞生背景
请求流程
特点
诞生背景
思考时间
HTTP/1.1
HTTP/1.0
HTTP/0.9
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
立即购买
登录 后留言

全部留言(31)

  • 最新
  • 精选
  • lee
    ”目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接“,那就是如果浏览器同时请求n个不同域名的后台服务器,那就是允许同时建立n * 6 个TCP持久连接吗?

    作者回复: 是的

    2019-11-21
    3
    9
  • 月翎魂雨
    文中“目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接”,看老师画的图是一个tcp持久链接有6个请求的意思吧。而且前面第03章文中“同一个域名同时最多只能建立 6 个 TCP 连接,如果在同一个域名下同时有 10 个请求发生,那么其中 4 个请求会进入排队等待状态”。所以我就很迷糊了,这个请求数和tcp链接关系到底是啥?

    作者回复: http/1.1中的一个tcp链接同时只能发起一个http请求! 浏览器会让每个域名同时最多建立6个tcp链接,也就是说同一个域名同时能支持6个http请求!

    2019-11-12
    3
    7
  • 童欧巴
    李兵老师,想问您画图用的什么软件呢?

    作者回复: mac自带的keynote

    2019-10-21
    2
    2
  • Geek_07b5b0
    感谢李兵老师,我今天实习面试用到了很多从这个课程中学到的东西,人生第一次面试,给了我很大鼓励!
    2019-10-10
    5
    75
  • mfist
    1对头阻塞问题,没有解决 2文本传输效率问题,而且不安全 3header中每次都传输类似头,增加了传输成本
    2019-10-11
    1
    43
  • 对于 队头阻塞问题,只要传输层是TCP,就不会得到根本上的解决, http/2 利用流的的机制很大程度的缓解了这个问题,http/3 传输层换成了 UDP 才彻底解决这个问题
    2019-10-22
    40
  • 大蓝
    学的时候不曾感觉,学完一个月,会发现这个课程带给我一个知识树这样子的知识结构,感谢! 我现在又回来继续看看知识哪里遗漏的
    2020-03-16
    17
  • 君自兰芳
    “目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接” 我又有个疑问了⊙∀⊙!,每个TCP发送请求的数量有上限吗?上限是多少? 什么时候需要开启一个新的TCP连接?什么情况下可以关闭一个TCP连接?
    2020-11-12
    5
    4
  • 大可
    作为一名后端 觉得老师把浏览器讲的很明白
    2021-04-28
    3
  • 墨杰
    上传文件给服务器的HTTP请求和其它请求有什么不一样?如何获取当前上传文件的文件名?谢谢!
    2019-10-11
    4
    3
收起评论
显示
设置
留言
31
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部