思维导图分析http之http协议版本

1.结构总览

  wKioL1kyuazTOXDFAABFCiDhnU0272.png

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

2.http协议版本

wKiom1kyumOy55t4AAAhzZljj44537.png

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

wKiom1kyvALTOwIwAACB_MQAMRg571.png

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

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

wKioL1kyvXrTnyG9AABEuFqPHtw111.png

  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://www.mzph.cn/news/392161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用管道符组合使用命令_如何使用管道的魔力

使用管道符组合使用命令Surely you have heard of pipelines or ETL (Extract Transform Load), or seen some method in a library, or even heard of any tool to create pipelines. However, you aren’t using it yet. So, let me introduce you to the fantastic world of…

C# new关键字和对象类型转换(双括号、is操作符、as操作符)

一、new关键字 CLR要求所有的对象都通过new来创建,代码如下: Object objnew Object(); 以下是new操作符做的事情 1、计算类型及其所有基类型(一直到System.Object,虽然它没有定义自己的实例字段)中定义的所有实例字段需要的字节数.堆上每个对象都需要一些额外的成员,包括“类型…

JDBC01 利用JDBC连接数据库【不使用数据库连接池】

目录&#xff1a; 1 什么是JDBC 2 JDBC主要接口 3 JDBC编程步骤【学渣版本】 5 JDBC编程步骤【学神版本】 6 JDBC编程步骤【学霸版本】 1 什么是JDBC JDBC是JAVA提供的一套标准连接数据库的接口&#xff0c;规定了连接数据库的步骤和功能&#xff1b;不同的数据库提供商提供了一…

编译原理—词法分析器(Java)

1.当运行程序时&#xff0c;程序会读取项目下的program.txt文件 2. 程序将会逐行读取program.txt中的源程序&#xff0c;进行词法分析&#xff0c;并将分析的结果输出。 3. 如果发现错误&#xff0c;程序将会中止读取文件进行分析&#xff0c;并输出错误提示 所用单词的构词规…

为什么我们需要使用Pandas新字符串Dtype代替文本数据对象

We have to represent every bit of data in numerical values to be processed and analyzed by machine learning and deep learning models. However, strings do not usually come in a nice and clean format and require a lot preprocessing.我们必须以数值表示数据的每…

递归方程组解的渐进阶的求法——代入法

递归方程组解的渐进阶的求法——代入法 用这个办法既可估计上界也可估计下界。如前面所指出&#xff0c;方法的关键步骤在于预先对解答作出推测&#xff0c;然后用数学归纳法证明推测的正确性。 例如&#xff0c;我们要估计T(n)的上界&#xff0c;T(n)满足递归方程&#xff1a;…

编译原理—语法分析器(Java)

递归下降语法分析 1. 语法成分说明 <语句块> :: begin<语句串> end <语句串> :: <语句>{&#xff1b;<语句>} <语句> :: <赋值语句> | <循环语句> | <条件语句> <关系运算符> :: < | < | > | > | |…

编译原理—语义分析(Java)

递归下降语法制导翻译 实现含多条简单赋值语句的简化语言的语义分析和中间代码生成。 测试样例 begin a:2; b:4; c:c-1; area:3.14*a*a; s:2*3.1416*r*(hr); end #词法分析 public class analyzer {public static List<String> llistnew ArrayList<>();static …

linux boot菜单列表,Bootstrap 下拉菜单(Dropdowns)简介

Bootstrap 下拉菜单是可切换的&#xff0c;是以列表格式显示链接的上下文菜单。这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现。如需使用下拉菜单&#xff0c;只需要在 class .dropdown 内加上下拉菜单即可。下面的实例演示了基本的下拉菜单&#xff1a;实例主…

数据挖掘—Apriori算法(Java实现)

算法描述 &#xff08;1&#xff09;扫描全部数据&#xff0c;产生候选1-项集的集合C1&#xff1b; &#xff08;2&#xff09;根据最小支持度&#xff0c;由候选1-项集的集合C1产生频繁1-项集的集合L1&#xff1b; &#xff08;3&#xff09;对k>1&#xff0c;重复执行步骤…

泰晤士报下载_《泰晤士报》和《星期日泰晤士报》新闻编辑室中具有指标的冒险活动-第1部分:问题

泰晤士报下载TLDR: Designing metrics that help you make better decisions is hard. In The Times and The Sunday Times newsrooms, we have spent a lot of time trying to tackle three particular problems.TLDR &#xff1a;设计度量标准以帮助您做出更好的决策非常困难…

背景消除的魔力

图片的功能非常强大&#xff0c;有一图胜千言的效果&#xff0c;所以在文档或演示文稿中使用图片来增加趣味性是一种很棒的想法。但问题是&#xff0c;图片通常会变为文字中间的独立矩形&#xff0c;而不是真正与内容融合在一起。您可以在图片中放置边框或效果&#xff0c;使其…

数据挖掘—BP神经网络(Java实现)

public class Test {public static void main(String args[]) throws Exception {ArrayList<ArrayList<Double>> alllist new ArrayList<ArrayList<Double>>(); // 存放所有数据ArrayList<String> outlist new ArrayList<String>(); // …

特征工程tf-idf_特征工程-保留和删除的内容

特征工程tf-idfThe next step after exploring the patterns in data is feature engineering. Any operation performed on the features/columns which could help us in making a prediction from the data could be termed as Feature Engineering. This would include the…

monkey测试===通过monkey测试检查app内存泄漏和cpu占用

最近一直在研究monkey测试。网上资料很多&#xff0c;但都是一个抄一个的。原创的很少 我把检查app内存泄漏的情况梳理一下&#xff1a; 参考资料&#xff1a; Monkey测试策略&#xff1a;https://testerhome.com/topics/597 Android Monkey测试详细介绍&#xff1a;http://www…

三维空间两直线/线段最短距离、线段计算算法 【转】

https://segmentfault.com/a/1190000006111226d(ls,lt)|sj−tj||s0−t0(be−cd)u⃗ −(ae−bd)v⃗ ac−bd(ls,lt)|sj−tj||s0−t0(be−cd)u⃗ −(ae−bd)v⃗ ac−b2|具体实现代码如下&#xff08;C#实现&#xff09;&#xff1a; public bool IsEqual(double d1, double d2) { …

iOS绘圆形图-CGContextAddArc各参数说明

2019独角兽企业重金招聘Python工程师标准>>> 1.使用 UIGraphicsGetCurrentContext() 画圆 CGContextAddArc(<#CGContextRef _Nullable c#>, <#CGFloat x#>, <#CGFloat y#>, <#CGFloat radius#>, <#CGFloat startAngle#>, <#CGFlo…

[收藏转载]C# GDI+ 简单绘图(一)

最近对GDI这个东西接触的比较多&#xff0c;也做了些简单的实例&#xff0c;比如绘图板&#xff0c;仿QQ截图等&#xff0e; 废话不多说了&#xff0c;我们先来认识一下这个GDI&#xff0c;看看它到底长什么样. GDI&#xff1a;Graphics Device Interface Plus也就是图形设备接…

mybaties总结+hibernate总结

一、对原生态jdbc程序中问题总结 1.1 jdbc程序 需求&#xff1a;使用jdbc查询mysql数据库中用户表的记录 statement:向数据库中发送一个sql语句 预编译statement&#xff1a;好处&#xff1a;提高数据库性能。 预编译statement向数据库中发送一个sql语句&#xff0c;数据库编译…

Python14 函数

函数 面向对象编程&#xff1a; 类----class 面向过程编程&#xff1a;过程---def 函数式编程&#xff1a;函数---def def test(x):描述x 1return x#def是定义函数的关键字#test是函数名称#&#xff08;x&#xff09;是参数#x1是 函数体&#xff0c;是一段逻辑代码#return 定义…