介绍 | 关于http和https的区别

Posted 创智俱乐部ISA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了介绍 | 关于http和https的区别相关的知识,希望对你有一定的参考价值。

点击蓝字关注,创软助你长知识

介绍 | 关于http和https的区别

什么是http

介绍


超文本传输协议(HTTP)是用于传输诸如html的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。 HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。虽然通常基于TCP / IP层,但可以在任何可靠的传输层上使用;也就是说,一个不会静默丢失消息的协议,如UDP。

概述

        HTTP是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协定)。它是 Web 上数据交换的基础,是一种 client-server 协议,也就是说请求通常是由像浏览器这样的接受方发起的。一个完整的web文档是由不同的子文档重新组建而成的,像是文本、布局描述、图片、视频、脚本等等。


介绍 | 关于http和https的区别


        客户端和服务端通过交换各自的消息(与数据流正好相反)来进行交互。通常由像浏览器这样的客户端发出的消息叫做 requests,那么被服务端回应的消息就叫做 responses。

        HTTP被设计于上20世纪90年代初期,是一种可扩展性的协议。它是应用层的协议,虽然理论上它可以通过任何可靠的传输协议来发送,但是它还是通过TCP,或者是TLS-加密的TCP连接来发送。因为它很好的扩展性,时至今日它不仅被用来传输超文本文档,还用来传输图片、视频或者向服务器发送如HTML表单这样的信息。HTTP还可以根据网页需求,来获取部分web文档的内容来更新网页。


介绍 | 关于http和https的区别


基本性质


HTTP 是简单的

        即便在HTTP/2中把HTTP消息封装到了frames中,HTTP大体上还是被设计成可读的而且简单的。HTTP的消息能够让人读懂且明白它的意思,还允许简单的测试,放低了门槛,更有利于新来者了解。


HTTP 是可扩展的

        在HTTP/1中就出现了, HTTP headers让协议扩展变得非常容易。只要服务端和客户端在新的headers上语义达成一致,新的功能就可以轻松地被加进来


HTTP 是无状态,有会话的

        HTTP是无状态的:在同一个连接中,两个成功执行的请求之间是没有关系的。这就带来了一个问题,用户没办法在一个网站进行连续的交互,比如在一个电商网站里,用户把某个商品加入了购物车中,换了一个页面后再次添加商品,两次添加商品的请求没有联系,浏览器无法知道最终用户都选择了哪些商品。而用HTTP的头部扩展,HTTP Cookies就可以解决这个问题。把Cookies添加到头部中,创建一个会话来让每次请求都能共享相同的上下文信息,相同的状态。

而HTTP的核心是无状态的,cookies的使用可以创建有状态的会话。


介绍 | 关于http和https的区别

什么是https

介绍


https全称Hyper Text Transfer Protocol Secure,相比http,多了一个secure,这一个secure是怎么来的呢?这是由TLS(SSL)提供的,这个又是什么呢?估计你也不想知道。大概就是一个叫openSSL的library提供的。https和http都属于application layer,基于TCP(以及UDP)协议,但是又完全不一样。TCP用的port是80, https用的是443。总体来说,https和http类似,但是比http安全。

概述

        https具体保护了啥?简单来说,保护了你从连接到这个网站开始,到你关闭这个页面为止,你和这个网站之间收发的所有信息,就连url的一部分都被保护了。同时DNS querying这一步也被保护了,不会发生你输入www.google.com,实际上跑到了另一个网站去了。(这个其实也属于authentication,我这里不是很确定,最开始还写错了一次,应该来说,https保护了DNS Spoofing 和DNS Cache Poisoning等DNS攻击


介绍 | 关于http和https的区别


https安全吗

        世界上没有绝对的安全,https本身不保证availability,同时,https本身想保护的东西也不是那么靠谱。例如赫赫有名的heartbleed,2014年的时候席卷全球。数据显示,前100的网站,44个受到heartbleed威胁,其中就有雅虎,stackoverflow这样的网站。直到今天,还有的网站没有修复这个bug。当然,还有各种各样的安全隐患。比如RSA加密,在某些情况下可以用wiener attack破解。其他的例如入侵CA,或者直接入侵用户的电脑(例如用ssh开remote root shell等)都非常有可能。https对于大部分人来说,意味着比较安全。相比http,让人更加放心。但是作为普通网民,无论在上什么网站,http还是https的时候,可都不能掉以轻心哦!安全隐患无处不在。

介绍 | 关于http和https的区别

http和https的区别

总结


        http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。简单来说,就是加密与不加密区别。比如在公共场所使用服务的时候,有https就用https。而http是明文传输的,如果有人抓到数据包,你在一个http request里的数据都能见到。

转载自:

            https://www.zhihu.com/question/19577317

            https://developer.mozilla.org/zh-CN/docs/Web/HTTP

END

创软俱乐部

微信:sziitlSA



一个让你涨姿势的社团

长按二维码关注

以上是关于介绍 | 关于http和https的区别的主要内容,如果未能解决你的问题,请参考以下文章

HTTP与HTTPS的区别,详细介绍(转)

关于http与https之间的区别

关于http与https之间的区别

http跟https有啥区别

关于git和SVN的介绍和区别

HTTP和HTTPS的区别和常见的面试题