HTTP和HTTPS在表面上看仅有一个单词的区别,那么两者在背后到底有着什么样的区别和联系呢,下面一一解析。
1. 什么是HTTP协议
HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,完成通信的功能。简言之就是网络链接在传输文本信息中的一种规定的协议。
1.1 HTTP协议的缺点
1.1.1 HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接获取其中的报文信息
1.1.2 不验证通信方的身份, 因此有可能遭遇伪装,在不确定通信方的身份的情况下,进行报文的发送传输
1.1.3 无法证明报文的完整性, 所有有可能已遭篡改 ,在不确定Http报文的安全完整性的情况下,进行报文的处理
因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付以及个人敏感信息。
为了解决HTTP协议对于信息不安全的缺陷,需要使用另一种协议:HTTPS(安全套接字层超文本传输协议),为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
1.2 与http关系密切的协议: IP, TCP和DNS
1.2.1 负责传输的IP协议
IP协议数据网络层, IP协议的作用是把各类数据包传送给对方. 而要确保确实传送到对方那里, 则需要满足各类条件. 其中两个重要的条件是IP地址和MAC地址.
IP地址指明了节点被分配到的地址, MAC地址是指网卡所指的固定地址. IP地址和MAC地址进行配对, IP地址可以变换, 但是MAC地址基本不会更改.
1.2.2 确保可靠性的TCP协议
TCP位于传输层, 提供可靠的字节流服务
字节流服务: 为了方便传输, 将大块数据分割成以报文段为单位的数据包进行管理.
为了确保无误将数据送达目标处, TCP协议采用了三次握手策略.当然除了三次握手策略, 还有很多其他的手段保证通讯的可靠性
1.2.3 负责域名解析的DNS服务
DNS服务是和HTTP协议一样位于应用层的协议. 他提供域名与IP地址之间的解析服务.
2. 什么是HTTPS协议
HTTPS的全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议。https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密。
SSL并非是应用层的一种新协议. 只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS (Transport Layer Security) 协议替代了。
通常, HTTP直接和TCP通信, 当使用SSL时, 演变成了先和SSL通信, 再由SSL和TCP通信了, 简而言之, 所谓HTTPS, 其实就是身披SSL协议的这层外壳的HTTP。
在采用SSL后, HTTP就拥有了HTTPS的加密, 证书和完整性的保护这些功能。
SSL是独立于HTTP的协议, 所有不光是HTTP协议, 其他运行在应用层的SMTP(邮件协议)和Telnet等协议均可配合SSL协议使用.。可以说SSL是当今世界上应用最广泛的网络安全技术。
3. 两者的区别
3.1 https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
3.2 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3.3 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
3.4 http的连接很简单,是无状态的。
3.5 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
4. HTTPS协议的缺点
我们知道万事都不是绝对完美的,既然HTTPS协议有这么大的有点,那么它肯定也有一定的缺点。
其中的一个原因是, 因为与纯文本通信相比, 加密通信会消耗更多的CPU资源以及内存资源, 如果每次通信都加密, 会消耗相当多的资源, 平摊到一台计算机上时, 能够处理的请求数量必定会随之减少。
因此, 如果是非敏感信息则使用HTTP通信, 只有在包括个人信息等敏感数据时, 才利用HTTPS加密通信, 以节省资源. 除此之外, 想要节约购买证书的开销也原因之一。