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指示最大生存时间。

HTTP2.0

​ 不改变上一代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缺点:慢:传输效率、加密效率低,贵:需要购买数字证书,一些中小企业一般不会用。

posted @ 2021-04-20 20:29  i%2  阅读(501)  评论(0)    收藏  举报