参考:
https://www.cnblogs.com/fuqiang88/p/5956363.html
https://www.cnblogs.com/zlingh/p/5887143.html
https://www.cnblogs.com/confach/p/10050437.html
- HTTP
- HTTP是非持久的协议
- 服务端不用维护客户端信息,减少工作量
- 不用维持tcp连接?
- 最初的目的是传输html,所以一问一答就足够了
- 但是有些情况需要保持状态,比如表单,可以通过cookie、session实现
- HTTP的生命周期通过
Request
来界定,也就是一个Request
一个Response。
- 被动型:其实就是,服务端不能主动联系客户端,只能有客户端发起
- 1.0
- 在
HTTP1.0
中,这次HTTP请求就结束了。
- 在
- 1.1
- 在HTTP1.1中进行了改进,使得有一个keep-alive(好像1.0也有,只是1.1默认开启了),也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住
Request = Response
, 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
- 在HTTP1.1中进行了改进,使得有一个keep-alive(好像1.0也有,只是1.1默认开启了),也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住
- 2.0
- 参考Google的SPDY
- 二进制
- 安全性
- 连接复用等
- HTTP是非持久的协议
- HTML5
- Html5是指的一系列新的API,或者说新规范,新技术。Http协议本身只有1.0和1.1,而且跟Html本身没有直接关系。通俗来说,可以用HTTP协议传输非Html数据。
- 为了结局Http 1.0和1.1的问题(不能从协议层面复用tcp连接,导致每次都要握手和慢启动;安全性;)
- 为了持续、实时性、貌似主动性的交互需求,在Websocket之前还出现过两种:
- ajax轮训
- long poll
- Websocket
- Websocket是一个持久化的协议
- Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手
Websocket
其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充- 必须客户端支持
- SPDY和Http 2.0
- 为了持续、实时性、貌似主动性的交互需求,在Websocket之前还出现过两种:
何为被动性呢,其实就是,服务端不能主动联系客户端,只能有客户端发起
所有的新协议,都要客户端和服务器端都支持
- Http 2.0