聊聊分布式架构02——Http到Https

这篇具有很好参考价值的文章主要介绍了聊聊分布式架构02——Http到Https。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

HTTP通信协议

请求报文

响应报文

持久连接

状态管理

HTTPS通信协议

安全的HTTPS

HTTP到HTTPS的演变

对称加密

非对称加密

混合加密机制

证书机构

SSL到底是什么

HTTPS是身披SSL外壳的HTTP


HTTP通信协议

一次HTTP请求的通信流程:客户端浏览器通过域名访问网页资源,由DNS解析得到目标服务器的ip,在HTTP、TCP/IP协议的协助下,发送请求到达服务器,服务器返回对应的XML、HTML以及JSON格式的数据。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

这段请求的内容是:请求访问某台HTTP服务器上的/index.html页面资源。

请求报文

请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

其中的POST是告知服务器意图的HTTP方法,在http协议的使用频率越来越高的趋势下,大家约定了REST风格的架构规则。常见的8种HTTP方法:

方法 意图 请求 响应
GET 获取资源 GET /index.html HTTP/1.1 Host: www.hackr.jp 返回 index.html 的页面资源
POST 传输实体主体 POST /submit.cgi HTTP/1.1 Host: www.hackr.jp Content-Length: 1560(1560字节的数据) 返回 submit.cgi 接收数据的处理结果
PUT 传输文件 PUT /example.html HTTP/1.1 Host: www.hackr.jp Content-Type: text/html Content-Length: 1560(1560 字节的数据) 响应返回状态码 204 No Content(比如 :该 html 已存在于服务器上)
HEAD 获得报文首部 HEAD /index.html HTTP/1.1 Host: www.hackr.jp 返回index.html有关的响应首部
DELETE 删除文件 DELETE /example.html HTTP/1.1 Host: www.hackr.jp 响应返回状态码 204 No Content(比如 :该 html 已从该服务器上删除)
OPTIONS 询问支持的方法 OPTIONS * HTTP/1.1 Host: www.hackr.jp HTTP/1.1 200 OK Allow: GET, POST, HEAD, OPTIONS (返回服务器支持的方法)
TRACE 追踪路径 TRACE / HTTP/1.1 Host: hackr.jp Max-Forwards: 2 HTTP/1.1 200 OK Content-Type: message/http 响应 Content-Length: 1024 TRACE / HTTP/1.1 Host: hackr.jp Max-Forwards: 2(返回响应包含请求内容)
CONNECT 要求用隧道协议连接代理 CONNECT proxy.hackr.jp:8080 HTTP/1.1 Host: proxy.hackr.jp HTTP/1.1 200 OK(之后进入网络隧道)

在服务器上的资源类型有很多,比如图片类型、视频类型、 Js、Css、文本等。浏览器如何识别当前类型做不同的渲染呢?

MIME Type:是描述消息内容类型的因特网标准,常见的几种类型

  • 文本文件:text/html,text/plain,text/css,application/xhtml+xml,application/xml

  • 图片文件:image/jpeg,image/gif,image/png.

  • 视频文件:video/mpeg,video/quicktime

我们可以通过两种方式来设置文件的渲染类型,第一种是 Accept,第二种是 Content-Type

  1. Accept: 表示客户端希望接受的数据类型,即告诉服务器我需要什么媒体类型的数据,此时服务器应该根据 Accept 请求头生产指定媒体类型的数据

  2. Content-Type: 表 示 发 送 端 发 送 的 实 体 数 据 类 型 , 比 如 我 们 应 该 写 过 类 似 的 : resposne.setContentType(“application/json;charset=utf-8”)的代码,表示服务端返回的数据 格式是 json。 如果 Accept 和 Content-Type 不一致,假如说 Accept 要接收的类型是 image/gif,但是服务 端返回的数据是 text/html,那么浏览器将会无法解析。

响应报文

响应报文基本上由协议版本、状态码(表示请求成功或者失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主题构成。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

如果用户访问的地址有问题,或者服务端在解析用户请求以 及处理请求逻辑时出现问题,怎么办呢?HTTP状态码会给出具体的响应结果。

类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX ClientError(客户端错误状态码) 服务器无法处理请求
5XX ServerError(服务器错误状态码) 服务器处理请求出错

常见的HTTP状态码:

  1. 200 OK:表示请求成功,服务器已经成功处理了客户端的请求。

  2. 201 Created:表示请求已经被成功处理,服务器创建了新的资源。

  3. 202 Accepted:表示请求已被接受,但尚未被执行。

  4. 204 No Content:表示请求已成功处理,但响应没有包含实体的主体部分。通常用于没有响应主体的DELETE请求。

  5. 206 Partial Content:表示服务器已经成功处理了部分GET请求,通常用于分段下载或断点续传。

  6. 301 Moved Permanently:表示请求的资源已永久性地移动到新的位置,客户端应该使用新的URL进行请求。

  7. 302 Found:表示请求的资源临时移动到了新的位置,客户端应该使用新的URL进行请求,但以后可能还会改回旧的URL。

  8. 304 Not Modified:表示资源未修改,客户端可以使用本地缓存的副本。

  9. 400 Bad Request:表示客户端发送的请求存在语法错误或无法理解的请求。

  10. 401 Unauthorized:表示客户端请求需要进行身份验证,但提供的认证信息无效。

  11. 403 Forbidden:表示客户端没有权限访问请求的资源,服务器拒绝了请求。

  12. 404 Not Found:表示请求的资源未找到。

  13. 408 Request Timeout:表示客户端请求超时。

  14. 500 Internal Server Error:表示服务器在处理请求时发生了内部错误。

  15. 502 Bad Gateway:表示服务器作为网关或代理服务器时,从上游服务器接收到无效的响应。

  16. 503 Service Unavailable:表示服务器暂时不可用,通常是因为服务器过载或维护。

  17. 504 Gateway Timeout:表示服务器作为网关或代理服务器时,从上游服务器接收到超时响应。

持久连接

在最早的http协议中,每进行一次http通信,就需要做一次tcp的连接。而一次连接需要进行3次握手,这种通信方式会增加通信量的开销。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

为了解决TCP连接问题,HTTP/1.1想出了持久连接的方法,通过Connection:Keep-Alive将连接作为持久连接。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态,HTTP/1.1持久连接在默认情况下是激活的。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

状态管理

要知道,HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管 理。也就是说,无法根据之前的状态进行本次的请求处理。保留无状态协议这个特征的同时又要解决类似的矛盾问题,于是引入 了 Cookie 技术。

客户端通过在请求和响应报文中写入Cookie信息来控制客户端的状态;Cookie会根据从服务器端发送的响应报文内的一 个叫做Set-Cookie的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

  • 没有Cookie信息状态下的请求

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

  • 第2次以后(存有cookie信息状态)的请求

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

服务器端会提供session的机制来保存服务端的对象状态,服务器使用一种类似于散列表的结构来保存信 息,当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求是否包含了一个session标识- session id; 如果已包含一个session id则说明以前已经为客户端创建过session,服务器就按照 session id 把这个 session 检索出来使用(如果检索不到,会新建一个); 如果客户端请求不包含sessionid,则为此客户端创建一个 session 并且生成一个与此 session 相关联的 session id, session id 的值是一个既不会重复,又不容易被找到规律的仿造字符 串,这个 session id 将会返回给客户端保存。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

HTTPS通信协议

HTTP协议可能存在信息窃听或者身份伪装等安全问题。关于未加密的协议有些明显的不足之处:

  • 通信使用明文(不加密),内容可能被窃听

  • 不验证通信方的身份,因此有可能遭遇伪装

  • 无法证明报文的完整性,所以有可能已遭篡改

安全的HTTPS

HTTPS(Hypertext Transfer Protocol Secure)是一种在HTTP基础上添加了安全性特性的通信协议。HTTPS之所以被认为是安全的,主要基于以下几个关键因素:

  1. 数据加密:HTTPS使用加密算法来保护数据的机密性。通信过程中传输的数据会被加密,使得恶意攻击者无法轻松窃取敏感信息。常见的加密算法包括TLS/SSL协议中使用的RSA、Diffie-Hellman、AES等。

  2. 身份验证:HTTPS使用SSL/TLS证书来验证服务器的身份。服务器必须获得由受信任的证书颁发机构(CA,Certificate Authority)签发的数字证书,这个数字证书包含了服务器的公钥,用于建立安全连接。这样,客户端可以确保它们正在与合法的服务器通信,而不是被劫持或伪装的服务器。

  3. 数据完整性:HTTPS还提供了数据完整性保护。通过使用消息摘要(Message Digest)和数字签名等技术,客户端可以确保在传输过程中数据没有被篡改或损坏。

  4. 防止中间人攻击:HTTPS的身份验证和加密机制可以防止中间人攻击(Man-in-the-Middle Attack)。中间人攻击是指攻击者通过篡改或窃听数据流量来窃取信息。HTTPS通过数字证书来验证通信双方的身份,从而降低了中间人攻击的风险。

  5. 强大的算法和协议:HTTPS使用强大的加密算法和协议来保护数据,这些算法和协议经过广泛的安全审查和测试,以确保它们的可靠性和安全性。

  6. 强制性:对于一些敏感信息的处理,如在线银行交易或个人身份验证,HTTPS通常是强制性的,网站必须使用HTTPS来保护用户的数据。

SSL(Secure Sockets Layer)是一种用于保护网络通信安全的协议。它最初由Netscape公司开发,后来发展为TLS(Transport Layer Security),TLS 1.0之后的版本不再称为SSL,而是TLS。SSL/TLS协议的主要目标是确保在网络上传输的数据隐私和完整性,同时提供身份验证机制。

以下是SSL/TLS的主要特点和功能:

  1. 加密:SSL/TLS使用加密算法来保护数据的机密性。数据在传输过程中会被加密,以防止未经授权的访问和窃取。

  2. 身份验证:SSL/TLS提供了服务器和客户端之间的身份验证机制。服务器需要提供数字证书,证明其身份是合法的,而客户端也可以提供证书进行双向身份验证。这确保了通信的双方都是合法的。

  3. 数据完整性:SSL/TLS通过使用消息摘要和数字签名等技术来确保数据在传输过程中没有被篡改或损坏,从而提供数据的完整性保护。

  4. 防止中间人攻击:SSL/TLS的身份验证和加密机制可以有效防止中间人攻击,确保通信双方的安全性。

  5. 支持多种加密算法:SSL/TLS支持多种加密算法,包括对称加密和非对称加密,以满足不同的安全需求。

  6. 版本升级:SSL/TLS有多个版本,每个版本都不断改进和加强安全性。TLS 1.2和TLS 1.3是目前广泛使用的版本,它们提供了更强的安全性和性能。

  7. 适用于各种应用:SSL/TLS不仅适用于Web浏览器和Web服务器之间的通信,还可以用于保护电子邮件、文件传输、即时通信等各种应用的通信。

  8. 广泛采用:SSL/TLS协议是互联网上广泛采用的安全协议,许多网站和服务都使用它来保护用户的数据和隐私。

HTTP到HTTPS的演变

按下SSL的实现设计暂时不表,我们看看HTTP演变到HTTPS的过程都发生了什么。

对称加密

为了保证通信过程不被篡改和窃听,最开始想到的就是对内容加密,同时,该消息还需要能被服务端解密。那么就需要客户端和服务端用相同的密钥进行加密解密。

加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system),也被叫做对称密钥加密。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

以共享密钥方式加密时必须将密钥也发给对方。在互联网上转发密钥时,如果通信被监听那么密钥就可会落入攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。

非对称加密

公开密钥加密方式很好地解决了共享密钥加密的困难。公开密钥加密使用一对非对称的密钥。一把叫做私有密钥 (private key),另一把叫做公开密钥(public key)。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

混合加密机制

HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。所以选择了组合起来:在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

证书机构

混合加密的机制设计的确很巧妙,但是在公开密钥加密的环节中还是无法证明公开密钥本身就是货真价实的公开密钥。为了解决这个问题,我们可以借助数字证书机构和其颁发的公共密钥证书。

数字证书认证机构业务流程:

  • 服务器的运营人员向数字证书认证机构提出公开密钥的申请。

  • 数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。

服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书也叫数字证书或者证书。

接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事: 一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二, 服务器的公开密钥是值得信赖的。

此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

SSL到底是什么

SSL协议是Netscape公司率先采用的网络安全协议;它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术;SSL广泛支持各种类型的网络,后来发展为TLS(Transport Layer Security),TLS 1.0之后的版本不再称为SSL,而是TLS。SSL/TLS协议的主要目标是确保在网络上传输的数据隐私和完整性,同时提供身份验证机制。

以下是SSL/TLS的主要特点和功能:

  1. 加密:SSL/TLS使用加密算法来保护数据的机密性。数据在传输过程中会被加密,以防止未经授权的访问和窃取。

  2. 身份验证:SSL/TLS提供了服务器和客户端之间的身份验证机制。服务器需要提供数字证书,证明其身份是合法的,而客户端也可以提供证书进行双向身份验证。这确保了通信的双方都是合法的。

  3. 数据完整性:SSL/TLS通过使用消息摘要和数字签名等技术来确保数据在传输过程中没有被篡改或损坏,从而提供数据的完整性保护。

  4. 防止中间人攻击:SSL/TLS的身份验证和加密机制可以有效防止中间人攻击,确保通信双方的安全性。

  5. 支持多种加密算法:SSL/TLS支持多种加密算法,包括对称加密和非对称加密,以满足不同的安全需求。

  6. 版本升级:SSL/TLS有多个版本,每个版本都不断改进和加强安全性。TLS 1.2和TLS 1.3是目前广泛使用的版本,它们提供了更强的安全性和性能。

  7. 适用于各种应用:SSL/TLS不仅适用于Web浏览器和Web服务器之间的通信,还可以用于保护电子邮件、文件传输、即时通信等各种应用的通信。

  8. 广泛采用:SSL/TLS协议是互联网上广泛采用的安全协议,许多网站和服务都使用它来保护用户的数据和隐私。

总的来说,SSL/TLS协议是网络通信安全的重要组成部分,它通过加密、身份验证和数据完整性保护等多种机制来确保通信的安全性和可信性。这使得用户可以在互联网上安全地传输敏感信息,如密码、信用卡信息和个人数据。不过需要注意的是,为了保持安全性,SSL/TLS协议的配置和使用需要得到正确的实施。

HTTPS是身披SSL外壳的HTTP

HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。

通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通 信,再由SSL和TCP通信了。简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的HTTP。

聊聊分布式架构02——Http到Https,分布式架构,http,分布式,架构

在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。文章来源地址https://www.toymoban.com/news/detail-727476.html

到了这里,关于聊聊分布式架构02——Http到Https的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 聊聊分布式架构08——SpringBoot开启微服务时代

    目录 微服务架构时代 快速入门 入门详解 SpringBoot的自动配置 石器时代:XML配置bean 青铜时代:SpringConfig 铁器时代:AutoConfigurationImportSelector 手写简单Starter SpringApplication启动原理 微服务架构时代 Spring Boot的出现与微服务架构有关,它是Spring Framework的一部分,旨在简化开发独

    2024年02月06日
    浏览(49)
  • 聊聊分布式架构06——[NIO入门]简单的Netty NIO示例

    目录 Java NIO和Netty NIO比较 Java NIO: Netty: Netty NIO中的主要模块 Transport(传输层) Buffer(缓冲区) Codec(编解码器) Handler(处理器) EventLoop(事件循环) Bootstrap和Channel(引导和通道) Future和Promise(异步编程) Netty示例 服务端时序图 服务端代码 客户端时序图 客户端代码

    2024年02月07日
    浏览(37)
  • 手撕分布式缓存---HTTP Client搭建

      经过上个章节的学习,我们已经实现了一致性哈希算法,这个算法保证我们可以在节点发生变动时,最少的key请求受到影响,并返回这个节点的名称;这很大程度上避免了哈希雪崩和哈希穿透的问题。 这个章节我们要基于此实现完整的服务器端在处理客户端请求时,内部

    2024年02月04日
    浏览(33)
  • 使用分布式HTTP代理爬虫实现数据抓取与分析的案例研究

    在当今信息爆炸的时代,数据已经成为企业决策和发展的核心资源。然而,要获取大规模的数据并进行有效的分析是一项艰巨的任务。为了解决这一难题,我们进行了一项案例研究,通过使用分布式HTTP代理爬虫,实现数据抓取与分析的有效整合。本文旨在分享我们的研究成果

    2024年02月15日
    浏览(52)
  • 分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理

    1. 正向代理和反向代理 正向代理是 客户端 通过代理服务器访问互联网资源的方式。在这种情况下,客户端向代理服务器发送请求,代理服务器再向互联网上的服务器发送请求,获取资源并返回给客户端。正向代理的典型应用场景是翻墙,即通过代理服务器访问被封锁的网站

    2024年02月14日
    浏览(59)
  • 【已解决】伪分布式Hadoop服务已经开启,但是无法访问http://localhost:9870(缺少NameNode进程)\http://localhost:8088

    使用如下方法启动成功hadoop服务 进入相应文件夹 首先停止启动所有的节点,使用命令行启动stop-all.sh脚本 解决方法是首先停止启动所有的节点,使用命令行启动stop-all.sh脚本: 使用 jps 命令查看当前hadoop运行 貌似没问题 其实这里就是有问题!!!后续解决方法里面说 继续打

    2024年04月15日
    浏览(42)
  • 聊聊什么是分布式事务

    分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,以上是百度百科的解释。 简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务

    2024年02月08日
    浏览(35)
  • 【分布式系统】聊聊高性能设计

    对于以上的数字,其实每个程序员都应该了解,因为只有了解这些基本的数字,才能知道对于CPU、内存、磁盘、网络之间数据读写的时间。1000ms = 1S。毫秒-微秒-纳秒-秒-分钟 为什么高性能如此重要的呢,在架构设计中,高性能、高可用、高并发是三高问题。其实背后对应的就

    2024年02月13日
    浏览(55)
  • 聊聊分布式解决方案Saga模式

    Saga模式使用一系列本地事务来提供事务管理,而一个本地事务对应一个Saga参与者,在Saga流程里面每一个本地事务只操作本地数据库,然后通过消息或事件来触发下一个本地事务,如果其中一个本地事务失败了,Saga就会执行一系列补偿事务来实现回滚操作。(补偿事务简单来

    2024年02月06日
    浏览(36)
  • 聊聊分布式 SQL 数据库Doris(七)

    Doris的存储结构是类似LSM-Tree设计的,因此很多方面都是通用的,先阅读了解LSM相关的知识,再看Doris的底层存储与读取流程会清晰透彻很多,LSM基本知识如下: 原理:把各种数据先用log等形式组织在内存中(该数据结构称为MemTable,且有序);到达一定数据量后再批量merge写入磁

    2024年02月05日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包