参考:

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. Python 自动化测试config配置文件ini 配置目录

    import ConfigParserimport os path = os.path.join(os.path.dirname(__file__), 'config.ini').replace('\ ...

  2. java代码初学者适用,输入学生成绩,符合要求的过~~~~注意数据范围

    总结:没有基础,我从点滴开始, package com.aaa; import java.util.Scanner; //输入“repate ”次数,输入学生成绩,低于60分,输出fail.否则输入p ...

  3. java排序。。。

    题目:n位学生,m位评委,去掉一个最高分,和一个最低分,选手最后得分 package com.aini; import java.util.Arrays; public class WDS { int ...

  4. 1115 Counting Nodes in a BST

    题意:给出一棵二叉搜索树的插入序列,要求该树最后两层的结点个数. 思路:在树结点中增加一个数据域layer,表示该结点所在的层次.另外,设置数组level[]和变量maxLevel,level[i]表 ...

  5. ECMAscript一些方法的使用

    typeof 操作符 来检测 属性是否 都存在 例如:typeof ages.name == "string"  ===>如果是 true 就存在 , 若是 false 就不 ...

  6. js作用域和作用域链

    作用域 首先要知道一点,js跟python都是一样的,先编译后执行 唯一的区别在于,js对于只声明,未定义的变量,报错是未定义,后面代码会有这个例子 编译的过程只有赋值和开辟空间的过程 只有函数,类才 ...

  7. Linux学习笔记 -- Shell 变量

    定义变量 语法: 变量名=值 myVal= 需要注意一下变量明德规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字( ...

  8. Docker - Upgrade from 1.12 to 1.13

    引言 历经半年,docker的更新终于来了,看着新版本中各种诱人的新特性,我们也第一时间来尝试一下. 升级 之前一直使用的是1.12,所以这次尝试的是从原来的版本升级到新版本. 1. 更新 yum p ...

  9. Build Assetbundle出错:An asset is marked as dont save, but is included in the build

    前天Build Assetbundle的时候出错了,导致打包失败,具体日志内容如下: An asset is marked as dont save, but is included in the b ...

  10. Three.js会飞走飞回来的鸟

    效果图 demo import './index.css'; // stats var stats; (function(){ stats = new Stats(); document.body.a ...