http和https有什么区别(一文了解HTTP和HTTPS的本质)
展开全部
Http基于tcp协议,默认为端口80。它有什么特点?它基于请求和响应。如果你抓取一个包,你可以看到http协议有一个请求消息和一个响应消息,它是一个无状态协议和无连接协议。
没有连接意味着:
http协议一次只能处理一个请求,这就限制了我们每个连接只能处理一个请求,也就是服务器处理完客户的一个请求后就会断开连接,也就是一个连接处理一个请求。
还有其他后续请求需要重新启动连接。这种方法其实是为了节省时间,但是一般的网页比较复杂,可能需要在一个连接中处理多个请求。这时,我们不 我们不想处理完一个请求,所以我们断开连接,但是我们想在一个连接中处理多个请求。因此,在这个协议中定义了一个新的功能,称为保持活动机制,它可以保持我们的一个连接。我们保留之后,就变成了一个长链接。
无状态意味着:
也就是这个协议对客户端没有记忆能力,导致了一个问题,比如一个请求断开,这个请求中的一个消息没有保留。然后下一个要求又来了。那么这个时候想用最后一个请求怎么办呢?那 当需要重发时。
比如使用淘宝,用户需要先登录,然后购买商品。那个登录是请求,买商品是另一个请求。购买商品有必要先登录吗?这个时候,我希望他能帮我保留一些与登录相关的信息。我该怎么办?这个时候应该采取什么样的机制呢?它是一个cookie机制和一个会话机制。
明文是未经加密的邮件。所以可以看到账号的密码,很不安全,不会认证 quot身份 quot双方的。比如我们有一个客户端,想和服务器通信,中间有第三方的话,会拦截篡改消息。因为客户端和服务器没有经过认证,中间的第三方可以窃取消息,修改后再发送给服务器。这是一个非常不安全的地方,这是http协议非常明显的缺点。基于这个缺点,HTTPS应运而生,也就是超文本传输安全协议。
Https协议是加密的,它的消息叫做密文。没有相关的钥匙,你可以 看不到里面具体的消息,也可以确保我们的一条消息可以避免被窃取。
http + 加密 + 身份认证 + 完整性 = HTTPS
https协议是基于tcp的443端口。我们经常把https称为披着ssl协议外壳的http协议。http协议和https协议都是基于TCP协议,但是对于https协议,先有一个ssl协议,需要先用一个ssl包加密。httpS网络中数据包封装的过程:先封装一个ssl协议头,再封装一个http协议,所以需要先基于一个ssl进行加密,然后在加密的基础上发送HTTP消息。
Ssl协议有一个非常复杂的握手过程。不是tcp的这个握手,是我们ssl握手的过程。这个过程很复杂,
你可以看看这张照片:
这个图的过程其实很复杂。让 让我们用一个简单的例子来帮助你理解这个过程。客户端希望与服务器建立连接。
比如这个女生是客户。这个男孩是个服务员。客户端将与服务器建立https连接。男生也很真诚,于是他说好啊,既然你想和我建立联系,那就 我们先建立一条安全通道。也就是ssl握手的过程。
第一条消息是由客户端发起的。所以它 被称为客户端问候消息。包括消息客户端支持的所有加密方法。男生会在女生告知的加密方式中选择相同的加密方式,也就是会选择相同的语言进行交流。
第二条消息是男生根据女生发的第一条消息回复的一条消息。刚才客户端叫客户端你好,现在男孩 的回复叫做服务器你好。
当然,作为一个绅士,男孩想表达他的诚意。他把自己的身份证给了女孩,说明我是合法公民,相当于服务器的一个证书,给了客户端。然后客户端获得这个证书,其中包含一些关键信息。所以拿到这个证书后,她在本地默默生成了一个密钥。该密钥用于加密后续的传输数据,即加密http协议的后续交互消息。她以某种方式告诉男孩关键信息。男孩们也写了下来。它写下来之后,还会发消息告诉这个客户端,我写下来了。之后,我们将使用这种加密方法进行安全聊天。至此,我们的ssl握手结束了。
刚才那是简单的流程,下图是详细版。
客户端在左边,服务器在右边。
向服务器发送握手握手消息,并向服务器发送所有加密规则。服务器收到后发回一个server hello,其中包含一组加密算法和一个ID消息,以证书的形式发送给浏览器。第二条消息是server hello,第三条消息也是我们的一个证书。获得证书后,客户端验证其证书,看其身份是否合法。如果证书可信,客户端会在本地静默生成一个密钥,然后在生成密钥后告诉服务器这个密钥。客户密钥交换是一个交换的客户密钥,他将把一个加密的包描述发送给他的客户。我要做的就是把我本地生成的密钥告诉客户端,服务器收到后会确认。然后ssl握手就结束了。
总结:
首先加密功能是用客户端生成的密钥加密,身份认证是用服务器颁发的证书来完成的。只有服务器发送证书,这称为单向身份验证。如果有的网站安全要求比较高,可以做双向认证!只有服务器发送一个证书进行单一认证,所以如果要做双向认证,就意味着客户端和服务器都要进行认证,互相交换证书。也就是说,我的客户端要向CA申请一个证书,然后把这个证书发给服务器,这样服务器就可以认证我的客户端 的身份。
完整性是为了防止第三方篡改消息。有一种称为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的优势又那么明显。但是还是有一些网站,比如一些小公司,因为对服务器要求比较高,可能用不起。
王者之心2点击试玩
2023-12-12 · 百度认证:安徽斯百德信息技术有限公司
安信SSL证书
安信SSL证书专售Symantec、Geotrust、Comodo以及RapidSSL等多家全球权威CA机构的SSL数字证书。支持各种SSL证书申请和安装服务,免手续费,全程专业技术指导。
向TA提问
关注
展开全部
https和http区别如下:
1、http的URL 以http:// 开头,而https 的URL 以https:// 开头
2、http 是不安全的,而 https 是安全的
3、http 标准端口是80 ,而 https 的标准端口是443
4、在OSI 网络模型中,http工作于应用层,而https 工作在传输层
5、http 无法加密,而https 对传输的数据进行加密
6、http无需证书,而https 需要CA机构颁发的SSL证书
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询