1.结构总览

  

  在http协议这一章,我将先后介绍上图六个部分,本文先介绍http的协议版本。

2.http协议版本

http协议的历史并不长,从1991的0.9版本到现在(2017)仅仅才20多年,算算下来,http还是正处青年,正是大好发展的好时光。虽然短短不到27年,却改变了人类认识世界的方式。在这里,必须给伟大的先贤们鞠躬致敬。

0.9版本功能十分简单,仅仅一个get功能,get翻译过来就是获得,在这里指获取资源。因为功能简陋,自然得不到很大的应用,所以在五年之后发布了新的版本1.0。

1.0版本内容丰富,增加了很多的功能。get获取资源,post发送资源,head保存了资源的首部信息。多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,支持多媒体数据传送,极大了丰富了http协议。

http1.0版本请求格式形如这样:

1
2
3
    GET / HTTP/1.0
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
    Accept: */*

回应格式形如这样:

1
2
3
4
5
6
7
8
9
    HTTP/1.0 200 OK 
    Content-Type: text/plain
    Content-Length: 137582
    Expires: Thu, 05 Dec 1997 16:00:00 GMT
    Last-Modified: Wed, 5 August 1996 15:55:28 GMT
    Server: Apache 0.84    
    <html>
      <body>Hello World</body>
    </html>

尽管http1.0功能已经十分强大,但仍然还有缺点。每个TCP连接只能发送一个请求,因此TCP连接的新建成本很高,效率低下,因此后来引入了keep-alive机制,即持久连接。简单理解,即长时间连接不间断。

http1.0功能十分强大,因此加大了人们对http协议的依赖,有了广泛的应用与观众的掌声,http协议的研发人员像是打了鸡血一般,仅仅时隔半年版就发布了http1.1。人们常说慢工出细活,对不起,在这不适用。在这里更像是时间的浓缩的产品就是精华。http1.1功能更为强大,以至于到今天还在应用。

http1.1协议的优点如下:

1
2
3
4
5
6
    1.增强了缓存功能,目前流行版本
    2.引入了持久连接(persistent connection)
    3.引入了管道机制(pipelining),客户端可以同时发送多个请求。
    4.引入Content-Length字段,标记内容长度
    5.引入分块传输编码,极大增加了传输的速度
    6.更丰富的method:GET, POST, HEAD,PUT, DELETE,TRACE, OPTIONS,HOST

http1.1的数据按次序通信,有队头堵塞问题。阻塞了自然要疏通,疏通的常见方式有两种:

1
2
    1.减少请求数
    2.同时多开持久连接

减少请求数很好理解,不再啰嗦。多开持久连接,本质上也是减少请求数,规避不必要的去频繁断开。因这两种方式,由此产生了很多解决技巧,技巧有如下:

1
2
3
    1.合并脚本和样式表,
    2.将图片嵌入CSS代码
    3.域名分片(domain sharding)

基于效率以及安全的考虑,http2强势登场。http2的前身是google公司的SPDY协议,SPDY协议非常强大,http研发工程师,自感亚历山大,所以又火急火燎地研发除了http2协议。http2有如下特点:

1
2
3
4
5
6
    1.前身:SPDY 协议(google)
    2.彻底的二进制协议,头信息和数据体都是二进制,效率提升,加大安全
    3.多路复用(MultiPlexing),即连接共享,规避队头堵塞
    4.数据流传输,增加传输效率
    5.头信息压缩,减小了传输的大小
    6.服务器推送

至此,http协议版本介绍完毕,感谢观赏,下一节介绍一次完整的http请求过程。

本文转自 PowerMichael 51CTO博客,原文链接:http://blog.51cto.com/huwho/1931998,如需转载请自行联系原作者

思维导图分析http之http协议版本相关推荐

  1. 思维导图分析http之前端组成

    思维导图分析http前端组成 全文总览 本文分为三个部分:前端组成,http协议,http服务器应用程序.http的应用按照我自己的理解分为前端应用以及后端应用,所以我分别写了前端组成以及http服务 ...

  2. ce 扫雷实验报告,棋盘布局,雷数,笑脸,计时器内存地址,思维导图分析

    ce 扫雷实验报告,棋盘布局,雷数,笑脸,计时器内存地址,思维导图分析.. 如果有帮到大家,哥哥姐姐不要吝啬点个关注呗!后续会更新更多其他有关汇编,逆向和web的实操超详细解析.谢谢大家! 目录 一. ...

  3. 如何通过思维导图分析问题的6款优秀模板鉴赏

    "创新从模仿开始",要画好思维导图,就要多赏析模仿一些优秀的思维导图模板.接下来列举了一些我在日常工作生活中经常使用的优秀思维导图模板,大家一起来模仿学习吧! 1.六顶思考帽 从名 ...

  4. 用思维导图分析代码(arduino用WEB网页-输入WIFI名与密码 )让初学者轻松搞懂程序的运作流程。

    学习和使用ESP8266,在ardoinoIDE写程序一个多月了. 刚开始看代码时,由于水平比较低, 分析代码比较难, 所以,在一边学习时,一边用思维导图去分析代码. 分析完,感觉思路有些清晰, 希望 ...

  5. 【精益生产】用思维导图分析精益生产体系,完整科学

    精益生产的实质是管理过程,包括人事组织管理的优化,大力精简中间管理层,进行组织扁平化改革,减少非直接生产人员:推进行生产均衡化同步化,实现零库存与柔性生产:推行全生产过程(包括整个供应链)的质量保证体 ...

  6. 22款 思维导图软件开源软件

    思维导图软件 XMind XMind是一款同样开源且跨平台的思维导图软件,XMind 在功能上一点也不逊色于 FreeMind,某些方面,XMind 甚至更加具有优势.XMind 支持中文简繁体. X ...

  7. 计量经济学及stata应用思维导图_小学毕业数学重点考点,火车过桥应用题,用思维导图轻松掌握...

    行程问题一直是小学毕业考试热门考点.其中涉及题型变化很多,如相遇问题.追击问题.火车过桥问题等,每一大类下面还有很多不同出题方式,导致整个知识点失分率一直很高. 更重要的是,在很多重要考试中都用这个知 ...

  8. 思维导图如何助力营销策划

    思维导图的运用相当广泛,它帮助人们开拓思维,捕捉灵感,用来进行营销策划再适合不过了.通过思维导图的激发思维,会发现颠覆传统思维的商业运用,包括商业盈利模式模块.爆引利润模块.开发客户模块.营销推广模块 ...

  9. 排列组合思维导图_思维导图:进阶高效能人士的思维工具

    你记录信息的方式越贴近大脑自然的工作方式,你的大脑就越能高效地触发对关键信息的记忆和理解效率.--<思维导图>作者东尼·博赞 信息爆炸的时代,精简思考是进阶高效能人士的一项必备技能.思维导 ...

最新文章

  1. 高产来自“长期主义”:智源学者朱军谈ICLR 2020 全球发文第二的经验法则
  2. 中国半导体硅片行业未来发展趋势与销售规模预测报告2022版
  3. boost::graph模块实现拉马努金图的周长和直径的测试程序
  4. javaweb学习总结(十八)——JSP属性范围
  5. jquery find 找到frame select_简述jQuery
  6. 创建一个对象时,在一个类当中 静态代码块 和普通代码块构造方法 的顺序?
  7. 场效应管原理_场效应管——不就是一个电控开关?
  8. MVVM js 库JsRender/JsViews和knockoutjs介绍
  9. 欧若拉用计算机谱子,欧若拉简谱
  10. WebView下载点击无反应问题
  11. u盘拷文件提示文件过大怎么办
  12. UDP如何实现可靠性传输
  13. python evn安装模块pip
  14. python stdin.write_向stdin写入大量数据
  15. Django——创建数据库和表
  16. EmEditor,如何开启显示制表符
  17. EasyRecovery最新版本Photo16电脑数据恢复软件下载
  18. JavaSE阶段笔记
  19. 电脑管家用户的bandizip右键解压选项启用
  20. 【pygame学习+实战】第一篇:游戏最小系统

热门文章

  1. java 方法 示例_Java集合syncedSortedSet()方法与示例
  2. JAVA JDK环境渲染
  3. 远控免杀专题8---BackDoor-Facktory免杀
  4. vm磁盘映射 不能启动_Oracle的启动与关闭-数据库(4)
  5. pandas 根据单号分类_由 “猫捉老鼠”游戏联想的用户分类问题
  6. 软件工程学习笔记《四》需求分析
  7. c++中this指针基本概念和使用
  8. 比较ArrayList和数组的区别
  9. 树莓派第一次开机自动连接WIFI(不用显示屏方法)
  10. 海量数据处理 (一)