【网络】HTTP和HTTPS有什么区别???

HTTP协议

1、HTTP协议规定发送请求和返回响应的格式

在这里插入图片描述

2.请求报文

请求报文是由请求方法、请求URL、协议版本、可选的请求首部字段和内容实体构成的。要注意:请求首部字段下面还有一行空行。
在这里插入图片描述

3.响应报文

请求报文是由协议版本,HTTP/1.1表示服务器对应的HTTP版本,紧挨着的200 OK表示请求处理结果的状态码和原因短语。下面一行表示创建响应的日期时间,是首部字段内的一个属性。接着是一个空行。再下来是响应的主体内容。
在这里插入图片描述

4.HTTP协议的特点

HTTP协议是一种无状态的协议,就是HTTP协议自身不具备保存之前发送过的请求或响应的功能。每当有新的请求发送时,就会对应新的响应产生。这种协议设计之时,是为了更快的处理大量的事务,所以才设置的如此简单。

5.HTTP方法

方法 作用
GET 获取资源
POST 传输实体的主体
PUT 传输文件
HEAD 获得报文首部
DELETE 删除文件
OPTIONS 询问支持的方法
TRACE 追踪路径
CONNECT 要求用隧道协议连接代理

6.持久连接节省通信量

比如:使用浏览器浏览一个包含多张图片的HTML页面时,在发送请求访问HTML页面资源的时候,也会请求该HTML页面内包含的其他资源。因此,会产生许多没有必要的TCP连接断开,大大的浪费资源。
在这里插入图片描述

所以持久化连接是非常有必要的。

方式一: 持久化连接是以管线式的方式发送HTTP请求,可以同时并发并行的发送多个请求,而不需要一个接一个的等待响应了。

方式二: 使用Cookie的状态管理。
Cookie会根据从服务端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后再发送出去。服务器发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

在这里插入图片描述
在这里插入图片描述

7.HTTP响应状态码

类别 原因短语
1XX 信息性状态码 接收的请求正在处理
2XX 成功状态码 请求正常处理完毕
3XX 重定向状态码 需要进行附加操作以完成请求
4XX 信息性状态码 接收的请求正在处理
5XX 服务器错误状态码 服务器处理请求出错

为什么需要HTTPS?

1.HTTP的缺点

HTTP有好的一面。肯定也有不足的一面,它的不足之处主要有:

  • 通信使用明文(不加密),内容可能会被窃听;
  • 不验证通信方的身份,因此有可能遭遇伪装;
  • 无法证明报文的完整性,所以有可能已遭篡改;
  • 无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端。
  • 无法判断请求是来自何方、出自谁手。
    在这里插入图片描述

为了有效防止这些弊端,所以HTTPS协议的出现是非常有必要的。

2.HTTP+加密+认证+完整性保护=HTTPS

经常会在Web的登录页面和购物车结算界面等使用HTTPS通信。使用HTTPS通信时,不再用http://,而是使用https://。并且用浏览器访问Web服务器时,会出现一个带锁的标记。
在这里插入图片描述

(1)HTTPS是身披SSL外壳的HTTP。
HTTPS并非是应用层的一种新的协议,只是HTTP通信接口部分用SSL(Secure Socket Layer) 和TLS(Transport Layer Security)协议代替而已。
在这里插入图片描述
以前,HTTP直接和TCP通信,当使用SSL时,则会变成HTTP先和SSL通信,再由SSL和TCP通信。SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。

(2)浏览器安装以后,浏览器就已经初始化了权威的证书颁发机构颁发的证书,但是证书到底有什么用?

首先在数据传输过程中需要解决的问题就有:
(1)如何保证服务器是真实的,不是钓鱼网站?
(2)解决网络传输,使用明文传输,所有路途设备,如果获取到,就会存在信息泄露,钓鱼人员拿到账号和密码,进而获取非法收益(会访问我们真实的网站)。

如何解决呢?这就用到了我们的证书。
(1)权威的证书颁发机构颁发的证书-------保证不是钓鱼网站
(2)https服务器的证书-----------解决明文传输的问题

证书的原理和作用:

在这里插入图片描述

非对称加密:
可以使用一个私钥/公钥加密,使用公钥/私钥解密
密钥:客户端/服务端用来加解密
对称加密:使用同一把钥匙进行加解密(共享密钥)

https涉及的细节:
1、生成密钥的过程 - 密钥(加密解密真正的数据) 如何保证密钥是真正可靠的,不是钓鱼网站发过来的—对称加密
2、使用公钥、私钥来生成密钥----非对称加密

以共享密钥方式加密时必须将密钥也要发送给对方。在网上转发密钥时,如果通信被监听,那么密钥就有可能会落入攻击者之手 ,同时也就失去了加密的意义。另外还得设法安全的保管接收到的密钥。

所以要使用两把密钥的公开密钥加密:

公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,另一把叫做公有密钥。私有密钥就是不能让任何人知道,公开密钥就是可以任意发布,任何人都可以获得。

使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送自己的私有密钥,也就不需要担心密钥被其他人窃听走。

HTTPS采用的是混合加密方式:
公开密钥加密处理起来比共享密钥加密方式更为复杂,因此在通信时使用公开加密方式,效率就比较低。所以要将两者结合起来使用。在交换密钥环节,使用公开密钥加密的方式,之后的建立通信使用共享密钥的加密方式。

但怎样证明公开密钥本身就是货真价实的呢?
所以提供了数字证书认证机构和其相关颁发的公开的密钥证书。
数字证书认证机构处于客户端和服务端双方都可以信任的第三方机构的立场上。首先,服务器的运营人员向数字证书的认证机构提供公开密钥的申请,数字证书认证机构在判断申请方的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已公开得得数字签名(相当于盖章),并将该公开密钥放入公钥证书后绑定在一起。然后,服务器会将这个有由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。

公钥证书也可叫做数字证书或者直接叫证书。
在前面说过的浏览器在安装以后,浏览器就已经初始化了权威的证书颁发机构颁发的证书,这是浏览器开发商发布版本的时候,会事先在内部植入常用认证机关的公开密钥。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46551861/article/details/114898814