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
随机推荐
- 【转】Jmeter做web压力测试时设置持续时间注意点
头一回使用jmeter做web的压力测试,遇到个很莫名其妙的问题,不管我的线程组怎么设置,它就是执行一次就结束了. 设置循环次数为300,不使用调度器--〉执行一次就结束了,循环次数未生效 设置循环次 ...
- telnet WIN7设置回显办法
windows 2000及XP默认是关闭telnet回显的,这样在操作上很不方便,要让Telnet程序实现本地回显可以按如下步骤操作:1.在命令窗口中运行不带任何参数的telnet命令,执行 /hel ...
- Linux Restricted Shell Bypass
Author: @n4ckhcker & @h4d3sw0rm Introduction Hello, so first of all let’s explain what is a rest ...
- Java的I/O流问题
一.流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. ...
- 手把手教你如何优化linux服务器
关闭不需要的服务.列出需要启动的的服务crond.network.sshd.irqbalance.syslog 启用 irqbalance 服务既可以提升性能,又可以降低能耗. syslog 是 li ...
- [原创]Java使用反射及自定义注解实现对象差异性比较
Java项目C中 有一处逻辑,对于资源数据(类型为ResourceItem,拥有int/double/boolean/String类型数十个字段),需要比对资源数据每次变更的差异,并描述出变更情况.并 ...
- ubuntu14.10下Qt5.4无法输入中文
最近学习Qt,于是在ubuntu下安装了开发环境.我是从官网上下载安装的Qt5.4版本.安装后发现在开发过程中无法输入中文.于是在网上搜了搜.解决办法如下: 1.安装fcitx-frontend-qt ...
- 10 个你需要了解的 Linux 网络和监控命令
我下面列出来的10个基础的每个linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nsloo ...
- log4j配置文件的手动加载与配置初始化
一. 本地项目: 初始化log4j的日志配置,指定到src目录下(建议用2) //1. 本地项目-属性文件配置 PropertyConfigurator.configu ...
- JDK和CGLIB生成动态代理类的区别(转)
关于动态代理和静态代理 当一个对象(客户端)不能或者不想直接引用另一个对象(目标对象),这时可以应用代理模式在这两者之间构建一个桥梁--代理对象. 按照代理对象的创建时期不同,可以分为两种: 静态代 ...