http 和 https 的区别
基本概念
对于多数使用浏览器上网的朋友来说,并不会在乎我们打开网站所使用的是HTTP协议还是HTTPS协议,因为无论使用哪个协议,我们看到的内容都是一样的,在内容上没有一点儿区别,但我们从字面上看就有明显的区别,这多了一个S就是安全的意思,所以,相对来说HTTPS比HTTP更加安全,这是我们简洁明了的区别。
http
-
是一种用于分布式,协作式和超媒体信息系统的应用层协议。简单来说就是一种发布和接收HTML页面的方法,被用于在web 浏览器和网站服务器之间传递信息。
-
HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
-
HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
https
- 是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS
开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:
- 1、TCP 三次同步握手
- 2、客户端验证服务器数字证书
- 3、DH 算法协商对称加密算法的**、hash 算法的**
- 4、SSL安全加密隧道协商完成
- 5、网页以加密的方式传输,用协商的对称加密算法和**加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。
- 第一次握手:客户端尝试连接服务器,向服务器发送 syn 包(同步序列编号Synchronize Sequence
Numbers),syn=j,客户端进入 SYN_SEND 状态等待服务器确认 - 第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK
包,此时服务器进入 SYN_RECV 状态 - 第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
简化:
HTTP 与 HTTPS 区别
-
HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好
-
使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构)
申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign
等。 -
HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而
HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。 -
http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
-
HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。