1、HTTP和HTTPS有什么不同?
1、HTTP协议
HTTP协议是超文本传输协议,是一种使用明文数据传输的网络协议。一直以来HTTP协议都是最主流的网页协议,HTTP协议被用于在Web浏览器和网站服务器之间传递信息。以明文的方式发送内容、不提供任何方式的数据加密,如果攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读懂其他的信息。传输端口为80。
HTTP协议的特点
1、简单快速
2、灵活
3、无状态
无状态的原因:每次请求都是独立的,上一次请求和下一次请求互不相干。
比如,你登录了某个网站,下一次请求理论上来说就不需要再登录了。http是无状态的,它不能知道你上一次请求已经登录过了。所以需要借助其他东西来完成这个登录认证。
因为http是无状态的,所以就引入了会话保持:
会话保持-:session 和 cookie
状态记录 ------> 登录验证
由于http协议的明文传输会让用户存在非常大的安全隐患,个人信息不安全,容易泄露。为了解决这个缺陷,于是就引入了HTTPS协议。
2、HTTPS协议
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。HTTPS协议基于TLS/SSL协议加密进行TCP传输 进行了加密,拿到的是密文。传输端口为443。
为了数据传输的安全,HTTPS协议在HTTP的基础之上加入了SSL、TLS协议,SSL/TLS协议依靠证书来验证服务器的身份,并且为浏览器和服务器之间的通信加密。HTTP协议可以理解为HTTP协议的升级,就是在HTTP的基础之上增加了数据加密。对数据进行加密,然后再发送到服务器。这样就算数据被第三者截获,但是由于数据是加密的,所以你的个人信息仍然是安全的。
HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,很多大型互联网网站,如百度、淘宝、腾讯很早就已经把HTTP换成HTTPS了。
3、HTTP和HTTPS的区别
HTTP是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
HTTPS是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。
1、安全性不同
2、网站申请流程不同
3、默认端口不同
4、连接过程的不同
1、安全性不同
http传输的信息是明文传输。
① 当你使用浏览器访问一个HTTP网站的时候,你会发现浏览器对该HTTP网站显示“不安全”的安全警告,提示用户当前所访问的网站可能会存在风险。
HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
② 而如果你访问的是一个HTTPS网站的时候,情况是不也一样的。你会发现浏览器的地址栏会变成绿色,企业名称会展示在地址栏中,地址栏上面还会出现一把“安全锁”的图标。这些会给用户很大的视角上的安全体验。
https://前缀表明的是使用SSL(安全套接字)或TSL加密的,你的电脑与服务器之间收发的信息传输将会更加的安全。
2、网站申请流程不同
https协议需要到CA申请证书,一般免费证书很少,需要交费,web服务器启用SSL需要获得一个服务器证书并将该证书与要使用的SSL的服务器绑定。
http页面响应速度比https快。
3、默认端口不同
http和https使用的是完全不同的连接方式,同时使用的端口也不同,http使用的是80端口,https使用的是443端口。在网络模型中,HTTP工作于应用层,而HTTPS工作在传输层。
4、连接过程的不同
http的连接很简单,是无状态的,无状态是指服务器不知道客户端是什么状态。无状态的原因:每次请求都是独立的,上一次请求和下一次请求互不相干。比如,你登录了某个网站,下一次请求理论上来说就不需要再登录了。但是由于http是无状态的,它不能知道你上一次请求已经登录过了。
http中使用的是tcp三次握手进行连接。
https中使用的是tcp的三次握手加上TLS(安全传输层)四次握手。
2、HTTP比HTTPS多了几次握手?
1、HTTP的三次握手
HTTP的三次握手其实就是使用三次TCP握手确认建立一个HTTP连接。
详细讲解见文章:TCP 三次握手、四次断开_请说明tcp协议三次握手连接与四次挥手断开的过程-CSDN博客
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
2、HTTPS握手过程
HTTPS在HTTP的基础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。具体是如何进行加密,解密,验证的,且看下图,下面的称为一次握手。
详细讲解可见文章:
3、 为什么HTTPS是安全的?
在HTTPS握手的客户端解析证书中,如果站点的证书是不受信任的,会显示出现下面确认界面,确认了网站的真实性。另外服务端解密信息和客户端解密信息,使用客户端私钥加密解密,保证了数据传输的安全。
总结:
主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包。
而 HTTPS除了 TCP 的3个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
4、对于HTTPS,在验证阶段,除了传递密钥,还会发送什么?
我觉得应该是还发送了使用使用CA证书认证过的证书。这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等。
5、HTTP2.0相对于HTTP1.0有什么区别?
1、HTTP/2采用二进制格式而非文本格式
2、HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
3、使用报头压缩,HTTP/2降低了开销
4、HTTP/2让服务器可以将响应主动“推送”到客户端缓存中
文末了,送书福利来了
书籍简介:最近在找工作的小伙伴们是不是也发现了,很多公司都要求会熟练使用Kubernetes,而
- Kubernetes以容器为重要组成部分,而容器的安全性如今越来越受到挑战。所幸,我们可以看到 …
在Kubernetes的实践中,开发者也逐渐在开始尝试引入零信任安全模型 (Zero Trust Security Model),甚至将它应用在Kubernetes集群内部,杜绝了大量来源于内部的安全隐患。 - 随着AI和机器学习技术的快速发展,越来越多的企业开始将AI和机器学习应用于自身的业务中。Kubernetes作为一个可扩展的容器编排平台,将为AI和机器学习应用提供更好的支持。企业可以利用Kubernetes来部署和管理AI和机器学习应用,提供更加稳定、可靠和高性能的服务。