http和https的区别
在请求网站的时候,我们经常用到http和https去请求,那么这两者有什么区别呢?
1、http是一个简单的请求-响应协议,它通常运行在TCP(TCP:传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议)之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。而https是以安全为目标的 HTTP 通道,在http的基础上加入了ssl(ssl是为网络通信提供安全及数据完整性的一种安全协议。tls与ssl在传输层与应用层之间对网络连接进行加密),用于传输加密和身份认证。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议,信息是加密的。
3、https需要到CA(产生和确定数字证书的第三方可信机构)申请证书,一般免费证书较少,因而需要一定费用,而http免费。
4、http的响应速度更快,相同网络环境下,https协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电,原因是因为服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本,增加了响应时长。
5、两者的原理有本质区别
http的原理:
① 客户端的浏览器首先要通过TCP将网络与服务器建立连接,一般TCP的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME (多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开)信息包括请求修饰符、客户机信息和许可内容 。
② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容
https的原理:
① 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器 ;
② 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数 ;
③ 客户端对服务器的证书进行验证,并抽取服务器的公用密钥;然后,再产生一个称作 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加 / 解密),并将加密后的信息发送给服务器 ;
④ 客户端与服务器端根据 pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和 MAC密钥(消息认证码(带密钥的Hash函数)) ;
⑤ 客户端将所有握手消息的 MAC 值发送给服务器 ;
⑥ 服务器将所有握手消息的 MAC 值发送给客户端 。
⑦默认端口是443
总的来说,http廉价、快,https安全、有一定的服务器成本。