中国艺术设计联盟,seo店铺描述例子,志鸿优化设计答案,wordpress应用程序错误来源#xff1a;杰哥的IT之旅作者#xff1a;阿拉斯加最近卷了一篇 HTTP 协议的相关知识#xff0c;大家可以一起来看一下~HTTP 简介HTTP 协议是 Hyper Text Transfer Protocol#xff08;超文本传输协议#xff09;的缩写#xff0c;是用于从万维网#xff08;WWW:Worl… 来源杰哥的IT之旅作者阿拉斯加最近卷了一篇 HTTP 协议的相关知识大家可以一起来看一下~HTTP 简介HTTP 协议是 Hyper Text Transfer Protocol超文本传输协议的缩写是用于从万维网WWW:World Wide Web 服务器传输超文本到本地浏览器的传送协议。HTTP 是一个基于 TCP/IP 通信协议来传递数据HTML 文件图片文件查询结果等。HTTP 是一个属于应用层的面向对象的协议由于其简捷、快速的方式适用于分布式超媒体信息系统。它于 1990 年提出经过几年的使用与发展得到不断地完善和扩展。目前在 WWW 中使用的是 HTTP/1.0 的第六版HTTP/1.1 的规范化工作正在进行之中而且 HTTP-NG(Next Generation of HTTP) 的建议已经提出。HTTP 协议工作于客户端-服务端架构为上浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求Web 服务器根据接收到的请求后向客户端发送响应信息。HTTP 特点简单快速客户向服务器请求服务时只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单使得 HTTP 服务器的程序规模小因而通信速度很快灵活HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记无连接无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后即断开连接。采用这种方式可以节省传输时间无状态HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时它的应答就较快支持 B/S 及 C/S 模式HTTP 有以上这么多的优点那么问题来了HTTP 协议有什么弊端吗? 答案是肯定的原因也很简单如果HTTP 是完美的还需要一个叫做 HTTPS 协议的安全协议干什么呢HTTP 弊端当我们往服务器发送比较隐私的数据比如说你的银行卡身份证时如果使用 http 进行通信。那么安全性将得不到保障首先数据在传输的过程中数据可能被中间人抓包拿到那么数据就会被中间人窃取其次数据被中间人拿到后中间人可能对数据进行修改或者替换然后发往服务器最后服务器收到数据后也无法确定数据有没有被修改或替换当然如果服务器也无法判断数据就真的是来源于客户端总结下来HTTP 存在三个弊端无法保证消息的保密性无法保证消息的完整性和准确性无法保证消息来源的可靠性HTTPS 简介如何解决 HTTP 弊端呢HTTPS 就是为了解决上述问题应运而生的。HTTPS全称Hyper Text Transfer Protocol over Secure Socket Layer是以安全为目标的 HTTP 通道简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层HTTPS 的安全基础是 SSL因此加密的详细内容就需要 SSL。现在它被广泛用于万维网上安全敏感的通讯例如交易支付方面。HTTPS 通过非对称加密算法可以使得我们传的明文信息无法通过逆推得出明文。接下来我们来看看在具体的工作流程是怎么样的工作原理HTTPS 的建立过程这里把 HTTPS 建立到断开分为 6 个阶段12 过程。下面将对 12 个过程一一做解释1、客户端 — Hello客户端通过发送 Client Hello 报文开始 SSL 通信。报文中包含客户端支持的 SSL 的指定版本、加密组件Cipher Suite列表所使用的加密算法及密匙长度等2、服务器 — Hello服务器可进行 SSL 通信时会以 Server Hello 报文作为应答。和客户端一样在报文中包含 SSL 版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的3、服务器 — 发证书服务器发送证书报文。报文中包含公开密匙证书4、服务器 — 我说完了最后服务器发送 Server Hello Done 报文通知客户端最初阶段的 SSL 握手协商部分结束5、客户端 — 发送秘钥SSL 第一次握手结束之后客户端以 Client Key Exchange 报文作为回应。报文包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。该报文已用步骤 3 中的公开密匙进行加密6、客户端 — 就用这个秘钥了该报文会提示服务器在此报文之后的通信会采用 Pre-master secret 密匙加密7、客户端 — 我说完了该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功要以服务器是否能够正确解密该报文作为判定标准8、服务器 — 发送 c Change Cipher Spec 报文我正在接收秘钥9、服务器 — 发送 d Finished 报文我收完秘钥了10、客户端 — 开始发送正文服务器端发送 HTTP 请求发送相关内容11、服务器 — 开始接收正文客户端接收 HTTP 请求并处理相关内容12、客户端 — 断开链接最后由客户端断开连接。断开连接时发送 close_notify 报文。上图做了一些省略这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信另外在以上流程图中应用层发送数据时会附加一种叫做 MACMessageAuthentication Code的报文摘要。MAC 能够查知报文是否遭到篡改从而保证报文的完整性下面再用图解来形象的说明一下此图比上面数字证书的图更加的详细一些在上面说明了 HTTPS 的建立以及通信中的过程。既然实际工作流程是这个样子的是怎样的算法能实现这样的功能是怎样的方式能做到非对称加密在数学角度是如何计算的那么对应的理论基础是什么是什么支撑的 HTTPS 使得他能进行加密传输HTTPS 的理论原理HTTPS 采用了一些加解密数字证书数字签名的技术来实现。下面先介绍一下这些技术的基本概念。为了保证消息的保密性就需要用到加密和解密。加解密算法目前主流的分为对称加密和非对称加密。对称加密共享密匙加密客户端和服务器公用一个密匙用来对消息加解密这种方式称为对称加密。客户端和服务器约定好一个加密的密匙。客户端在发消息前用该密匙对消息加密发送给服务器后服务器再用该密匙进行解密拿到消息。图示加密过程这里采用的对称加密算法M明文我们本意要传输的内容C秘钥在对称加密算法中需要用秘钥加密用秘钥解密加密算法可以很简单加减乘除也可以很复杂N密文明文用秘钥加密得到的内容被称为密文在网络上传输的也是密文比如客户端向服务器传输 1明文1 3 3 是秘钥 4 得到密文进行传输服务器得到 密文 4 4-33 是秘钥1 得到明文使得客户端和服务器端进行通信反之亦然对称加密的优点对称加密解决了 HTTP 中消息保密性的问题对称加密的缺点对称加密虽然保证了消息保密性但是因为客户端和服务器共享一个密匙这样就使得密匙特别容易泄露因为密匙泄露风险较高所以很难保证消息来源的可靠性、消息的完整性和准确性对称加密秘钥泄露风险很高秘钥固定导致很容易被破解那么有没有更好的方式去进行加密传输比如说每次用的秘钥都不相同每次解密的秘钥也都不相同或者其他的情况来增加安全性呢非对称加密公有密匙加密既然对称加密中密匙那么容易泄露那么我们可以采用一种非对称加密的方式来解决。采用非对称加密时客户端和服务端均拥有一个公有密匙和一个私有密匙。公有密匙可以对外暴露而私有密匙只有自己可见。使用公有密匙加密的消息只有对应的私有密匙才能解开。反过来使用私有密匙加密的消息只有公有密匙才能解开。这样客户端在发送消息前先用服务器的公匙对消息进行加密服务器收到后再用自己的私匙进行解密。图示加密过程解释如下M指的是明文我们本意要传输的内容D指的是公钥在非对称加密算法中需要用公钥加密E指的是私钥在非对称加密算法中需要用私钥解密N指的是密文明文用秘钥加密得到的内容被称为密文在网络上传输的也是密文在服务器这一次生成公钥 D 以及私钥 E私钥自己留存。然后将公钥 D 进行对外公开想与服务器端通信的客户端用公钥 D 进行加密发送给具有私钥 E 的服务器服务器用私钥 E 就可以进行密文解密最终拿到明文。非对称加密算法RSA简介RSA 是目前最有影响力的公钥加密算法它能够抵抗到目前为止已知的绝大多数密码攻击已被 ISO 推荐为公钥数据加密标准。今天只有短的 RSA 钥匙才可能被强力方式解破。到 2008 年为止世界上还没有任何可靠的攻击 RSA 算法的方式。只要其钥匙的长度足够长用 RSA 加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天RSA 加密安全性受到了挑战。RSA 算法基于一个十分简单的数论事实 将两个大质数相乘十分容易但是想要对其乘积进行因式分解却极其困难因此可以将乘积公开作为加密密钥。HTTP 性能调优减少 HTTP 请求数关于减少 HTTP 请求数是性能优化的一个非常重要方面所以在基本所有的优化原则里都有这一条原则:减少 HTTP 请求数先不考虑其他的。我们先考虑为什么减少 HTTP 请求可以优化性能1、减少 DNS 请求所耗费的时间且不说对错因为从基本来说减少 HTTP 请求数的确可以减少 DNS 请求和解析耗费的时间2、减少服务器压力这个通常是被考虑最多的也是我用来讲解给别人听的最大理由因为每个 HTTP 请求都会耗费服务器资源特别是一些需要计算合并等操作的服务器耗费服务器的 CPU 资源可不是开玩笑的事情硬盘可以用钱买来CPU 资源可就没那么廉价了3、减少 HTTP 请求头当我们对服务器发起一个请求的时候我们会携带着这个域名下的 Cookie 和一些其他的信息在 HTTP 头部里然后服务器响应请求的时候也会带回一些 Cookie 之类的头部信息这些信息有的时候会很大在这种请求和响应的时候会影响带宽性能DNS 请求和解析简单来说例如www.taobao.com 这样一个 URL其中 www 部分被称为主机名(hostname)taobao 这部分则是二级域com 则是一级域如果是这样一个网址www.ali.tao.com 那么 ali 就是三级域。当我们去请求一个 URL 的时候首先会到本地服务器里去寻找缓存中是否有解析结果如果没有解析结果就去根域名服务器请求根域名服务器返回给本地域名服务器一个所查询的域的主域名服务器的 IP 地址然后我们再去请求刚才返回的 IP 地址的域名服务器然后返回下一级域名的 IP 地址直到我们找到域名中所指的服务器 IP然后将结果缓存起来供下次使用并返回此结果。一个第一次请求的 URL 的 DNS 解析过程可能耗费是很高的但是解析一次之后结果就会被缓存起来之后再请求的时候就不用走上面这一套复杂的解析过程了。减少服务器压力过多的 HTTP 请求对于服务器来说是很危险的如果你的服务器不是很强请把这一条考虑放在第一位其他的优化策略都只是优化而这里涉及到的是服务器你要保证你的服务器能正常运转。但是这是淘宝网我们有足够的速度来提供足够的用户体验。如果你的服务器提供不了这种速度也承受不了这种频繁的异步请求的话这种优化就要慎重了延迟可能造成导航不可用这也是针对场景来协调的。淘宝现在在广泛部署 CDNCDN 可以给我们提供足够的后台资源保障在 CDN 和后台环境不断完善的情况下考虑重点应该更加专注于前台传输速度和展现解析速度的提升。减少 HTTP 请求头HTTP 头是个庞大的家伙你打开 taobao.com 的首页alert 一下 document.cookie会发现淘宝网的 cookie 比较大每次你请求淘宝的服务器都会往返一次这些数据还有一些其他的头部信息占用的空间也不小可想而知这种消耗有多大。然后其实自从用了 CDN这一切都无需考虑太多因为 CDN 和淘宝主站不在一个域名下cookie 不会互相污染而 CDN 的域名下基本是没有 cookie 和头部信息的所以每次请求静态资源的时候不会带着主站的 cookie 到处跑而只是传输资源的主题内容所以这对于性能的影响在使用 cdn 之后会变得很小。但是如果你的静态资源服务器和主服务器在一个域名下那就要控制好 cookie 和其他头部信息的大小了因为每次传送都会传送它们。总结我们这次针对于网络协议 HTTP 和 HTTPS 有了一个初步的了解了解了 HTTP 的优缺点正是由于 HTTP 的某些不足才出现了 HTTPS我们通过图例了解了其工作原理还是比较复杂的需要进一步的理解加深然后我们谈到了 HTTP 性能能调优关于减少请求次数减少服务器压力等等总之对于不同的场景应该考虑不同的侧重点应该不同的网站规模和类型进行适度的优化不能盲目追求标准和最佳实践。往期推荐阿里云投入 20 亿发力操作系统数学在左人生在右Redis很厉害使用规范来啦低代码会让程序员更加内卷吗点分享点收藏点点赞点在看