前言
HTTP和HTTP是网络协议当中比较重要的内容,本文主要介绍了两者的基本概念,HTTP的传输流程,HTTPS的加密流程等内容,理解这些有助于我们区分两者的区别和应用场景。
一、HTTP
1.1概述
HTTP的名字超⽂本协议传输,它可以拆成三个部分:
- 超⽂本:超越了普通⽂本的⽂本,是⽂字、图⽚、视频等的混合体。
- 传输:就是把⼀堆东⻄从 A 点搬到 B 点,或者从 B 点 搬到 A 点。
- 协议:使⽤计算机能够理解的语⾔确⽴了⼀种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理⽅式(⾏为约定和规范)。
经过了对 HTTP ⾥这三个名词的详细解释,就可以给出⽐超⽂本传输协议这七个字更准确更有技术含量的答案:
HTTP 是⼀个在计算机世界⾥专⻔在两点之间传输⽂字、图⽚、⾳频、视频等超⽂本数据的约定和规范。
HTTP是一个无状态的协议。
什么是无状态?简单一句话:第二次来,你(服务器)无法识别它(客户端)曾经来过,即服务器没有记忆能力。
客户端向服务器端发出请求且服务器收到请求返回响应后,本次通信结束,HTTP连接关闭,服务器不保留连接的相关信息。
1.2模型
HTTP遵循请求(Request)/应答(Response)模型,客户端向服务器发送请求,服务器处理请求并返回适当的应答。
1.3传输流程
1.地址解析 :获得地址信息
2.封装HTTP数据包 :封装HTTP请求数据包
3.封装TCP包 :进一步封装成TCP数据包
4.建立TCP连接 :三次握手建立TCP连接
5.客户端发送请求
6.服务器响应:包括状态行、协议版本号、成功或错误代码、消息体
7.服务器关闭TCP连接。
二、HTTPS
2.1概述
HTTPS(HTTP over SSL)是以安全为目标的HTTP通道,在HTTP中加入SSL层提高数据传输的安全性。HTTP传输信息以明文的方式,不提供加密,因此不适合密码等重要信息。为了提高安全性,HTTPS加入了SSL协议,SSL依靠证书来验证服务器的身份,并对数据进行加密,以保障数据传输安全性,端口一般是443。
可以说:HTTPS = HTTP(超文本传输协议) + SSL(安全套接层)
2.2加密流程
1.发送请求:客户端通过TCP和服务器建立连接后,发出一个请求证书给服务器,请求消息里包含自己可实现的算法列表和其他消息。
2.证书返回:服务器收到消息后返回证书,证书包含服务器信息、域名、申请证书的公司、公钥、数据加密算法。
3.证书验证:客户端收到证书后判断证书签发机构是否正确,使用公钥确认签名是否有效,如果证书有效,生成对称密钥,并使用公钥将对称密钥加密。
4.密钥交换:客户端将加密后的对称密钥发给服务器,服务器收到后使用私钥解密。
5.数据传输:经过上述步骤,客户端和服务器完成密钥对的交换,在之后就可以基于对称加密(加密解密使用相同的密钥)将数据加密后传输,保证了传输的安全性。
三、HTTP和HTTPS的区别
1.HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头。
2.HTTP 是不安全的,而 HTTPS 是安全的。
3.HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443。
4.在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层。
5.HTTP 无需加密,而 HTTPS 对传输的数据进行加密。
6.HTTP 无需证书,而 HTTPS 需要认证证书。
总结
HTTP是明文传输,没有对数据进行加密,一旦黑客拦截到该请求,就可以得到我们的数据。如果数据中包含密码、身份证号、银行卡密码等重要信息,数据就非常容易泄露。所以支付网站、银行网站等要求安全性较高的网站应该使用HTTPS,对数据进行加密后在进行传输。