「计算机网络」浅谈HTTP和HTTPSHTTP2(概述区别与联系)

Posted FrozenPenguin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「计算机网络」浅谈HTTP和HTTPSHTTP2(概述区别与联系)相关的知识,希望对你有一定的参考价值。

「计算机网络」浅谈HTTP和HTTPS、HTTP2(概述、区别与联系)

参考&鸣谢

看完这篇 HTTPS,和面试官扯皮就没问题了 程序员cXuan

什么是HTTP? HTTP 和 HTTPS 的区别? 前端小白OvO

关于面试:HTTP VS HTTPS(HTTP与HTTPS的区别) BuildF

面试问题: HTTP 与 HTTPS 的区别 小雄Ya


文章目录

一、什么是HTTP

HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范

在计算机和网络世界有,存在不同的协议,如广播协议、寻址协议、路由协议等等…

HTTP是一个传输协议,即将数据由A传到B或将B传输到A,并且 A 与 B 之间能够存放很多第三方,如: A<=>X<=>Y<=>Z<=>B

传输的数据并不是计算机底层中的二进制包,而是完整的、有意义的数据,如html 文件, 图片文件, 查询结果等超文本,能够被上层应用识别

在实际应用中,HTTP常被用于在Web浏览器和网站服务器之间传递信息,以明文方式发送内容,不提供任何方式的数据加密

特点如下:

  • 支持客户/服务器模式
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
  • 无状态:HTTP协议无法根据之前的状态进行本次的请求处理

二、为什么会有HTTPS

一个简单的回答可能会是 HTTP 它不安全。由于 HTTP 天生明文传输的特性,在 HTTP 的传输过程中,任何人都有可能从中截获、修改或者伪造请求发送,所以可以认为 HTTP 是不安全的;在 HTTP 的传输过程中不会验证通信方的身份,因此 HTTP 信息交换的双方可能会遭到伪装,也就是没有用户验证;在 HTTP 的传输过程中,接收方和发送方并不会验证报文的完整性,综上,为了结局上述问题,HTTPS 应用而生。


三、什么是HTTPS

HTTPS 的全称是 Hypertext Transfer Protocol Secure,它用来在计算机网络上的两个端系统之间进行安全的交换信息(secure communication),它相当于在 HTTP 的基础上加了一个 Secure 安全的词眼,那么我们可以给出一个 HTTPS 的定义:HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。 HTTPS 是 HTTP 协议的一种扩展,它本身并不保传输的证安全性,那么谁来保证安全性呢?在 HTTPS 中,使用传输层安全性(TLS)安全套接字层(SSL)对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS


四、HTTPS解决了什么问题

HTTPS 协议提供了三个关键的指标

  • 加密(Encryption), HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。
  • 数据一致性(Data integrity),数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整的传输到服务端,保证用户发的是什么,服务器接收的就是什么。
  • 身份认证(Authentication),是指确认对方的真实身份,也就是证明你是你(可以比作人脸识别),它可以防止中间人攻击并建立用户信任。

有了上面三个关键指标的保证,用户就可以和服务器进行安全的交换信息了。那么,既然你说了 HTTPS 的种种好处,那么我怎么知道网站是用 HTTPS 的还是 HTTP 的呢?给你两幅图应该就可以解释了。

HTTPS 协议其实非常简单,RFC 文档很小,只有短短的 7 页,里面规定了新的协议名,默认端口号443,至于其他的应答模式、报文结构、请求方法、URI、头字段、连接管理等等都完全沿用 HTTP,没有任何新的东西。

也就是说,除了协议名称和默认端口号外(HTTP 默认端口 80),HTTPS 协议在语法、语义上和 HTTP 一样,HTTP 有的,HTTPS 也照单全收。那么,HTTPS 如何做到 HTTP 所不能做到的安全性呢?关键在于这个 S 也就是 SSL/TLS


五、HTTP与HTTPS的区别与联系

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理,相对更安全
  • HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443
  • HTTPS 由于需要设计加密以及多次握手,性能方面不如 HTTP
  • HTTPS需要SSL,SSL 证书需要钱,功能越强大的证书费用越高

六、HTTP2是什么

HTTP/2 超文本传输协议第2版,是 HTTP/1.x 的扩展。所以 HTTP/2没有改动HTTP的应用语义,仍然使用HTTP的请求方法、状态码和头字段等规则。

它主要修改了HTTP的报文传输格式,通过引入二进制分帧层实现性能的提升

现有很多主流浏览器的 HTTPS/2 的实现都是基于SSL/TLS的,所以基于 SSL/TLS 的 HTTP/2 连接建立过程和 HTTPS 差不多。在建立连接过程中会携带标识期望使用 HTTP/2 协议,服务端同样方式回应。


七、延伸

什么是 SSL/TLS、探究 HTTPS(对称加密与非对称加密)

本文初衷是为了初步认识HTTP、HTTPS、HTTP2,其中的实现细节我会在后续文章更新~

计算机网络---应用层(httpshttp和https的区别对称加密非对称加密中间人攻击数据摘要指纹公正)

目录

一、https协议

1、https协议

2、http VS http

二、https相关的安全问题

1、对称加密、非对称加密及中间人攻击

2、https协议采用的加密方式


一、https协议

1、https协议

应用层的主要作用就是为应用程序提供服务。传输层协议将接收到的数据交付给应用层,应用层将数据进行处理后直接交给应用程序,实现相应的用户请求。

http和https是应用层非常重要的协议,使用非常广泛。https协议的协议结构以及工作方式完全基本相同,最主要的区别就在于https提供了一些安全机制,相比于http协议更加安全。

2、http VS http

http协议和https协议最主要的区别就在于它们的通信细节不同,https协议提供了一些对数据的保护措施,即在数据发送前要先对数据进行加密处理,接收方收到数据后在进行解密,从而保证了数据的安全性,相比于http协议https协议更加安全。但是这些加密和解密都是需要消耗时间和内存的,因此https的效率比http效率低。

  • 安全性:https相对安全;http不安全
  • 效率:http比https的效率高
  • http使用的是80端口,https使用的是443端口。

二、https相关的安全问题

无论是客户端发送请求还是服务器端响应请求,都需要保证数据在网络中传输的安全性,http协议直接将原始数据在网络中进行传输,而https对数据进行了加密处理

1、对称加密、非对称加密及中间人攻击

基础概念

  • 秘钥:某个用来完成加密、解密、完整性验证等密码学应用的秘密信息。
  • 公钥:对所有人公开的秘钥称为公钥。
  • 私钥:保密的、不能让别人知道的秘钥。

对称加密

通信双方采用同一个秘钥进行加密和解密的方式称为对称加密。

举一个简单的例子:

要传输的数据是整数;秘钥是1234也是一个整数;加密方式是将不数据和秘钥进行异或运算。

那么接收方接收到这个数据后,同样的使用相同的秘钥对数据进行异或运算就可以得到解密后的数据,也就是实际想要发送的数据。

789--->加密--->789^1234--->1991--->解密--->1991^1234--->789

对称加密的缺点:

  • 每次通信通信双方都需要事先协商好秘钥。
  • 一旦秘钥被第三方(黑客)拿到,任何一方发送的消息第三方获取到都可以进行解密。
  • 安全性较差

对称加密的优点:

  • 简单快速且高效
  • 加密算法易于实现

非对称加密

非对称加密是指,发送方通过一个公开的、所有人都可以随意获取的公钥对数据进行加密,接受放接收到加密后的数据在通过一个只有自己直到的私钥对数据进行解密。在数据传输过程中,私钥是不需要进行传输的,也就是说私钥不会被任何人知道。因此,即使发送的数据被第三方恶意获取,他也很难知道真正的数据内容。

中间人攻击

中间人攻击是针对非对称加密进行的一种攻击方式,具体方式如下:

  • 中间人攻击是指,通信双方发送的数据都径过一个中间服务器(恶意服务器)进行转发,将中间服务器称为中间人。
  • 在非对称加密中,使用一对公钥和私钥对数据加密。在数据发送前,接收方需要事先将公钥发送给发送方,发送方使用公钥对数据进行加密。
  • 在接收方给发送方发送公钥时,中间服务器将公钥劫持,发送一个自己的公钥。
  • 接收方实际上拿到的是中间服务器的公钥,使用该公钥对数据进行加密后,在发送给接收方时再次被中间人截取到数据使用自己的私钥进行解密就可以直到原始数据了。
  • 同样地,中间服务器还可以将截取到的数据进行篡改,在使用公钥进行加密发送给接收方,这样接收方就会收到一份恶意的数据。

对称加密和非对称加密结合的加密方式

非对称加密虽然相比于对称加密更加安全,但是由于加密方式更加复杂、加密算法实现复杂、效率低以及中间人攻击等原因,通常采用的加密方式是对称加密和非对称加密相结合对数据进行加密处理。

处理方式:

  • 对数据的加密使用对称加密
  • 双方协商的秘钥通过非对称加密的方式进行传送,保证了秘钥的安全性。
  • 秘钥协商好在使用秘钥对数据采用对称加密方式进行发送。

示例:

假设Alice希望与Bob通信。同时,Mallory希望拦截窃会话以进行窃听并可能在某些时候传送给Bob一个虚假的消息。

首先,Alice会向Bob索取他的公钥。如果Bob将他的公钥发送给Alice,并且此时Mallory能够拦截到这个公钥,就可以实施中间人攻击。Mallory发送给Alice一个伪造的消息,声称自己是Bob,并且附上了Mallory自己的公钥(而不是Bob的)。

Alice收到公钥后相信这个公钥是Bob的,于是Alice将她的消息用Mallory的公钥(Alice以为是Bob的)加密,并将加密后的消息回给Bob。Mallory再次截获Alice回给Bob的消息,并使用Mallory自己的私钥对消息进行解密,如果Mallory愿意,她也可以对消息进行修改,然后Mallory使用Bob原先发给Alice的公钥对消息再次加密。当Bob收到新加密后的消息时,他会相信这是从Alice那里发来的消息。

解决策略:

  • 对数据进行特殊处理,接收方收到数据后先验证数据是否发生了改变。即是否存在消息被篡改问题。
  • 对远端服务器进行认证,确保接收到的数据不是由中间服务器发来的。

2、https协议采用的加密方式

无论是对称加密还是非对称加密都存在一定的安全问题你,那么https协议是如何提高数据安全性的呢?

防止中间消息被篡改问题

  • 使用hash算法对要发送的数据进行处理,得到一个定长的序列,这个序列可以表示要发送的数据,同时当发送的数据任何一处4发生改变时,使用hash算法得到的定长序列都是不同,这里的定长序列我们称为数据摘要
  • 使用加密算法对数据摘要进行加密处理得到数据签名(也成为指纹),将发送的数据和数据签名一同发送给接收方吧,这是即使中间服务器截取了数据也不能对数据进行修改,因为一旦修改了数据摘要也就发生了变化,接收端可以通过数据数据摘要和数据摘要进行对比就会发现数据被修改了。

远端服务器认证

  • 一般比较安全的服务器都会进行公证,这里的公证是指有权威部门办法ca证书,证书包括了公钥私钥、以及该服务器的一些权威信息等。
  • 客户端一般都内置了服务器端的证书,就可以通过证书来判断数据是否是由中间服务器发送的。

 对称加密和非对称加密结合的加密方式

处理方式:

  • 对数据的加密使用对称加密
  • 双方协商的秘钥通过非对称加密的方式进行传送,保证了秘钥的安全性。
  • 秘钥协商好在使用秘钥对数据采用对称加密方式进行发送。

https就是通过数据摘要、数据签名、公证以及对称加密和非对称加密相结合的方式,对数据进行处理,保证了数据的安全性。

 

以上是关于「计算机网络」浅谈HTTP和HTTPSHTTP2(概述区别与联系)的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Http和TCP

浅谈HTTP与HTTPS区别

浅谈web api和Webservice

浅谈HTTP OSI七层网络模型

浅谈HTTP协议

HTTP协议浅谈