http 协议和 https 协议有什么关系

本贴最后更新于 1724 天前,其中的信息可能已经时过境迁

要想了解他们之间的关系,先来看看他们是什么,http 协议叫做 Hypertest Transfer Protocol 协议,也就是超文本传输协议。

RFC7230 给出的定义,http 协议是一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的 语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。

而 https 协议是在 http 协议的基础上增加了 TLS/SSL 协议,保证了数据传输的准确性和安全性,那么接下来我们更深入的解释一下他们都是怎么工作的,再了解怎么工作之前需要先了解一下网络模型。

网络模型

image.png

应用层:对应于各个软件,直接对应用程序提供服务,http 协议就在这一层

表示层:把网络中消息转换成应用可以读取的消息,也就是格式化,并对数据进行加密解密,TSL、SSL 就作用在这一层

会话层:建立和维护管理会话链接

传输层:建立和维护管理端到端的链接

网络层:一个主机传输到另一个主机,广域网中进行,包括 ip 寻址路由选择

数据链路层:局域网中进行,控制网络层与物理层之间的通信

物理层:比特流传输

上图是一个 OSI 网络七层模型是一个概念模型,他是抽象的,而在实际中运用更多的是 tcp/ip 模型。

image.png

tcp/ip 模型中应用层相当于 osi 模型的前三层,也就是说在 tcp/ip 模型中的应用层内会完成提供软件服务,数据加密解密,管理和维护会话,也就包含 http 协议以及 TLS/SSL 加密协议。

http 协议解决了什么问题

在进行 www(万维网)信息交互时,必须面对下面的这些需求

  • 低门槛

使用者或者开发者不太了解协议的情况下,能够很好的使用

  • 可扩展性:支持巨大的用户群体不断迭代,超长的寿命

  • 分布式系统下的 Hypermedia,大粒度数据的网路传输

  • Internet 规模,也就是说用户可能跨越国家、组织机构,也就会导致下面的问题

    • 无法控制的 scalability,可伸缩性

      • 不可预测的负载、非法格式的数据、恶意消息

      • 客户端不能保持所有服务器信息,服务器不能保持多个请求间的状态信息

    • 独立的组件部署:新老组件并存,能很好的兼容不同的组件,比如 django、tomcat 等等

  • 向前兼容:自 1993 年器 HTTP0.9\1.0(1996)已经被广泛使用

此时 http 协议就应运而生了,

Web‘s major goal was to be a shared information space through which people and machines could communicate --Tim Berners Lee

这是万维网之父 Tim Berners-Lee 提出的关于 http 协议的作用,意思是 http 协议解决的是人与机器的交流,进行交换共享信息。它不仅能帮助人们进行通信,而且还很优秀。

但是它在帮助人们与机器进行交流的时候,是有缺点的:

  • 通信使用明文,没有加密,内容可能会被窃听

  • 通信的时候不验证对方的身份,

  • 无法证明保温的完整性,有可能被篡改

正式由于这些问题,TLS/SSL 又应用而生了。

TLS/SSL

image.png

TLS 的设计目的,能够对接收数据方的身份验证,对传输数据进行加密,保证传输数据的完整性。

TLS 协议主要包含两部分,记录协议和握手协议,记录协议主要是加密数据,接收方可以解密信息,并能传递秘钥,为了传递秘钥使得接收方能够解密信息,所以需要有握手协议,主要是通过 ca 证书验证通讯双方的身份,交换加解密的安全套件,协商加密参数。

综上

https 协议就是由 http 协议和 TLS/SSL 协议一起构建而成,保证了数据传输的准确性与安全性。

原文链接

  • HTTPS
    99 引用 • 274 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...