HTTP - 计算机网络注释

      最后更新:2021-11-26 07:28:33 手机定位技术交流文章

      文章目录

      • 题引开篇
      • HTTP概述
        • 定义
        • 特点
          • 可靠
          • 应用层协议
          • 请求-应答
          • 无状态
          • 易于扩展
          • 明文传输
          • 不安全
      • Http请求
        • 浏览器启动 HTTP 请求的典型情景
        • Http请求的准备
        • Http请求的构建
          • 请求行
          • 请求头
          • 请求体
        • Http请求的发送
      • HTTP响应
        • Http响应的构建
          • 相应行
            • 状态码
            • 常见状态码
          • 响应头
          • 响应体
      • HTTP 传输大文件的方法
        • 数据压缩
        • 分块传输
          • 分块传输的编码规则
        • 范围请求
        • 多段数据
      • HTTP的连接管理
        • 长短连接
        • 关于连接的头字段
        • 队首阻塞
      • 重定向与跳转
        • 重定向与转发的特点
        • 重定向的使用场景
        • 重定向的相关问题
      • Cookie机制
        • 饼干的使用
        • Cookie的属性
        • Cookie的应用
        • Session
      • HTTP的缓存控制
      • Http2.0
        • 首部压缩
          • 首部复用性
          • 工作过程
        • 二进制分帧
          • 通信单位
          • 工作过程
        • 流量控制
        • 多路复用
        • 请求优先级
          • 工作过程
        • 服务器推送
        • 案例分析
        • 缺点
      • QUIC协议
        • 自定义连接机制
        • 自定义重传机制
        • 无阻塞的多路复用
        • 自定义流量控制
      • 小结
      • 思考题

      来源包括刘先生的《谈话网络协议》和陶惠先生描述和捕捉的《网络协议》,以及位于硅谷的JavaWeb先生,

      题引开篇

      HTTP概述

      超文本传输协议 超文本传输协议 我们要将HTTP置于它的头上

      定义

      协议

      语法、语义和秩序不是一回事

      • HTTP语法是典型的ABNF语法风格,如其报纸部分所示,HTTP的语法常常分为两类:要求和答复。
      • HTTP语义与两份出版物的语义略有不同;
      • HTTP命令指的是我们通常分开的议定书各节:行、头、机构和个别部分顺序是指我们通常分开的议定书各节:行、头、机构和个别部分顺序。

      之后的构成又是一个基本组成。 这是一个困难的情况。 沟通不简单吗? 在设计前端时, 与前端有一个像样的界面是有道理的 。

      传输

      转移是什么意思 转移超文本是什么意思

      HTTP 传输的属性是什么?

      当然,Google试图取代基于民联QUIC的HTTP,

      超文本

      这是我的最爱。 什么是超文本? 把它拆开, 并检查什么构成文本。 在普通人眼中, 文本只是笔记本中的文字。 在计算机眼中, 文本是二进制的。 在计算机眼中, 文本毕竟是二进制的, 它是二进制的 。 “ 二进制的 ” 。 生活中没有二进制的事物。 生活中没有二进制的, 但是如果你把某种东西放进电脑里, 生活中有某种东西放进电脑里。 例如, 生活中有一个视图, 你拍下来, 照片底部是二进制的数据, 视频, 音频.. 太多。

      所以,再次,文本是一个简单的字符文本。关于超文本文本呢?它是一个文本,但它是字符文本。“超级”表示它超越了常规文本, 被安排在各种文档中, 比如图片。Jpg, 音频.mp3, 视频.mp4, 它们也打开了笔记本上的字符, 但是它们有其他的打开方式, 所以它们被称为超文本。

      超文本——超链接——也有一些极其重要的内容,如果在相关设想中适当处理的话,目前似乎没有什么可说的。

      小结

      HTTP究竟指的是什么?它指的是在计算机网络中发送文本、图像、音频、视频等所使用的协议和规格。

      为了讨论一个问题, 我们审视 HTTP 的属性, 首先从最初是什么, 以及除了定义之外还有什么。

      特点

      以下是七大最显著的HTTP特征:

      • 可靠
      • 应用层协议
      • 请求-应答
      • 无状态
      • 易于扩展
      • 明文传输
      • 不安全

      可靠

      由于HTTP以TCP为基础,是TCP参考传输,因此它显然可靠。

      应用层协议

      这应该是HTTP超级文本传输能力,因为像FTP这样的常规应用级协议只能传输文件,SMTP只能发送邮件,SSH只能远程登录,在数据传输中比HTTP少。

      请求-应答

      HTTP 要求电文“ 进进出出” 真正连接到互联网结构, 现在互联网、 C- S 和 B- S 更传统结构, 其通信与 HTTP 应用层无法区分 。

      无状态

      让我们首先界定国家。 一个国家是一个标志,表明信息的变化在整个通信过程中都有记录,例如TCP, 0-CLED, 2-ESTABLISED。

      那么,为什么HTTP没有地位? 因为它只懂得如何发送数据,而别无其他内容。 在数据发送后,有一个请求是类似“ 继续隐藏你的信用和名称 ” 。 说起来, UDP有点熟悉, 但是HTTP仍然是目标, 因为HTTP是连接的, 而UDP是连接的, 而UDP是互不连接和未申报的, 只是在港口丢弃它, 不论IP是正确还是不正确 。

      被"否认"有什么好处?

      服务器缺少“ 集合能力 ”, 不需要额外的资源来记录状态信息, 这不仅是为了更容易, 也是为了减轻服务器的负荷, 并允许服务器使用更多的 CPU 和内存来提供外部服务 。

      此外,“无状态”意味着服务器是完全相同的,也没有“状态”差别,因此可以简单构建一个组群,在组群中,负载平衡器向任何一个服务器提出运输请求,而没有因不一致的状态而造成处理不当,并使用“装货机”的“脑力方法”实现容易的高可用率和高可用率。

      因此,什么是"无罪"的邪恶?

      由于服务器缺乏“ 模拟能力 ”, 它无法处理一个“ 商业” 行动, 需要多个连续阶段。 例如, 电子购物, 首先登录, 然后添加购物车, 然后开账单、结算和支付, 一系列活动需要用户身份识别, 但“ 无害” 服务器并没有意识到这些请求是相关的, 并且必须每次都要求身份信息, 这不仅不方便, 而且还增加了 u

      易于扩展

      这个功能基本上是HTTP报告的结构, 报告之后只对线条和头条的格式作出说明。 HTTP协议的主要组成部分的每个方面,例如请求方法、 URI、状态代码、理由短语、第一个字段等等,都没有“写成死亡”,使开发商能够随意修改、扩展或解释,提供最高程度的信心和自由度的浏览器和服务器,并且符合 HTTP 协议。

      一个显著的例子是用于“不跟踪”的标头字段DNT(Do not track),它最初由Mozilla提出,目的是保护用户隐私,防止网站监测跟踪用户偏好。 不幸的是,尽管DNT自建立以来已有约七八年时间,但许多网站仍然选择“ignore” DNT。While DNT大部分都失败了,这也表明HTTP协议是“灵活和自由的”,不会被压制。

      HTTP对“可靠传输”的定义中也说明了“灵活、易于伸缩”的方面,该定义不仅使用TCP、UNIX Dome Socket,而且还使用SSL/TLS, 甚至以UDP为基础的QUIC, 不仅限制具体的次级协议,而且不仅使用TCP、UNIX Dome Socket, 甚至使用SSL/TLS, 甚至可以在上层语义保持稳定时随时改变。

      明文传输

      “ 明确” 表示协议的内容( 具体地说, 标题部分) 并不使用二元数据, 而是直截了当的可读文本形式 。

      与TCP或UDP等二进制协议相比,其优点显而易见,可以直接用肉眼阅读或改变,而不用任何其他工具,如浏览器、Wiresark或tcpdump抓痕,这些工具将大大改善我们调试的发展。

      当然,同样显而易见的是,HTTP报告中包含的所有信息都会暴露在“全天候”之下,在长传输链的任何时刻都没有隐私,加入链条中特定装置的坏角色,只是“绕过”交通,就能发现对话。

      不安全

      安全的若干特征在“机密性”方面显然是一个不利因素,正如HTTP在“识别”和“完整性核查”两方面都是一样。

      在现实生活中,你最好拥有身份证、驾照或带有照片和印章的护照,但这是虚拟互联网世界中的一个问题。 HTTP没有提供确定来文双方真实身份的有效手段。 虽然协议中有一个基本的认证机制,但由于刚才提到的明示传输的缺点,这一机制几乎可以说是“无纸”的,而且很容易被打破。如果只使用HTTP协议,你可能会被连接到一个相同的网页上,但是一个假网站,然后“钓鱼”远离各种个人信息。

      HTTP 协议也无法“ 完全核查 ”, 数据在传输过程中可能很容易被修改, 无法验证。 比如, 假设你收到了来自HTTP 以上银行的报告 : “ Ming 转账了100美元给您 ”, 你无法知道Ming是否真的只发送了100美元。 也许他存了1 00美元或50美元, 但他被黑了,改成了100美元, HTTP 协议无法给你解释 。

      虽然银行可以使用MD5和SHA1算法在提交材料中添加数字摘要,但“明确”的致命缺陷允许黑客用摘要编辑数字摘要,使得无法确定它们是否被篡改。

      我们稍后将讨论的HTTP, 已经存在,以补救 HTTP 脆弱性的问题。

      Http请求

      浏览器启动 HTTP 请求的典型情景

      image-20211124120356468

      Http请求的准备

      建立连接需要三握手。

      Http请求的构建

      请求报文的格式:

      • 请求行
      • 请求头
      • 请求体
      _CopyPix_6_7image-20211125090715294

      请求行

      Http 1. 1 是一个版本 。

      这有点奇怪,我们稍后再讨论

      Get post put puttlete 头部是一个常见的技术。

      未广泛使用的一些方法包括:

      Get、POST、DELETE、HEAD是众所周知而且经常使用的命令;然而,看PUT是令人困惑的。

      PUT

      其目的在于将最新内容上传到提供的资源地址。 但是,由于HTTP服务器通常不允许上传文件,PUT和POST都被转换为传递到服务器的方法。

      URL

      让我们看看 URL 。 您发现请求了吗? 它不在 URL 中, 它去了哪里? 在 HIST 领域 。

      再说一遍,没有 URL,但还有一个斜线。有什么意义呢?让我们看看这个。

      image-20211125092043765

      这里出事了 赔率是11比1 如果你仔细看一看 它就在 URL里

      事实上,所要求的域名总是列在清单的首位。HOST字段,剩下的/xxx/xxx事实上,资源路径维持在请求线上,如果是请求,请求参数也在请求线上;POST请求参数在请求体中。?参数位于后面,在后面提到。&换句话说,请求包含两个参数,其中一个参数是:a=1,一个是b=2

      image-20211125092711580

      请求头

      这一切都是关键到力量, 除了几个例外:

      • 接受: 指定客户端可以理解 mime 类型 。 text/html,application/xhtml+xml,application/xml;,意味着您可以每类获得一种以上的产品。拔除设备。 这是正确的答案 。Content-Type

      • 接受编码:客户所接受的字符编码,通常采用压缩技术等压缩技术。gzip, deflate, br,同样不同类型用把它分开 和解决办法吻合Content-Encoding

      • 接受- Chharset : 与回答头匹配的客户可接受字符集Content-Type

      • 接受语言:客户理解的一种自然语言。zh-CN,zh,这里对应响应头的Content-Language

      • Center- Type: 与文本的格式有关, 例如 :application/json; charset=UTF-8,这个最常用。

      • 缓存控制:当客户发送包含最大值命令的请求时,如果确定缓存中资源的时间少于所提供时间的价值,客户可以接受缓存资源;如果最大值被指定为0,缓存通常必须将请求传送到应用程序集定义分子:当客户发送包含最大值命令的请求时,如果确定缓存中资源的时间少于所提供时间的价值,客户可以接受缓存资源;如果最大值被指定为0,缓存通常必须将请求传送到应用程序集。

      image-20211125103940527

      让我们看看还有什么更值得注意的, 比如下面这个“接受”字段, Q = 0 behind. 9,q =0。什么是8?

      这是内容磋商的质量值, q 表示“ 质量系数”, 最高为1, 最低为0.01, 默认为1, 用来表达重量的重要性, 称为语法 。q = 值; 数据类型或语言代码比如上面的意思 我希望这是最优先的事项text/html,application/xhtml+xml,application/xml;q=0.9或者application/signed-exchange;v=b3;q=0.9因为他们的总重是零九分

      这很容易被逗号误导, 但逗号在ABNF语法中的含义意味着ABNF的逗号与分号的使用方式与我们相同。

      请求体

      Http请求的发送

      • 该程序通过二进制流向传输层发送数据。
      • 二进制流将通过传输层转换成报纸部分。
      • 我们会通过协议找到对方的信号
      • 到应用程序级别, 传输层将把信息转换成流二进制流 。

      HTTP响应

      Http响应的构建

      HTTP1.1 反应报告格式:

      • 响应行
      • 响应头
      • 响应体
      image-20211125090620411

      相应行

      HTTP 1. 1 1 是版本号 。

      状态代码的目的是以代码的形式传达服务器处理请求的结果,该代码经常与结论中的“合理响应”短语一起使用。

      短路:与原因单词“确定”和“未找到”有关。

      状态代码是这里最重要的项目。让我们看看状态代码。

      状态码

      现行《中转公司标准地位代码》为三位数,从00到99不等,但这一数字并不大。

      • 十二. 提醒注意协定目前处于中间状态,需要采取更多行动;
      • 2xx: 成功解决,短路基本原因恢复正常;
      • 3xx:指方向调整;
      • 4xx表示客户错误。
      • 5xx: 服务器错误;
      image-20211125093253707

      让我们看看标准状态代码。

      常见状态码

      2xx

      最常见的200 OK这是一个惊人的成功。每次你看到它, 它给你一种舒适的感觉。

      还有一个是204 No Content这是成功的,尽管没有答复;

      从零星的发行或整段下载中可以看到,206 Partial Content这表明可用于作出反应的资源并非全部,而只是其中的一部分。

      3xx

      301 Moved Permanently这表明资源确实没有,因此建议将下列请求重新挂钩。

      302 Found注释只在有限的时间内有效。

      4xx

      400 Bad Request客户报告要求有问题;

      403 Forbidden这一点特别重要,因为这不是一个客户特有的问题,因为服务器出于各种原因,包括信息敏感性、法律禁令以及我在结论前后日期转换过程中发现的问题,不允许你访问服务器,原因如下:

      还有经典的404 Not Found我们无法获得资源的原因太多,我希望有时间总结一下。我看到最常见的问题是请求地址拼错。哈哈!

      5xx

      最常见的是500 Internal Server Error这完全是服务器的问题

      还有一个503 Service Unavailable这通常表明服务器超载。 我暂时不能和你聊天, 但我会回来的。

      响应头

      所有关键值的密钥对格式

      • Concent- Ecent 编码: 将响应编码的过程, 例如gzip

      • Center-Type: 通知客户真正返回的材料类型, 例如 。text/html; charset=UTF-8

      • 重试后: 通知客户再次尝试需要多长时间 。

      响应体

      HTTP 传输大文件的方法

      在现实中,有两种更频繁的发送大案卷的方法:

      • 压缩
      • 分块

      HTTP 表示数据压缩和文件部分。

      数据压缩

      文章中描述的字段包括所需的“接受编码”字段,其中载有浏览器所接受的压缩格式列表,例如 gzip、 deflate、b 等,以便服务器可以选择压缩技术,从中将原始数据放入Concent-Encoding 响应头,然后将其放入浏览器。

      本案的压缩数据一般是照片和视听材料等文本文件,这些文件已经压缩,而且不适当。

      压缩多媒体数据的工作将在以后特别结合流媒体协议进行。

      分块传输

      HTTP 中的数据块被称为块块, 在回复报告顶部将有一个 。Transfer-Encoding:chunked这意味着,适当的数据并非全部同时提供,而是以一系列文件形式提供。

      除了主观使用外,在传输不确定长度数据时,Chunk通常被称为“流利数据”。Content-Length由于无法具体说明确切的长度,因此也使用 " 黑猩猩 " 进行沟通。Transfer-Encoding:chunkedContent-Length只有一个相互参照的字段。

      分块传输的编码规则

      长度为 16 长, 数据和长度与 CRLF( 广称为 rn) 完成 。 然后观察区块的末端, 使用 0 长度来标记区块的尾端 。

      image-20211125131315059

      范围请求

      您有没有想过, 如果视频进度栏拖动, 如何请求数据?

      网络服务器根据用户需求增加了一个功能——范围请求。

      为了满足这种必要性,HTTP协议允许客户应请求使用。Accept-Ranges:bytes设置一条信息, 告诉客户端支持范围请求 。Accept-Ranges:node就是不支持。

      HTTP的实现是通过偏转完成的,我还不明白,所以我们从那里开始吧。

      提出范围请求实际上是一种块状传输的优化,具有若干好处:

      • 例如,一部电影可以根据时间点计算文件的范围(吸附),而不传送完整的文件,并立即正确地捕捉碎片的数据内容。
      • 例如,我们根据范围请求下载不同的下载和中途停留:
        • 发送一个总部,以确定服务器是否支持范围请求,并确定文档的大小;
        • (a) N线条,每个线条都利用 " 距离场 " 分割下载和传送数据请求;
        • 下载没有意外中断的风险,只要 " 范围 " 根据先前下载记录要求其余部分,就没有必要重复。

      我不知道你在问什么 我晚点再查

      多段数据

      范围请求,每次一个段落,实际上不止一个段落,并查看下图:

      image-20211125140001793

      我们省下一个坑 以后再回来查更多信息

      HTTP的连接管理

      http1. http1. before one, it's short

      长短连接

      首先,首先考虑基本的短路和长线。 由于HTTP建立在TCP上,它必须经过三次握手和四次挥手,这样就不可能有短暂的联系。 在生命中,很难有一个短暂的关系。

      image-20211125145138373

      关于连接的头字段

      要启动很长的连接, HTTP1. 1 是一个默认值, 但可以在请求中指定 。Connection:keep-alive如果你不展示开张,那与开张无关,好吗?

      当连接关闭时,此字段大部分被使用,也就是说,当该字段被设定为Connection:close通知服务器此对话框后将终止连接。 服务器还将在返回信件中添加字段 。

      除非有特定技术,否则服务器通常不会自由关闭连接。 您可以在这里看到两种Nginx技术:

      • 设置“ kepepalive_ timeout” 命令, 以建立长期连接连接的超时, 并在没有长期连接数据的情况下自愿断开连接, 防止闲置连接使用系统资源 。
      • 指定使用“keepalive_ requests” 指令在很长的连接中发送的最大请求数量。如果设置为 100, 例如, Nginx 将在此连接处理100 个请求时中断连接 。

      队首阻塞

      当我们谈论“请求-回复”字符时,我们的意思是 HTTP 信息必须是“ 一对一 ”, 因而容易被阻塞。 最简单的解决方案是建立许多线索,但如果用户众多,用户数量* 将是天文,这会炸掉服务器。

      因此,存在一个服务器端解决方案,这是一个众所周知的多基金会分割技术,稍后将在 DNS 中深入探讨。 主要策略是让许多域名指向同一个主域名。

      以后将公布更多详情。

      重定向与跳转

      爪哇网络开发工作已经对这一基本机制进行了审查,其中有两个插图:

      image-20211125152945508

      image-20211125152821645

      让我们看看前方传输的特征 与方向转换。

      重定向与转发的特点

      • forward
        • 浏览器地址没有改变
        • 对于任何数量的来文,只有一个请求。
        • 应共享请求的域数据。
        • 可用于WEB-INF目录
        • 除工程外,没有获得资源的途径。
      • redirect
        • 浏览器的地址变了
        • 两次请求
        • 不披露请求字段中的信息 。
        • 无法关闭临时文件夹:%s。
        • 除工程资源外,还有其他资源可用。

      我们主要对重定向使用方案感兴趣

      重定向的使用场景

      以前经常使用两种形式的再定向:301个永久再定向和302个临时再定向。

      首先,使用再定向有两个典型原因:

      • 资源不可用
      • 避免重复

      有太多的情况 资源没有, 域名更改, 服务器更改.. 列表继续。

      为避免重复,网站大多使用许多类似的域名,随后在到达主站时,这些域名被转到主站。

      你什么时候用号码301和302?

      301的最典型使用是搜索引擎优化(SEO),旧的 URL 可能因为更改域名而过时,将服务器移动到新的机房,重新设计网络目录..并且必须提醒浏览器和搜索引擎更新到新地址。

      302中最常用的情景一般是故障维护时间,或11项“服务退化”的2倍。 11项“服务退化”暂时转移了流动,与魏援赵技术相当相似。

      重定向的相关问题

      调整方向有两个主要问题:

      • 一个是性能上的磨损和撕裂,因为比传输多了一个请求。
      • 另一个比较麻烦,是骑自行车。 结果,HTTP协议明确要求浏览器能够检测到“周期跳跃 ” 。 稍后将对情况进行调查。

      Cookie机制

      首先看看饼干的使用。

      饼干的使用

      这将用于两个领域:对信头字段的响应和对回应回应的响应,对响应回应的响应,对回应的响应,对回应的响应,对回应的响应,对回应的响应,对回应的响应,对回应的响应,对回应的响应,对回应的响应Set-Cookie和请求头字段Cookie

      服务器在第一次通过浏览器到达服务器时一定不知道用户的身份。 因此, 以“ Key=value” 格式创建了独特的识别数据, 然后在 Set- Cookie 字段中设置, 并连同回复信息一起传送到浏览器 。

      浏览器收到了回复信息, 并在其中找到了 Set- Cookie, 了解这是服务器的标识, 并存储了它, 自动将其放置在 Cookie 字段中, 并在下次请求时将其发送到服务器 。

      由于第二次请求中的Cookie字段,服务器理解用户不是新人,而以前是来生成Cookie值、识别用户并随后提供量身定制的服务。

      image-20211125155655001

      Cookie有两个特点:

      • Cookie是作为浏览器生活,而不是作为操作系统中的本地元素,当浏览器关闭时被销毁。
      • 饼干的语法与 HTTP 类型不符, 因此..这就是不同领域的不同之处。

      Cookie的属性

      JavaWeb 创建的属性图表, 用于向 JavaWeb 学习 :

      image-20211125160417348

      还有一些其他安全特征:

      • Http 仅 : 只有 HTTP 协议可用于传输数据 。
      • SameSite
        • 设置成SameSite=StrictCookie可以小心地 限制在不传送 与空间站的跳跃连接。
        • 设置成SameSite=Lax允许安全技术,如Get/HEAD, 但不是POST在站前。
      • 安全性:意味着Cookie只能通过HTPS协议传输加密数据,禁止通过明确的HTTP协议传输。

      Cookie的应用

      更常见的是“身份识别”, 这是网站的登录密码, 通常在Seasion, 真正是Cookie, 稍后可以讨论。

      另一个是广告追踪器, 设计它是一个经常监视器, 你一定在互联网上看到过很多广告照片, 这些照片得到广告商网站(如谷歌)的支持, 他们准备在你的电脑上“偷吃”饼干, 以便其他广告可以在 Cookie 中读取你的身份, 然后进行行为分析, 然后将你推上广告。

      由于这些饼干没有保存在访问的主要网站,它们被称为“第三方饼干 ” 。 如果销售商实力强大,广告到处都是,它们就更“可怕 ”, 无论你走到哪里,他们都通过Cookiei和广告“精密罢工”了解你。

      Session

      会话、 会话、 底端是通过 Cookie 完成的, 如以下两个图像所示 :

      image-20211125162005775

      image-20211125161944564

      HTTP的缓存控制

      Http2.0

      2.0的特性:

      • 首部压缩
      • 二进制分帧
      • 流量控制
      • 多路复用
      • 请求优先级
      • 服务器推送

      首部压缩

      首部复用性

      HTTP 1.1 应用层中的通信以纯文本形式进行,每份通信都包含完整的 HTTP 信头,用于描述资源属性,不过,第一节中可能存在相同的描述字段,重复可能会损害性能。

      工作过程

      为解决这些问题, HTTP 2. 0将在某种程度上压缩 HTTP 头部,在两端建立一个索引表,仅按同一头部编制索引。

      HTTP2定义了请求和答复的初始部分。 0 数字实际上保持不变, 但所有第一个键必须缩小, 线条必须独立, 如: 方法 : 、 方案 : 主机 : 路径 : 这些密钥对 。

      img

      二进制分帧

      通信单位

      • HTTP2.Frame是0个通信最小的单位。
      • 信息:这些是较大的通信单位,与逻辑的 HTTP 信息有关,如请求、答复等。由一个或多个框架组成。
      • 流是比电文更大的通信单位,是TCP连接的虚拟渠道,可以传输双向通信。

      工作过程

      HTTP 2. 0 将所有传输信息分为较小的信息和框架,然后以二元格式编码如下:

      • 页眉框架: 此框架用于传达页眉内容( 请求页眉) 并启动新流 。
      • 若干数据框属于同一流,用来发送物体(请求体)。

      流量控制

      多路复用

      HTTP2. 在共享TCP连接的基础上,请求和答复可以同时根据二进制基质传递。

      HTTP 2. 0 将TCP连接到多个流中,每个流中都有自己的身份,流动可能从客户到服务,或从服务到客户。

      这只是一条虚构的路线

      HTTP 消息被分割成单个框架, 不影响信件的语义学 。 这些框架可以随机传输, 然后根据每个框架起始处的流量标识重新组合 。

      请求优先级

      通过将 HTTP 信息分割成许多不同的框架,通过优化这些框架的摇摆和传输顺序,可以进一步改进性能。

      每个溪流的优先级为31比特,0是最高优先级,2是最低优先级。

      工作过程

      客户端明确指定优先级,服务端可以根据这个优先级作为交互数据的依据,比如客户端优先设置为.css>.js>.jpg。服务端按此顺序返回结果更加有利于高效利用底层连接,提高用户体验。然而,在使用请求优先级时应注意服务端是否支持请求优先级,是否会引起队首阻塞问题,比如高优先级的慢响应请求会阻塞其他资源的交互。

      服务器推送

      案例分析

      如果使用 HTTP 1 是一个字符串, 1 则使用 HTTP 2 。 0, 客户端和服务可以同时提交许多请求或答复, 而不相继进行一对一匹配 。

      img

      HTTP 2. 0 将三个请求分为三个流, 将数据分为一个框架, 并以随机顺序将其传送到 TCP 连接断裂处 。 0 将三个请求分为三个流, 将数据分为一个框架, 并以随机顺序将其发送到 TCP 连接 。

      img

      缺点

      • 该疾病违反了TCP协议。

      由于HTTP 2.Also基于TCP协议, TCP协议在包件处理中严格排序。 当一个数据包有问题时, TCP连接必须等到软件包重新传输。 虽然 HTTP 2.0 Via 多个流流, 以前的TCP连接的逻辑平行内容通过多条线路广播, 但基于 TCP 协议的中线 HTTP 2.Also 没有相关数据, TCP协议在包件处理中严格排序。 当一个数据包有问题时, TCP连接必须等到软件包重新传输。 虽然 HTTP 2.0 Via 多个流, 以前的TCP连接的逻辑平行内容通过多条线路广播, 但中间没有相关数据 。

      QUIC协议

      根据联合民主党协议,快速联合民主党互联网协商提议以四个关键机制取代TCP, 将TCP作为HTTP/3数据传输层协议:

      • 使用随机整数取代海关连接中的四方识别。
      • 个人传输:一次性序列号消除了RRT误算问题。
      • 无阻塞多路复用:
      • 自定义流量控制:

      自定义连接机制

      众所周知, TCP 连接是由来源 IP 、 源端端、 目的地 IP 和目的端口的四倍组合定义的。 当这些要素之一发生变化时,必须终止并重建连接。

      当手机信号变得不可靠或被转移到WIFI和移动互联的移动网络时,就会导致重新连接,导致三次握手和延迟。

      TCP没有办法,但根据UDP,你可以将连接机制保留在QUIC自己的逻辑中,不再由四位数组指定,而是随机使用64位数的ID,而UDP是断开的,因此,在IP或端口改变时,只要ID保持不变,则无需重新连接。

      自定义重传机制

      TCP 耗时抽样中存在错误。 QUIC 中还包括一个递增序列号。 序列号为100的A包只发送一次, 下一个是添加的。 例如, 发送序列号为100的包件, 发现没有返回; 再发送一次, 序列号为101; 如果 ACK 100 返回, 是第一个包的响应。 如果 ACK 101 返回, 是第二个包的响应 。

      QUIC是连接的,是一个数据流,类似于TCP, 传输的数据具有偏转效应,可以观察到数据投送地点,只要该软件包没有运到,就会重新发行;如果运到,它可能仍然被合并成一个数据流。

      img

      无阻塞的多路复用

      2. 然而,QUIC以UDP为基础,多个流之间在连接上没有依赖关系。 因此,如果流2失去了UDP包,继而在流3中又失去了UDP软件包,尽管需要重新传送第2组软件包,但可以在不等待的情况下向用户提供第3组软件包。

      自定义流量控制

      另一方面,QUIC窗口适合其自身的多常规再利用方法,不仅调节连接窗口,而且调节连接中每个流控窗口,以告知最终可接受的字节。

      记得吗? TCP 接收窗口的起始点是下一个接收和ACK的软件包,即使后一个软件包出现,但窗口也不能向右移动,因为 TCPACack 机制是基于序列号的累积响应, 一旦 ACK 机制基于序列号的累积响应, 它表示,只要前线不在那里,背面不在那里, 只要前线不在那里, 背面也在那里, ACK 就会在那里, 并且有可能在时间和浪费中重复它

      QUIC ACK 以 Exfset 为基础, 每一袋 Exfset 都到达一个缓存中, 回答它, 回答它, 不重新发行它, 中间槽等待它或重复它, 窗口从目前收到的最大 Exfset 开始, 而从此 Exfset 到当前串流的最大缓存是真实的窗口大小 。

      img

      小结

      HTTP协议尽管普遍和复杂,但侧重于GET、POST、PUT和DELETE方法,以及关键的初始领域。

      HTTP2.0利用诸如头压缩、隔离、二元编码、多电路再使用等技术提高性能;

      QUIC协议通过使用UDP定义的类似TCP的连接、重新测试、多路再利用和流量控制技术,进一步提高了绩效。

      思考题

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

          热门文章

          文章分类