HTTP总结
参考:
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
随机推荐
- Python 自动化测试config配置文件ini 配置目录
import ConfigParserimport os path = os.path.join(os.path.dirname(__file__), 'config.ini').replace('\ ...
- java代码初学者适用,输入学生成绩,符合要求的过~~~~注意数据范围
总结:没有基础,我从点滴开始, package com.aaa; import java.util.Scanner; //输入“repate ”次数,输入学生成绩,低于60分,输出fail.否则输入p ...
- java排序。。。
题目:n位学生,m位评委,去掉一个最高分,和一个最低分,选手最后得分 package com.aini; import java.util.Arrays; public class WDS { int ...
- 1115 Counting Nodes in a BST
题意:给出一棵二叉搜索树的插入序列,要求该树最后两层的结点个数. 思路:在树结点中增加一个数据域layer,表示该结点所在的层次.另外,设置数组level[]和变量maxLevel,level[i]表 ...
- ECMAscript一些方法的使用
typeof 操作符 来检测 属性是否 都存在 例如:typeof ages.name == "string" ===>如果是 true 就存在 , 若是 false 就不 ...
- js作用域和作用域链
作用域 首先要知道一点,js跟python都是一样的,先编译后执行 唯一的区别在于,js对于只声明,未定义的变量,报错是未定义,后面代码会有这个例子 编译的过程只有赋值和开辟空间的过程 只有函数,类才 ...
- Linux学习笔记 -- Shell 变量
定义变量 语法: 变量名=值 myVal= 需要注意一下变量明德规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字( ...
- Docker - Upgrade from 1.12 to 1.13
引言 历经半年,docker的更新终于来了,看着新版本中各种诱人的新特性,我们也第一时间来尝试一下. 升级 之前一直使用的是1.12,所以这次尝试的是从原来的版本升级到新版本. 1. 更新 yum p ...
- 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 ...
- Three.js会飞走飞回来的鸟
效果图 demo import './index.css'; // stats var stats; (function(){ stats = new Stats(); document.body.a ...