Http和Https
http1.0和http1.1的区别
-
长连接
http1.1默认是长连接,有个请求头是
Connection: Keep-Alive
,长连接模式下,可以通过Content-Length
头字段来查看是否传输完毕。 -
Host域
HTTP1.1在Request消息头里头多了一个Host域,必须包含
Host
头字段,否则返回400拒绝。因为http1.0认为每台主机和IP是一一对应的,但随着技术发展,NAT、VLAN、虚拟主机技术等,可以允许多台主机公用1个IP。 -
Range域
HTTP/1.1中在请求消息中引入了range头域,代表请求资源的字节范围,如
Content-Range
。可以避免请求部分资源的时候却返回整个资源,还可以规避全部重传,即实现断点续传。 -
新增Request method和Status code
HTTP1.1增加了OPTIONS,PUT, DELETE, TRACE, CONNECT这些Request方法。还新增了一些Status code,如305 Use Proxy。
-
缓存
HTTP1.1增加了
Cache-Control
头域,用于灵活控制缓存。比如:no-cache
指示请求或响应消息不能缓存,max-age
指示最大生存时间。
不改变上一代http的语义,但是却能突破上一代标准的性能限制。
-
二进制分帧
HTTP 2.0 会将所有传输的信息分割为更小的消息和帧,分为Headers帧和Data帧,且可以乱序传输,再最后合并。
-
HTTP 首部压缩
HTTP 2.0 在客户端和服务器端使用首部表来跟踪和存储之前发送的键-值对,若命中可以不包含HTTP首部,就节省了首部的开销。
-
HTTP 2.0 所有请求在一个TCP 连接上完成
http常见状态码
-
1XX 通知
- 100("Continue")
-
2xx 成功
- 200("OK")
-
3xx 重定向
- 301("Moved Permanently")。表示永久重定向,表示请求的资源分配了新url,以后应使用新url。
- 302(found) 表示临时性重定向,请求的资源临时分配了新url,本次请求暂且使用新url。302与301的区别是,302表示临时性重定向,重定向的url还有可能还会改变。
- 303("See Other")。表示请求的资源路径发生改变,使用GET方法请求新url。她与302的功能一样,但是明确指出使用GET方法请求新url。
- 305("Use Proxy")
-
4xx 客户端错误
- 400("Bad Request")。请求的是一个错误的消息。
- 401("Unauthorized")
- 403("Forbidden")
- 404("Not Found")
- 405("Method Not Allowd")
-
5xx 服务器错误
- 500("Internal Server Error")
- 501 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
- 503("Service Unavailable") 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。(服务不可用)
- 505 服务器不支持请求中所用的 HTTP 协议版本。(HTTP 版本不受支持)
HTTPS
HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全
RSA的安全性是基于极大整数因数分解的难度。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。
-
https是如何保证安全的?
HTTPS网站服务器和浏览器通信的消息是用对称加密算法进行加密的。为了让不同浏览器使用不同的对称加密算法,浏览器就需要和服务器协商使用什么加密算法,但是这个协商过程有可能被攻击。于是,使用非对称加密算法对协商过程进行加密,协商过程产生随机数确认具体对称加密算法。非对称加密算法的私钥存在网站服务器,公钥传送给浏览器。假如web服务器传递公钥途中被黑客劫持了,然后将假的公钥传递给浏览器,那么黑客就能够通过假公钥的私钥对浏览器的信息进行解密,同时后面获取后面的对称加密算法,整个传输内容都被监视了。为防止黑客篡改公钥等信息,使用数字证书的方式来传输公钥,数字证书包含了明文的web服务器URL,非对称加密算法的公钥等信息,最后还对这些信息进行hash计算,然后用证书机构的私钥加密该hash值和使用的hash算法。浏览器使用证书的公钥进行解密,然后按照hash算法本地计算内容hash值和证书的hash值对比,若一致,那说明证书内容没有被修改。同时确保浏览器访问的URL和证书的URL一致,若也一致,那就可以继续访问。
-
对称加密:加密与解密用的是同样的密钥。 优点:算法公开、计算量小、加密速度快、加密效率高。 常用对称加密算法包括 DES、AES、RC4。
-
非对称加密:使用一对密钥,公钥和私钥,私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人,常见的非对称加密算法有RSA、ECC。
-
数字证书:也叫CA 证书,由第三方权威机构颁发。包含证书颁发机构的名称、证书本身的数字签名、证书持有者公钥、证书签名用到的Hash算法。 根证书:证书的级别像树也分层,每一层的证书都需要上一层来证明自己是可靠的,根证书处在最顶层,根证书自己是可靠的,但若根证书也不安全了,那么整个证书体系就不安全了。
-
SSL (Secure Socket Layer,安全套接字层):用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。目前3.0版本。
-
TLS (Transport Layer Security,传输层安全协议):TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。增强有:更安全的MAC算法、更严密的警报、对于消息认证使用密钥散列法、增强的伪随机功能(PRF)。
-
HTTPS缺点:慢:传输效率、加密效率低,贵:需要购买数字证书,一些中小企业一般不会用。