http1.0、http1.1、http2.0、http、https之间的联系与区别

基本含义

  • HTTP 超文本传输协议(HyperText Transfer Protocol ),为了提供一种发布和接收Html页面的方法,可以是浏览器更加高效,以明文方式发送信息。
  • HTTPS 超文本传输安全协议(全称:HyperText Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

HTTP 和 HTTPS 的区别

  1. Https协议需要到CA申请证书,一般免费证书比较少,因而需要一定的费用。
  2. Http是超文本传输协议,信息是明文传输;Https则是具有安全性的SSL加密传输协议。
  3. Http的默认端口为80;Https的默认端口为443。
  4. 两者连接方式也不同。Http的连接是无状态的;Https协议是SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比Http更安全。

HTTP状态码

  • 1XX——信息提示,服务器收到请求,需要请求者继续执行操作;
  • 2XX——成功,操作被成功接收并处理;
  • 3XX——重定位,需要进一步的操作以完成请求;
  • 4XX——客户端错误,请求包含语法错误或无法完成请求;
  • 5XX——服务器错误,服务器在处理请求的过程中发生了错误。

常见状态码:

100:继续,客户端应继请求;
200:请求成功;
301:资源(网页等)被永久转移到其他 URL;
302:Found — 暂时重定向;
403: 禁止访问;
404:请求的资源(网页等)不存在;
500:内部服务器错误。

HTTP1.0、1.1、2.0 之间的区别

  • HTTP1.0:默认使用 Connection:cloose,浏览器每次请求都需要与服务器建立一个 TCP 连接,服务器处理完成后立即断开 TCP 连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)
  • HTTP1.1:默认使用 Connection:keep-alive(长连接),避免了连接建立和释放的开销;通过 Content-Length 字段来判断当前请求的数据是否已经全部接受。不允许同时存在两个并行的响应。
  • HTTP2.0:引入二进制数据帧和流的概念,其中帧对数据进行顺序标识;因为有了序列,服务器可以并行的传输数据。

HTTP1.0 和 HTTP1.1 的主要区别

  1. 缓存处理:Http1.1 添加更多的缓存控制策略(如:Entity tag,If-Match)
  2. 网络连接的优化:Http1.1 支持断点续传
  3. 错误状态码的增多:Http1.1 新增了 24 个错误状态响应码,丰富的错误码更加明确各个状态
  4. Host 头处理:Http1.1支持 Host 头域,不再以 IP 为请求方标志
  5. 长连接:减少了建立和关闭连接的消耗和延迟。

HTTP1.1 和 HTTP2.0 的主要区别

  1. 多路复用:Http2.0协议中多个请求都通过一个TCP连接并发地完成。
  2. 服务端推送:Http2.0服务端能够主动把资源推送给客户端。
  3. 新的二进制格式:Http2.0采用二进制格式传输数据,相比于Http1.1的文本格式,二进制格式具有更好的解析性和拓展性。
  4. header压缩:Http2.0压缩消息头,减少了传输数据的大小。

HTTPS 的具体实现,怎么确保安全性?

HTTPS协议使用的是对称加密非对称加密结合的方式进行的,步骤如下:
(1)首先是 SSL 握手阶段,客户端发送一个携带 SSL 版本等消息的数据到服务端
(2)服务端收到信息,根据相应的 SSL 版本,发送非对称加密的公钥给客户端,
自己保留私钥。
(3)客户端拿到公钥后,首先进行公钥的验证,通过 CA 证书。
(4)验证通过后,客户端就会使用该公钥加密对称加密的密钥,发送数据。
(5)服务端收到数据,首先用私钥解密,获得对称加密的密钥,后续所有数据都有获得的对称密钥进行加密传输。

HTTPS 网站服务器和浏览器通信的消息是用对称加密算法进行加密的,为了让不同的浏览器用不同的对称加密算法,因此浏览器需要和服务器进行协商,其协商过程是用非对称加密算法进行的加密。非对称的私钥存在在网站服务器,公钥送给浏览器,为了防止在传输过程中黑客篡改公钥信息,使用数字证书的方式来传输公钥,浏览器最后对公钥进行解密,核对证书是否被修改,确保其安全性。


为什么HTTP1.1不能实现多路复用

HTTP1.1不是二进制传输,而是通过文本进行传输,由于没有流的概念,在使用并行传输(多路复用)传递数据时,接收端在接收到响应后,并不能区分多个响应分别对应的请求,所以无法将多个响应的结果重新进行组装,也就实现不了多路复用

拓展知识点

HTTPS握手过程

  • 客户端使用https的url访问服务器,要求与服务器建立SSL连接
  • 服务器收到客户端的请求后,会将网站的证书(包含公钥)传送一份给客户端
  • 客户端收到网站证书后会检查证书的颁发机构以及过期时间,如果没有问题就随机产生一个密钥
  • 客户端利用公钥将会话密钥加密,并传送给服务器,服务器利用自己的私钥解密出会话密钥
  • 之后服务器与客户端使用密钥加密传输

HTTP中浏览器解析一个 URL 的流程,这个过程中浏览器做了什么

(1)浏览器向 DNS 服务器查找输入 URL 对应的 IP 地址。
(2)DNS 服务器返回网站的 IP 地址。
(3)浏览器根据 IP 地址与目标 web 服务器在 80 端口上建立 TCP 连接
(4)浏览器获取请求页面的 html 代码。
(5)浏览器在显示窗口内渲染 HTML。
(6)窗口关闭时,浏览器终止与服务器的连接。

对称加密与非对称加密

  • 对称加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大的问题就是密钥发送问题,即如何安全的将密钥发给对方;
  • 非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信 息,使用自己的私钥进行解密。

HTTP协议的无状态与无连接

无连接
    无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
    每一个访问都是无连接,服务器挨个处理访问队列里的访问,处理完一个就关闭连接,然后继续处理下一个新的任务。
无状态
    HTTP协议对于事务处理没有记忆能力,对同一url的请求没有上下文关系。
    每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况。
    服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值