https和http有什么区别(HTTP和HTTPS之间的区别体现在哪)

https和http有什么区别(HTTP和HTTPS之间的区别体现在哪)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

http协议是基于tcp协议。默认是80端口。它的特点是什么?它是基于请求和响应的。大家抓个包能看到http协议有一个请求报文有一个响应报文。还有它是一个无状态的协议。还有一个无连接的协议。

https和http有什么区别(HTTP和HTTPS之间的区别体现在哪)

无连接是指:

http协议每次只能处理一个请求。限制我们每次连接只处理一个请求。就是服务器处理完客户的一个请求。并且收到客户的应答之后就会断开连接。即一个连接处理一个请求。

后续再有其他请求需要重新发起连接。它采用这种方式啊。其实是为了节省时间。但是一般web页面都比较复杂。可能需要在一个连接里面要处理多个请求。这时就不希望处理完一个请求。就断开连接。而是希望一个连接里面要去处理多个请求。于是在这个协议里面定义了一个新的功能叫做keep alive机制。它就可以让我们的一个连接保持。我们让它保持之后呢。它就变成了一个长链接。

https和http有什么区别(HTTP和HTTPS之间的区别体现在哪)

无状态是指:

就是这个协议对于客户端是没有任何的记忆能力。那它导致一个问题。例如一个请求。断开了。没有保留本次请求里面的一个消息。然后下一个请求又来了。那么此时要用到上一个请求的东西怎么办?这时候就需要重新传输。

比如说使用淘宝。用户需要先进行登录。然后再去购买商品。那登录是一个请求。购买商品又是另外一个请求。那购买商品的时候是不是一定要先登录。这时就希望他能够给我保留一些登录相关的信息。怎么办呢?这时候我们应该采取一些什么样的机制来进行呢?就是一个cookie的机制和一个session的一个机制。

明文就是没有加过密的报文。所以账号密码都可以看见。非常的不安全。也不会对双方的“身份”进行认证。比如说我们有一个客户端。要想跟服务器进行一个通信。那中间如果有一个第三者。它就做了一个截取消息。篡改消息。因为客户端和服务器它并没有进行身份认证。所以中间第三者他可以把这个消息窃取到。进行修改之后再发给服务器。这是一个很不安全的地方。这就是http协议的一个非常明显的一个缺点。基于这个缺点HTTPS(全称:Hyper Text Transfer Protocol Secure)应运而生。就是超文本传输安全协议。

https和http有什么区别(HTTP和HTTPS之间的区别体现在哪)

https协议它是加过密的。它的报文我们叫做密文。没有相关的密钥是看不到里面的具体消息。还可以保证我们的一个消息避免被窃取。

http + 加密 + 身份认证 + 完整性 = HTTPS
https协议是基于tcp的443端口。我们经常把https协议叫做披着ssl协议外壳的http协议。http协议和https协议都是基于TCP协议的。但是对于https协议呢。它是先有一个ssl协议的。它需要先有1个ssl封装加密。HTTPS网络中数据包的封装的过程:先封装一个ssl协议头部。然后再去封装一个http协议。所以它需要先去基于1个ssl加密的。然后呢在这个加密的基础上面发送http的消息。

ssl协议它有一个非常复杂的一个握手过程。不是tcp的这个握手。我们的ssl握手的过程。过程比较复杂。

大家可以看一下这个图:

https和http有什么区别(HTTP和HTTPS之间的区别体现在哪)

这个图的过程其实是很复杂的。我们用一个比较浅显的例子来帮大家来理解这个过程。客户端想要跟服务器建立连接的基础上面去建立连接。

比如说这个女生是一个客户端。这个男生是服务器。客户端要去跟服务器建立https的连接。男生也是很有诚意的。他就说好呀。那既然你要跟我建立连接,我们先建立一个安全通道吧。也就是ssl握手的过程。

第一条消息是由客户端发起的。所以叫做client hello消息。消息包括客户端支持的所有加密方式。男生(服务器)会在女生(客户端)告诉的加密方式里面去选一个一样的加密方法。也就是要选择一样的语言来进行沟通。

第二条消息。是男生基于女生发的第一条消息回应的一个消息。刚刚客户端这边叫做client hello。现在男生回复的叫做server hello。

当然男生作为一个gentleman。他要表达他的诚意。他把他的身份证给了这个女生表示我是一个合法公民。相当于服务器的一张证书。给到了客户端。那客户端拿到这个证书。证书里面包含了一些密钥信息。所以拿到这个证书之后。她在本地默默地生成了一个密钥。这个密钥用来加密后面的传输数据。就是用来加密后面的http协议的交互消息的。她就把这个密钥消息通过一定的方式来告诉了这个男生。男生也记下来了。它记下来之后。它也要发一条消息告诉这个客户端我记下来了。那以后我们就用这个加密方式来进行一个安全聊天。至此我们的ssl握手就结束了。

刚刚那个是简易过程。下图为一个细化版。

左边是客户端。右边是服务器

客户端给服务器发一个handshake(client hello)握手消息。把所有的加密规则都发给服务器。那服务器收到之后回了一个server hello。这里面包括一组加密算法。一个身份证消息。以证书的形式发给了浏览器。第二条消息是server hello。第三条消息也是我们的一个证书。客户端获得了证书之后去验证他的证书。看他的身份是不是合法的。如果这个证书要是受信任的。客户端就会在本地默默生成一个密钥。生成的密钥之后把这个密钥告诉服务器。通过client key exchange就是客户端密钥来进行一个交换。他会给他发一个加密的一个套件说明给到客户端。总共做的事情就是把我本地生成的密钥告诉了客户端。那服务器他收到之后也要去确认一下。那ssl握手就结束。

总结:

首先加密的功能通过客户端生成的一个密钥来进行加密。身份认证是通过服务器给发的证书做身份认证。只有服务器发了证书这种叫作单向认证。如果有些网站安全要求比较高。可以做双向认证!单项认证只有服务器发了证书。那如果要去做双向认证。就是客户端和服务器都认证。相互交换证书。也就是说我的客户端也要去向CA申请一张证书。然后把这张证书发给服务器。让服务器也来认证一下我客户端的身份

完整性验证就是防止有第三方去篡改消息。有一个叫作MD5的哈希算法。通过MD5进行哈希算法。相当于我打了一个补丁。放在客户端的消息。然后把消息带这个补丁发给服务器。让服务器收到后再去验证对比一下这个摘要的正确性。这个摘要跟客户端的那个补丁是否一样的。如果他们一样。就表示这个消息没有被篡改。

那面试官常常会问的一个问题就是:https协议和http协议的区别

第一:安全性

从安全性角度。 https协议是比http协议安全的。因为http是明文。易受攻击。也没有办法认证身份。也没有办法保证数据的完整性。https协议呢?它密文加密了。还能认证身份。还能防止消息被篡改。对安全性是非常高的。这是他们两个的第一个非常重要的区别.

第二:灵活性

http是tcp的80端口。https是tcp的443端口。灵活性不同。 http协议也没有复杂的握手过程。https因为ssl这个协议的实现过程比较复杂,有一些加密。有些密钥的计算。有一些很复杂的技术在里面。所以它的技术门槛比较高。如果你要基于这个技术去开发一个网站的话。它的技术要求会比较高。

第三:速度

很明显http协议速度肯定快。因为它不需要经过复杂的ssl的握手。所以它的速度非常快。https协议需要经过一些复杂的安全过程。所以需要服务器性能好。服务器如果资源不够。都没有办法承载这个复杂的加密算法。也会导致我们用户的访问速度会比较慢.

第四:经济适用度

就是http协议。它没有一些额外的费用。但是呢。https协议。要去CA颁发证书。这个需要花钱的。年费大概是600到1000左右。还需要一些技术支持等费用。它是比较贵的。https优势这么明显。但是仍然有一些网站。像有一些小公司。由于对服务器要求比较高。可能就承担不起.

分享到 :
相关推荐

HostGator主机数据库phpMY管理功能介绍

HostGator作为出色美国主机商。拥有大批量的用户。新手建站的时候。肯定是需要使...

使用便宜海外vps要注意哪些事项

使用便宜海外vps要注意的事项有:1。不要访问未知网站。防止被恶意网络攻击;2。不要...

sql2012怎么卸载干净(sql2012如何卸载干净)

大家好,今天来介绍sql2012怎么卸载干净(怎么卸载sqlserver2022)[...

BuyVM主机挂载数据盘的方法(buyvm挂载硬盘方法)

BuyVM是一家加拿大主机商。主要提供国外便宜VPS主机产品。目前有美国拉斯维加斯。...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注