超全http面试重点总结

      最后更新:2022-06-17 10:32:09 手机定位技术交流文章

      本文的主要内容是按时整理的,其中一些内容可参阅http://

      HTTP:

      HTTP协议通常被称为HTTP(超文本传输协议)。它是用于分布式、协作和超级媒体信息系统的一种应用层协议。它是最广泛的互联网应用网络传输协议,所有 WW 文件必须符合这个标准。HTTP被设计为网络浏览器和网络服务器之间的通信,它也可以用于其他用途。HTTP是一个传输数据(HTML文件、图像文件、查询结果等)的TCP/IP通信协议。

      • HTTP不连接:不连接的含义是限制每个连接只处理一个请求。 服务器处理客户端的请求,并在收到客户端的响应后立即切断连接。
      • HTTP是媒体独立的:这意味着只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。
      • HTTP无状态: HTTP协议无状态。无状态意味着协议没有处理事务的内存容量。缺乏状态意味着,如果后续行动需要事先的资料,则它必须重传,这可能导致每次连接时发送的数据量增加。另一方面,当服务器不需要以前的信息时,它会更快地响应。
      从输入url到查看页面的整个过程
      • DNS分析域名进入IP
        1.首先检查本地主机文件,如果采用相应的规则;
        否则,向本地DNS服务器发送DNS请求;
        3. 本地 DNS 服务器 将 检查 缓存 中 是否 有 任何 记录, 如果 有, 返回 ;
        本地DNS服务器查询DNS根服务器,没有DNS根服务器查询调用本地DNS服务器到域名服务器;
        5.本地DNS服务器域服务器发送请求,域服务器将告诉本地DNS服务分析器的地址;
        本地DNS服务向域分析服务器发送请求,以接收相应的域名和IP地址。本地DNS服务器不仅将IP地址返回到用户计算机上,而且还将相应的地址存储在缓存中

      • 客户和服务端以三手建立TCP连接,然后发送请求

      • 服务部门处理请求和答复

      • 客户端接收结果并开始分析
        1、创建dom树;
        2,分析CSS并生成CSS规则树;
        渲染树根据域树和CSS风格表生成;
        4.浏览器根据域名树布局在特定位置确定每个树节点;
        5.调用域名节点的绘制方法绘制页面元素;
        6.浏览器将每个层的信息发送到GPU,GPU将每个层合成

      http://ww.http0.org.9, http1.0, http1.1, http2.0(小组封锁,多路由重用,服务器转发)
      • http0.9:不是正式的http标准,只有一个GET命令,服务器只能响应HTML格式字符串。
      • http1.0:
        1,支持缓存,MIME,方法,每个TCP只发送一个请求
        只支持获取和发送方法
        使用 If-Modified-Since,Expires来判断缓冲区
        中断再传输函数不支持,只能传输整个对象
      • http1.1
        1,支持持久连接连接:保持活泼,每个TCP连接可以发送多个请求
        添加PUT,PATCH,OPTIONS,DELETE方法
        实体标签,如果-未修改-自,如果-匹配,如果-没有-匹配
        添加范围标题,仅允许请求部分资源,国家代码为206
        增加24个状态代码(206返回资源的一部分, 410表示服务器上的资源已被永久删除)
      • http 2
        1、多路复用
        2、头部压缩
        因为设置是无状态的,你需要每次带上头条信息。 大量浪费网络资源
        1)客户端和服务器同时维护一个标题表,所有字段都存储在表中生成索引数。 每个传输只传递索引数。
        (二)在gzip或压缩压缩后再次发送标题
        3、二进制分帧
        帧:HTTP/2数据通信的最小单元消息:HTTP/2中的逻辑HTTP消息。
        头部信息和数据体是二进制的,通常被称为“框架”:头部信息框架和数据框架。 框架的优点,快速分析和提高传输效率
        4、服务器推送
        HTTP2允许服务器在没有请求的情况下向客户端发送资源
      HTTP1.1的管道机制与HTTP2的长连接和多路由重用之间的区别是什么?

      HTTP/1.最大的变化是引入持久连接。在HTTP/1.Connection中:保持活泼,也就是说,默认的TCP连接没有关闭,可以重复多个请求。
      然后,管道机制允许在同一TCP连接中同时发送多个HTTP请求,而不等待第一个请求返回数据,然后发送下一个请求。
      HTTP2.0的多路径复制是一个可以发送多个HTTP请求的TCP连接,请求的响应不取决于以前的请求。 每个请求被单独处理,HTTP1不会出现。
      例如,在TCP连接中,服务器同时接收A和B请求,然后首先响应A请求。结果是该过程非常耗时,因此它发送已经处理的A请求的部分,然后响应B请求,然后发送A请求的剩余部分。

      什么是http的方法?
      • GET:获取资源,用于请求访问已经标识为URI的资源。
      • POST:传输实体主体
      • 选择: 查询支持的方法.
      • PUT:传输文件。 鉴于HTTP/1.1的PUT方法本身没有验证机制,任何人都可以上传文件,并且存在安全问题,所以一般网站不使用这个方法。
      • HEA: 获取报告的第一部分。 就像获取方法一样,它不返回报告的主要部分
      • 删除:删除文件。 鉴于HTTP/1.1的删除方法本身没有验证机制,任何人都可以删除文件,并且存在安全问题,所以一般网站没有使用该方法。
      获取和发送请求之间的区别

      它们基本上是TCP链接,并且是不可区分的。 然而,由于HTTP条款和浏览器/服务器限制,它们在应用程序进程中可能有所不同。

      • POST方法生成两个TCP包,浏览器首先向服务器请求头发,继续直到服务器响应100,浏览器再次发送请求数据,服务器响应200 ok(返回数据)。看起来,GET请求比 POST更快传输(因为GET方法只发送一个TCP包),但事实上, 在良好的网络条件下, 它们的传输速度基本上是相同的.
      • POST方法的请求信息放在请求数据中,因此,其要求的信息是无限制的长度.GET方法的URL通常是有限的长度。然而,应该指出HTTP协议不指定GET请求的长度。这个长度限制主要由浏览器和网页服务器决定,每个浏览器的长度限制都不同。(Google浏览器:8182字节;IE2048字节;safair800字节)
      • GET请求将被浏览器主动缓存, POST请求则不会缓存
      • POST比GET更安全(不作为url的一部分,不缓存,存储在服务器日志和浏览器浏览记录中;get请求是一个静态资源,它将缓存;如果数据,它将不缓存)
      常见的 http 状态代码

      在这里插入图片描述

      • 服务器返回此代码,显示已收到的请求的第一个部分,请求者应该继续提交请求。
      • 200 好(成功)服务器成功处理了请求。
      • 204 Not Connent请求处理成功,但没有返回资源
      • 206部分内容表示客户端有一个范围请求,服务器成功执行该部分的GET请求。 响应消息包含由内容-范围范围指定的实体内容。
      • 301移动永久资源
      • 302找到资源临时移动
      • 304 Not Modified.是自上次请求以来未修改的缓存,当服务器返回此响应时,不会返回网页的内容。
      • 400 错误请求.表示请求声明中存在语法错误。
      • 401 未经授权.请求认证
      • 401 403被禁止。 表示服务器拒绝访问请求资源
      • 404 Not Found.表示请求资源不能在服务器上找到。
      • 500 内部服务器错误.表示在执行请求时,服务器端发生了错误。
      • 502袋门户.代表一个作为门户或代理的服务器,从顶端服务器接收的响应无效。
      • 显示服务器暂时过载或处于暂停维护状态,无法处理请求。
      • 504. Gateway Time-Out:指服务器作为门户或代理,但不会及时从顶端服务器收到请求。
      6.常见的HTTP头条(源代码返回器主机)
      通用首部字段:
      • 缓存控制
      1. no-cache:迫使服务器再次核查
      2. no-store:不缓存请求或响应任何内容。 no-store是真正的非缓存,no-cache是过期资源的非缓存。
      3. 如果缓冲资源缓冲时间的值低于指定时间的值,则客户端接收缓冲资源。

      常见缓存响应指令:

      • 公共:表示其他用户也可以使用缓存。
      • 私人: 只对特定用户作为对象作出响应.
      • 没有缓存:在缓存之前必须确认其有效性
      • 没有商店
      • 最高年龄
      请求首部字段
      • 接受:通知服务器用户代理可以处理媒体类型和媒体类型的相对优先次序。 文本、图像、视频、二进制等类型,如 application/json、text/plain、*/*

      • 内容类型:显示媒体类型信息,用于告诉服务器如何处理请求的数据,以及告诉客户端如何分析响应数据,例如HTML、图像和文本

      • 应用程序/json;参数将直接放在请求实体中,无需进行任何处理。 服务端/客户端将以json格式分析数据

      • multipart/form-data;大多数用于文件上传,表格数据存储在http的原始部分

      • application/x-ww-form-urlencoded;文件不支持,通常用于提交表格

      • 范围:实体主体的定位范围,通常用于发布部分请求;例如字节:5001-100;响应第一个字段是内容范围:字节5001-100/100
        在这里插入图片描述

      • 主机:服务器的域名/IP地址和端口号(optional);它通知服务器请求的互联网资源的主机名称和端口号。他的HTTP/1.1是唯一必须包含在请求的第一个字段。它与一个单一服务器在虚拟主机上分发多个域名的工作机制密切相关,这是第一个句子的含义:主机必须存在。

      • 引用符:当前请求页面的源页地址;包括协议、域名和端口,包括路径、参数,不包括 Hash值。防盗链注:参考词实际上是“参考词”的拼写错误。

      • 协议+域+端口号码(optional),其中第一个用于CORS请求或 POST请求
        不同的是:主机是请求服务器的域名/ip和其他信息,引信器指示请求来自哪个地址。 引信器和源代码的功能相似,源代码没有路径信息,只有跨域请求,或仅发送邮件请求到同一域

      缓存相关的第一个字段:
      • 期满:响应头,代表资源的延迟时间

      • 缓存控制:请求/答复头,缓存控制场,准确的缓存控制策略

      • If-Modified-Since:请求标题,资源的最新修改时间,浏览器告诉服务器

      • 最后修改:响应头条,最后一次资源被修改,服务器告诉浏览器

      • Etag:响应头,资源标识符,由服务器告诉浏览器

      • If-None-Match:请求标题,缓存资源标识符,由浏览器告诉服务器

      强制缓存:对浏览器的缓存请求的结果。如果缓存资源是有效的,就直接使用缓存资源而不需重新启动向服务器的请求
      • 终止:HTTP/1.0,指定资源的延迟时间。 在一段时间内,资源可以缓存和使用,而不发送请求给服务器。 如果客户端时间和服务器时间不匹配,缓冲寿命的结果将受到影响
      • 缓存控制:HTTP/1.1,优先级高于帝国,缓存可以通过设置不同的值来精确控制
      咨询缓存: strong缓存失败后,需要启动请求,以验证服务器资源是否最新
      • HTTP/1.0:最后修改(响应头条)和如果修改后(请求头条)
        Last-Modified表示本地文件的最后修改日期,If-Modified-Since将最后修改值发送到服务器上,问服务器自该日期以来是否已更新资源,如果更新,一个新的资源将被发送回。否则返回304州代码,并更新浏览器缓存的有效性
        缺点:
        1,一个负载平衡服务器,每个服务器可能生成不同的“最后修改”
        GMT格式具有最小的单位,例如在一秒内的变化不会被识别
      • HTTP/1.1:ETag(响应头)和If-None-Match(请求头)
        Etag的值由服务端生成,ETag与文件指纹类似,是一个文件的唯一标识符序列,当资源有变化时,在第一次请求时将重新生成Etag,服务器将将资源和Etag一起返回到浏览器中,浏览器缓存两个到本地缓存数据库.在第二次请求时,浏览器将Etag信息放在If-None-Match请求头上,以便访问服务器,服务器收到请求后,将对服务器中的文件标识符与浏览器发送的标识符进行比较,如果不相同,服务器返回更新资源和新的Etag,如果相同,服务器返回304状态代码,浏览器读取缓存。

      ETag有弱点
      强的ETag需要资源以完全兼容字符级别
      弱的ETag 值前有一个“W/”标记,仅要求资源在语义上没有改变,但内部的更改可能部分发生(例如HTML中的标签序列被调整,或多余空间)

      缓存首部字段详情

      七、TCP

      概览(四层及七层网络模型)
      在这里插入图片描述

      1、TCP三次握手

      为了准确和正确地向目标发送数据,TCP协议采用“三手”策略。 当使用TCP协议发送数据时,TCP不会忽略传输后的情况,并会向另一方确认是否成功交付。
      手握过程使用TCP标识符SYN(同步-同步请求)和ACK(确认-确认同步)
      1)发送者首先将带有SYN符号的数据包发送给另一方。
      2)接收器收到数据后,返回一个数据包,以SYN/ACK符号表示确认消息已经发送。
      3)最后,发送器返回一个数据包,带有ACK符号,以"握手"结束。
      如果一个匿名阶段在震动中被中断,TCP协议将再次以相同的顺序发送同样的包。
      详情:
      (1)首先,客户端向服务器发送一个TCP消息,包括:

      标记为SYN,意思是“请求创建新的连接”;
      序列是Seq=X(X通常是1);
      然后客户端进入SYN-SENT阶段。
      (二)从客户端收到TCP消息后,服务器结束 LISTEN阶段,返回如下的TCP消息:
      标记是SYN和ACK,表示“确认客户端的Seq序列消息有效,服务器可以接收客户端发送的数据并同意创建一个新的连接”(即告诉客户端服务器已收到您的数据);
      序号为Seq=y;
      确认数为Ack=x+1,它代表客户端接收的序列数Seq,并添加1作为自己的确认数Ack的值;然后服务器进入SYN-RCVD阶段。
      (三)客户收到确认从服务器接收数据的TCP消息后,可以确定从客户到服务器的数据传输正常,并完成SYN-SENT阶段,并返回最后的TCP消息。
      标记为ACK,意思是“确认您已经收到服务器同意连接的信号”(即告诉服务器我知道您已经收到我的数据);

      序列是Seq=x+1,它代表从服务器端接收的确认数Ack,并将其值作为自己的序列值;
      确认编号是Ack=y+1,它代表接收服务器的序列编号Seq,并添加1作为自己的确认编号Ack的值;
      然后,客户端进入STABLISHED阶段。
      一旦服务器收到客户端的TCP消息“确认接收服务器数据”,就可以确定从服务器到客户端的数据传输正常。

      在客户端和服务器之间传输的TCP消息中,双方的确认号Ack和序列号Seq的值,这些都是根据对方的Ack和Seq值计算的,这确保了TCP消息传输的一致性。一旦一个由一方发送的TCP消息丢失,你不能继续握手。这确保了“三个握手”的成功完成。

      为什么必须握手三次,而不是两次?
      为了防止在服务器端打开不必要的连接,额外的服务器费用会增加,一个无效的连接请求消息会突然发送到服务端,导致一个错误。

      由于网络传输延迟(要通过网络纤维和各种中间代理服务器传输),例如,在传输过程中,客户端开始请求SYN=1创建连接(第一次握手)。

      如果服务器直接创建此连接并向客户端返回包含SYN、ACK和Seq的包,则由于网络传输而丢失包,而客户端不会收到服务器返回的包。

      客户端可以设置过时时间,当关闭为连接创建的请求时。 重新建立创建连接的请求,但服务器不知道,除非第三个握手告诉服务器端客户端将接收的数据发送到服务器端,

      服务器不知道客户端是否收到返回服务器的信息。
      这不会给服务器创建或关闭连接端口的请求,服务器端的终端总是打开的,等待客户因加班而重新发出请求,服务器将重新打开端口连接.所以服务器上没有接收请求的数据的顶端端口总是打开的,长此以往,这样的端口多了,这将导致严重浪费服务器端费用。

      也存在一个情况,即由一个已经无效的客户端发送的请求信息被发送到服务器上,因为某种原因,服务器认为这是由客户端发送的有效请求,在收到后会发生错误。

      因此,我们需要一个“第三手握”来确认这一过程,允许客户端和服务器及时检测因网络问题而导致的连接失败,以便服务器的端口可以不等待地关闭。

      第三个握手也可以理解为向服务器发送数据的客户端。这些数据是告诉服务器,客户端通过服务器第二次握手接收过去的数据 吗?如果发送的数据是“收到”,接收后,服务器通常会建立TCP连接,否则无法创建TCP连接,服务器关闭连接端口。这减少了接收无效请求的服务器成本和错误。

      2、四次挥手

      (1)客户端首先想释放连接并向服务器发送一个TCP消息,包括:

      标记为 FIN,意思是“要求释放连接”;
      序号为Seq=U;
      然后客户端进入Fin-WAIT-1阶段,即半封闭阶段,它停止从客户端向服务器端发送数据,但客户端仍然可以从服务器端接收数据。
      注:此方法不会发送在正常连接中传输的数据(未确认消息),而是所有数据,因此客户端仍然可以发送ACK确认消息。

      (2)收到客户端的TCP消息后,服务器确认客户端希望释放连接,然后服务器终止STABLISHED阶段,进入CLOSE-WAIT阶段(半封闭状态)并返回一个TCP消息,包括:

      标记为ACK,意思是“请求接收向客户端发送的释放连接”;
      序号为Seq=V;
      确认号是Ack=U+1,这意味着在接收客户端消息的基础上,它将序列Seq值加上1作为确认号Ack这个段中的消息的值;
      然后服务器开始准备释放从服务器到客户端的连接。
      在接收服务器的TCP消息后,客户端确认服务器已经收到客户端的释放连接请求,然后客户端完成Fin-WAIT-1阶段并进入Fin-WAIT-2阶段

      前面的两波都让服务器知道客户端想要释放连接,让客户端知道服务器知道它自己想要释放请求。 因此,您可以确认关闭的客户端是连接到服务器端的

      (3)ACK确认消息发送到服务器后,在CLOSED-WAIT阶段之后,释放服务器已准备好连接到客户端,并再次发送TCP消息,包括:

      标记为 FIN, ACK,意思是“准备好释放连接”。
      序号为Seq=W;
      确认号是Ack=U+1;这意味着,基于接收客户端消息,它将序列Seq值添加到1,作为该段报告确认号Ack的值。
      然后服务器结束CLOSE-WAIT阶段,进入LAST-ACK阶段,停止向客户端发送数据,但服务器仍然能够接收从客户端发送的数据。

      (4)客户端收到服务器的TCP消息,确认服务器准备释放连接,完成FIN-WAIT-2阶段,进入 TIME-WAIT阶段,并向服务器发送消息,包括:

      标记为ACK,意思是“向服务器接收信号,准备释放连接”。
      序列是Seq=U+1;这意味着基于接收服务器端消息,认证号Ack的值是该段中消息序列的值。
      确认数为Ack=W+1;这意味着,基于接收服务器端消息,序列Seq值是该段中的消息确认数值。
      然后,客户端在“时间等待”阶段开始等待2MSL

      为什么客户应该等待2MSL?请参见以下。

      在接收客户端的TCP消息后,服务器结束LAST-ACK阶段并进入CLOSED阶段,正式确认从服务器到客户端的连接关闭。

      在等待2MSL后,客户端完成IME-WAIT阶段并进入CLOSED阶段,完成“四手握手”。

      然后,两个“双波” let the client know that the server is ready to release the connection, and let the server know that the client knows that he is ready to release the connection。 确认与客户端的连接是向关闭服务器的方向,从而完成“四手波”。

      像"三拍"一样,在客户端和服务器之间传输的TCP消息中,双方的确认号Ack和序列号Seq的值,这些都是根据对方的Ack和Seq值计算的,这确保了TCP消息传输的一致性,一旦一个由一方发送的TCP消息丢失,你不能继续挥手。这确保了四个波的成功完成。
      为什么三次握手,四次挥手?

      当TCP建立连接时,只需要“三个手”,因为在第二次握手过程中,服务器发送给客户端的TCP消息被SYN和ACK标记。SYN是一个请求连接符号,表示服务器端同意建立连接;ACK是一个确认消息,表示告诉客户端,服务器收到了它的请求消息。

      这意味着SYN建立消息与ACK之间的联系,以确认接收消息是在同一“握手”中传输的,这样“三握手”不会太多,只是让双方清楚地互相交流信息。

      TCP释放一个连接需要“四个握手”的原因是Fin释放了连接消息,ACK确认接收消息是由第二和第三个握手传递的。

      当连接建立时,被动服务器终止了CLOSED阶段并无准备进入"Handshake"阶段。它可以直接返回SYN和ACK声明并启动连接。
      释放连接时,被动方服务器,突然收到启动客户端的请求释放连接并不能立即释放连接,由于仍需处理的数据,因此服务器返回ACK以确认收到消息,在CLOSE-WAIT阶段准备好释放连接后,您可以返回 FIN释放连接消息。

      是“三手”,是“四手”。
      详情文章

      TCP和UDP之间的区别
      • TCP是面向连接的,需要“三个握手”才能发送数据建立连接。 UDP不连接,数据消息执行任何分离和解析操作
      • TCP只支持一个到一个。每个TCP传输连接只有两个终端,只能进行点对点数据传输,多播和广播模式不支持。UDP不仅支持单一传输模式,同样支持一对多,多对多,多对一的方式,换句话说,UDP提供单播,多播,广播的功能
      • TCP是专门用于字节流的,并且可以传输字节流而不保留消息边界。 UDP是面向报告的
      • TCP是可靠的,保证数据序列.确保消息传输的可靠性,给每个包一个序列编号,同时,序列编号也保证向接收端实体发送的包的序列接收。然后接收端实体将返回相应的确认(ACK)到成功接收的节点;如果发送端实体没有在合理调度时间延迟(RTT)内收到确认,然后将重新传输相应的数据(假设丢失)。**UDP可能丢失数据包,并不能保证数据的顺序 **
      • 当网络拥塞发生时,TCP可以降低给网络注入的数据的速度和数量,减轻拥塞;UDP字节成本很小,在传输数据信息时非常有效。
        4、滑动窗口
        TCP的可靠配置和流量控制是通过滑动窗口实现的,依靠诸如序列编号、自动再传输、确认响应、滑动窗口等机制。
        序列数(Sequence number):TCP将一个序列数分配给每个发送的数据包,以识别其中一个。
        自动重传输:当TCP发送器发送TCP包时,设置了一个计时器,如果接收器在计时器中没有收到该包的确认响应包,它就会变成ACK包,并重发送相应的TCP包。
        确认响应:当接收器接收一个数据包时,它直接返回一个ACK数据包,或一旦它确认多个数据包,则返回一个延迟一段时间的ACK数据包。
        Sliding windows:分为发送窗口和接收窗口。 客户端和服务器有发送窗口和接收窗口。
        发送窗口:
        每个TCP发送一个数据,需要一次响应。 当第一个响应被接收时,下一个数据被发送,但这种方法效率较低。
        它是一个在操作系统中存在的缓冲空间,用于存储发送的当前数据,实质上是一系列周期的实现。

      发送窗口是一个循环缓冲区,应用程序层发送数据,将数据写入缓冲区。

      应用程序层将数据写入缓冲区,当它超过缓冲区的最大地址时,它循环使用头部,覆盖头部数据。在这里插入图片描述
      发送缓冲区分为四个部分:

      已收到数据包
      接收的包数据代表接收窗口收到了相应的数据,这些数据可以被新的数据覆盖。
      数据已发送,但未收到到数据包
      已发送,但未收到收件人的相应的包
      允许数据发送,但尚未发送
      允许您发送尚未发送的数据。
      不允许发送任何数据。
      将数据发送到窗口外,并排队进行后续发送。
      接收窗口:
      接收窗口也是一种在操作系统中存在的缓冲空间来接收数据。 缓冲区基本上是一个循环的实现。

      接收窗口存在于循环中使用的缓冲器中,接收数据被写入缓冲器中。 在应用程序层读取数据后,它相当于从缓冲区删除数据,但它并不真正删除数据,而是后面的相应的指针。

      当数据在缓冲区的最大地址上写入时,头条被用来覆盖头条。

      缓冲区分为三部分:
      1,应用程序层已读取数据
      数据已经收到, 包已经发送, 并被应用程序层读取.

      2.在窗口中接收数据
      接收窗口存储当前允许接收的数据。

      接收窗口允许无序数据包被接收,因此接收窗口中的一些数据被接收和一些数据不被接收,无序数据包直接存储在接收窗口中。

      由于接收包的序列,接收窗口有一个空隙,因为首先发送的包很可能因网络原因被发送回接收机。

      当数据包被埋葬在接收窗口时,它返回带有SACK信息的Ack包,即选择要重新选择的信息。

      3、还未收到的数据
      不能接收数据的区域,即窗外的数据。在这里插入图片描述
      TCP滑动窗口详解

      HTTPS:

      https详解

      1. https通信过程

      1)客户端启动HTTPS请求

      这并不意味着什么,但用户在浏览器中输入一个 https URL,然后连接到服务器的443端口。

      2)、服务端的配置

      使用HTTPS协议的服务器必须有一套数字证书,可以自己制作,也可以向组织申请,不同的是,您自己签发的证书需要由客户核证,才可以继续访问,而且来自可靠的公司证书不会出现(startssl是一个很好的选择,一年免费。

      这个证书实际上是两个公共和私人密钥,如果公共和私人密钥不被理解,想象一个钥匙和锁,只是你是世界上唯一拥有这个钥匙的人,你可以把锁交给别人,其他人可以用这个锁锁住重要的东西.然后发给你,因为只有你才有钥匙,所以只有你才能看到锁上的东西。

      3)、传送证书

      该证书实际上是公开的钥匙,但它包含很多信息,如证书的发行机构、有效期等。

      4)客户分析证书

      该任务的这一部分由客户端TLS完成,它首先验证公共密钥是否有效,例如发行机构、有效期等,如果发现异常,一个警告框显示证书有问题。

      如果 certificate 没有问题, 生成一个随机值,然后用 certificate 加密随机值, 如上所述, 锁定随机值以锁定, 这样除非有一个钥匙, 锁定的内容就不会可见.

      5)、传送加密信息

      传输的这个部分是一个随机值加密的证书,其目的是将服务器送到这个随机值,然后通过这个随机值加密和解密客户端和服务器之间的通信。

      (六)服务端信息的解密

      服务结束后,用私人密钥解密,收到向客户传递的随机值(私钥),然后内容通过这个值进行对称加密,所谓对称加密就是,通过某种算法将信息和私钥混合起来,这样除非知道私钥,不然无法获取内容,正如客户和服务部门知道这个私人钥匙一样,所以只要加密算法足够坚固,私钥够复杂,数据就够安全。

      7)传输加密信息

      该信息的这一部分由服务部分的私钥加密,可以恢复到客户端。

      8)客户端解密信息

      客户端通过先前生成的私钥解密服务部分发送信息,从而获得解密内容的理解,整个过程即使第三方监控数据,也不有效。

      https和http之间的区别
      • 更安全, https = http + 加密 + 认证 + 完整性保护, http 是超文本传输协议, 信息被明确传输, https 是安全SSL加密传输协议
      • 端口不同, https端口为443, http端口为80
      • 速度比较慢,消耗的资源比较多,https比http慢2-100倍,HTTP使用TCP来手动三次建立连接,客户端和服务器需要交换3个包,除了TCP的三个包外,还有HTTP,再加9个ssl握手包,所以总共有12个包;SSL/TLS也消耗了大量的CPU和内存资源,导致处理速度变慢。
      • https需要一个证书,需要一定的成本
      数字签名、证书等功能.

      其他:

      cookie和会议

      cookie和សម័យ是用于跟踪浏览器的用户身份的对话方法。

      • 数据存储位置不同:Cookie数据存储在客户端的浏览器上,而សម័យ数据存储在服务器上。

      • 安全性水平不同:Cookie是不安全的,其他人可以分析和欺骗本地存储的Cookie,考虑到需要使用安全 Session。

      • 性能不同:会话存储在服务器上一段时间。 当访问增加时,它更有可能占用您的服务器的性能,所以应该使用Cookie来最小化服务器性能。

      • 数据存储大小不同:单个cookie不能存储超过4K的数据,许多浏览器限制每个网站存储最大20个cookie,而 Session 被存储在服务器上,而浏览器不限制它。

      设置Cookie过程

      HTTP是一个无状态的协议,它不管理以前的请求和响应的状态,换句话说,这个请求不能按照以前的状态进行处理。
      例如,在登录之后的页面跳跃可以以两种方式记录,以维持登录状态: 1 每次跳跃时再登录(不可接受)2 添加参数来管理请求消息中的登录状态。
      一个Cookie由服务器端发送的响应消息之一设置,称为“设置Cookie”。
      的首部字段信息,通知客户储存Cookie。当下一个客户端再次向服务器发送请求时,客户端在给请求消息添加一个cookie值后自动发送。当服务器发现客户端已经发送了Cookie后,检查从哪个客户端发送哪些连接请求,然后比较服务器上的记录,最后先获取状态信息。
      set-cookie字段属性:
      在这里插入图片描述

      3、浏览器缓存机制

      浏览器缓存通过HTTP/HTTPS实现,并有四个存储位置:

      • 服务工人是一个独立的线程,运行在浏览器后面,它可以用于实现缓存函数。如果你使用服务工人,传输协议必须是HTTPS。因为服务员涉及请求拦截,因此, HTTPS协议必须用于确保安全性。服务工人的缓存与浏览器的其他内置缓存机制不同,它允许我们自由控制哪些文件缓存,如何匹配缓存,如何读取缓存,而缓存是持久的。
      • 内存是内存中的内存.它主要包含在当前中页中被捕获的资源,例如从页面下载的模板、脚本、图像等。有效阅读内存数据,但缓存持久性非常短。一旦我们关闭 Tab 页,存储器中的缓存也被释放。因为计算机的内存比磁盘要小得多,我们没有足够的内存来存储缓存.
      • 磁盘缓存是存储在硬盘上的缓存.读速度比内存缓存慢,但是存储量更大。它根据HTTP管理器中的字段确定哪些资源需要缓存,哪些资源不能要求直接使用,哪些资源已过期再请求。
      • Push Cache是HTTP/2的内容。当上述三个缓冲区没有死亡时,它才会被使用。它只存在在会议上,一旦谈话结束,释放了,缓冲时间也很短,在Chrome浏览器中仅大约5分钟,同时,它并不严格执行HTTP头部的缓存命令。
        所有上述缓冲器将被网络请求,而不被杀死。
        根据HTTP请求是否需要重新启动到服务器上,缓冲过程分为两个部分:强制缓冲和咨询缓冲:
        4、部分内容的请求
        如果在上一次下载过程中遇到网络中断,那就必须重头开始。为了解决上述问题,需要一种可以恢复的机制。所谓恢复是指从下载的先前中断恢复下载的能力。要实现此功能,您需要指定要下载的实体范围。像这样,指定范围发送的请求称为 RangeRequest。对于一万字节的资源,如果使用范围请求,只有在5001到10,00字节以内的资源才能请求。
        响应返回状态代码206为范围请求的局部内容的响应消息
        此外,响应将被标记在“内容类型”的第一个字段中,用于多个范围的范围请求
        返回多部分/byteranges之后的响应消息。
        5、websocket
        Websocket是一个持久的网络通信协议,单一的TCP连接可以用于全职通信,没有要求和答复的概念,两者地位完全平等,连接一旦建立,双向数据可以在客户端与服务端之间实时传输。
      • 传输功能:支持从服务器发送到客户端的数据,允许服务器直接发送数据而不等待客户端的请求。
      • 减少流量,只需设置一个WebSocket连接并希望保持连接。 与HTTP相比,每个连接的总成本不仅降低,而且由于WebSocket的初始信息很小,因此通信量也相应减少。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/27528.html

          热门文章

          文章分类