参考:

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也是被动的,不能主动发起。
    • 2.0
      • 参考Google的SPDY
      • 二进制
      • 安全性
      • 连接复用等
  • 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

何为被动性呢,其实就是,服务端不能主动联系客户端,只能有客户端发起

所有的新协议,都要客户端和服务器端都支持

  • Http 2.0

随机推荐

  1. php代码中临时开启错误调试

    对php.ini 中参数的设置 也可用在php代码中完成. 调用:调用ini_set()函数 //开启php.ini中的display_errors指令 ini_set('display_errors ...

  2. IDA Pro 权威指南学习笔记(七) - 其他 IDA 显示窗口

    默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开 Strings 窗口(Strings) Strings 窗口中显示的是从二进制文件中提取出的一 ...

  3. vue-cli脚手架config目录下index.js配置文件详解

    此文章介绍vue-cli脚手架config目录下index.js配置文件 此配置文件是用来定义开发环境和生产环境中所需要的参数 关于注释 当涉及到较复杂的解释我将通过标识的方式(如(1))将解释写到单 ...

  4. 1 响应式页面-@media介绍,

    我们为什么要写自适应的页面(响应式页面) 众所周知,电脑.平板.手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就会乱的一塌糊涂,这时候怎么解决呢 ...

  5. [原创]Spring boot 框架构建jsp web应用

    说明 Spring boot支持将web项目打包成一个可执行的jar包,内嵌tomcat服务器,独立部署 为支持jsp,则必须将项目打包为war包 pom.xml中设置打包方式 <packagi ...

  6. 【转】VS 安全开发生命周期(SDL)检查

    前面在学习使用google的protobuf时在VS2012中一直无法编译编译通过,经过查找一些资料原来发现,并不是protobuf的问题,而是自己在使用VS2012时,没有完全了解VS2012的强大 ...

  7. pl/sql简介

  8. Eclipse 控制台不显示打印信息的处理方法

    1.进windows菜单 -> show view -> console2.还是windows菜单里面 -> preferences -> 打开左边的run/debug -&g ...

  9. rdlc设置指定列隐藏

    此用户帐户对提案名称列不可见

  10. Python和其他语言的区别 (简单精辟啊 手打)

    首先是简单 读和写非常容易 免费 免费且开源 社区为专业人士和初学者提供知识和经验的分享交流平台 兼容性 与多平台兼容 面向对象 支持面向对象编程 php面向网络 函数库 python 社区创建了丰富 ...