Http和Https的区别
Http的特点
- http的英文全称是:HyperText Transfer Protocol。中文译为超文本传输协议。http是一个简单的请求-响应协议,它通常运行在TCP之上,落地于应用层。
- HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议(Https中)TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生。
- HTTP本身是一个无状态的连接协议,也就是服务器无从得知你是否已经登录过,所以你的每次请求都需要带上如用户名密码等信息证明你的身份,这对用户是极不友好的,解决方案是cookie和session
Http的各个版本
HTTP/0.9
HTTP协议的最初版本,功能简陋,仅支持请求方式GET,并且仅能请求访问HTML格式的资源。
HTTP/1.0
- 在0.9版本上做了进步,增加了请求方式POST和HEAD;不再局限于0.9版本的HTML格式,根据Content-Type可以支持多种数据格式,即MIME多用途互联网邮件扩展,例如text/html、image/jpeg等;同时也开始支持cache,就是当客户端在规定时间内访问统一网站,直接访问cache即可。
- 不支持长连接,即每次TCP请求完成就断开,每次请求都需要TPC三次握手,耗费资源
HTTP/1.1
- 1.1 版的最大变化,就是引入了持久连接(persistent connection),解决了HTTP/1.0中最大的问题,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive。解决了1.0版本的keepalive问题,1.1版本加入了持久连接,一个TCP连接可以允许多个HTTP请求;
- 新增了请求方式PUT、PATCH、OPTIONS、DELETE等。
HTTP/2.0
为了解决1.1版本利用率不高的问题,提出了HTTP/2.0版本。增加双工模式,即不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题(HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级);HTTP请求和响应中,状态行和请求/响应头都是些信息字段,并没有真正的数据,因此在2.0版本中将所有的信息字段建立一张表,为表中的每个字段建立索引,客户端和服务端共同使用这个表,他们之间就以索引号来表示信息字段,这样就避免了1.0旧版本的重复繁琐的字段,并以压缩的方式传输,提高利用率。
另外也增加服务器推送的功能,即不经请求服务端主动向客户端发送数据。