要写一个优秀的网络框架,当然少不了对 Http 协议的了解,因为Http协议是网络请求的核心。
一、Http协议的简介
1.什么是Http协议呢?
这是直接网上搜索出来的结果:超文本传输协议(HTTP,HyperText Transfer Protocol) 是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。
说白了,http 协议就算是超文本传输协议
2.Http的版本
目前(2016年11月6日23:33:31)基本都是使用 1.1 协议的,2.0 协议还没有普及,不过阿里好像已经开始使用 2.0 协议了。
其实在 Http2.0 出现之前,Google 就推出过 SPDY ,SPDY 用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY 并不是一种用于替代 HTTP 的协议,而是对 HTTP 协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及 HTTP 报头压缩。谷歌表示,引入 SPDY 协议后,在实验室测试中页面加载速度比原先快 64%。可是现在(2016年11月6日23:38:01) 现在 Google 已经不再维护 SPDY 了,因为 Http2.0 基本都包含了 SPDY 的功能,且 SPDY 的开发者也加入到了Http2.0 的 维护开发中。
那么 Http2.0 跟 Http1.1 的区别是什么呢?
要想知道 2.0 和 1.1 的区别,当然最好的方式是先了解 2.0 版本新增了哪些功能。
看上面的Http版本图就知道,Http2.0 的一个核心功能就是:多路复用
http2.0 能对网络效率有较大提升,其中一个原因就是使用了多路复用
(1)多路复用
我们先来看看http1.1中多请求的处理方式:
可以看到,要么是串行,一个请求完成后再发另一个请求,要么是可以并发,但请求结果的返回过程必须是顺序的,第一个响应完成后,才能响应第二个,即使第二个先处理完成,也要等待第一个,就产生了阻塞
那么 Http2.0 多请求是怎样处理的呢?
只要有了请求结果数据,可以立即返回,不关心顺序问题,因为数据都被组装成了一个个的frame帧,frame中记录了自己所属数据流的ID,客户端把frame都接收到以后,根据数据流ID再进行组装即可
(2)服务器推送流
我们都知道,现在(2016年11月6日23:54:37)我们可以给服务器推送信息,可是服务器是不可以给客户端主动推送信息的,在 2.0 添加的一个核心功能就是服务器推送流。
服务器推送流(Server Push)服务端能够更快的把资源推送给客户端,例如服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端解析 HTML 再发送这些请求,当客户端需要的时候,它已经在客户端了
3.Http的几种请求方式
目前就我个人而言,就使用过 get 和 post 请求,其他的请求方式基本没有使用过
get 请求方式和 post 请求有什么区别呢?
二、Http 实操详解
1.在浏览器中查看请求信息
然后点击对应的请求,可以查看详细的请求信息
这对我们实际开发是很有用处的,其中最重要的是看请求头和响应信息。
三、常见的请求头和响应头
1.常见的请求头
2.常见的响应头
3.常见的响应码
上面只是简单的列举了一部分的请求头和响应头,完整的请求头和响应头可以看这个网址:http://tools.jb51.net/table/http_header
欢迎转载,转载请标明来源:
CSDN主页:http://blog.csdn.net/two_water
简书主页:http://www.jianshu.com/users/8ec863a03f4f/latest_articles