博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
思维导图分析http之http协议版本
阅读量:6250 次
发布时间:2019-06-22

本文共 1789 字,大约阅读时间需要 5 分钟。

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,如需转载请自行联系原作者

你可能感兴趣的文章
我的友情链接
查看>>
TCP/UDP Socket编程步骤
查看>>
RabbitMQ与PHP
查看>>
内存对齐模式与结构体
查看>>
最大子数组和
查看>>
fir.im Weekly - 聊聊让人向往的远程开发工作
查看>>
give root password for maintenance错误解决办法!
查看>>
web 应用的常见 漏洞有哪些
查看>>
linux sort
查看>>
Find命令使用详解
查看>>
CentOS7安装mysql5.7.16后,第一次登陆的默认密码
查看>>
学习之linux下cal,ls
查看>>
nfs
查看>>
Psexec 远程执行文件 提示 拒绝访问
查看>>
我的友情链接
查看>>
ibdata1是什么?
查看>>
IT十八掌作业_java基础第十三天_IO
查看>>
ocfs2_inode_lock_full_nested()
查看>>
我的友情链接
查看>>
iOS原生条形码扫描
查看>>