HTTP 2.0 详细介绍

yizhihongxing

HTTP 2.0 详细介绍

什么是HTTP/2

HTTP/2是用于安全传输万维网内容的应用层协议。与其前身HTTP/1.1有很多相似之处,但它们有很多重要的不同之处。HTTP/2旨在使Web页面加载更快,同时提供更好的安全性和代码复杂性,而且还带来了一些新功能。

HTTP/2的优点

  1. 多路复用
    HTTP/2采用二进制分帧,一个TCP连接可以传输多个二进制消息(请求/响应)。这使得连接利用率更高,在同一条连接上的多个请求可以并行进行(异步传输),不需要等待其它请求处理完成。此外,HTTP/2中还有一个优化机制:服务器可以对已经发出的响应与客户端未来请求的优先级进行关联,从而保证一些关键资源能够优先处理。

  2. 头部压缩
    HTTP/2使用一种称为HPACK的新的头部压缩算法。 在HTTP/1.x中,头部信息是纯文本,需要消耗大量的带宽,而且重复出现的信息不必每次都重复发送。 HTTP/2利用HPACK算法在客户端和服务器之间减少网络流量,缩短加载时间。

  3. 服务器推送
    HTTP/2引入了服务器推送的概念,服务器可以在响应客户端之前“预加载”资源,进一步加快页面渲染速度,而且不需要客户端明确要求。例如,如果客户端请求了一个HTML文档,服务器可以发送所请求的文档及其所链接到的资源,以便在客户端接收响应按钮之前加载这些资源。

  4. 更好的安全性
    HTTP/2 对隐私和安全保护更加重视,引入了服务器证书证明机制,标准化了WhatsApp等应用程序使用的TLS吊销警告格式。

HTTP/2的示例

HTTP/1.1

GET / HTTP/1.1\r\n
Host: www.example.com\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n
Referer: https://www.example.com/\r\n
Accept-Encoding: gzip, deflate, sdch\r\n
Accept-Language: en-US,en;q=0.8\r\n
\r\n

HTTP/2

PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n
GET / HTTP/2.0\r\n
Host: www.example.com\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n
Referer: https://www.example.com/\r\n
Accept-Encoding: gzip, deflate, sdch\r\n
Accept-Language: en-US,en;q=0.8\r\n
\r\n

从上面两个示例可以看出,如果对于同一个请求,在HTTP/1.1中需要发送8行纯文本头部信息,而在HTTP/2中,只需发送一行头部信息即可。这是由于HTTP/2采用了头部压缩算法。此外,在HTTP/2中,服务器可以在响应客户端之前“预加载”资源,进一步加快页面渲染速度,在HTTP/1.1中则需要客户端明确要求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:HTTP 2.0 详细介绍 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#利用System.Uri转URL为绝对地址的方法

    当我们在编写 C# 程序时,有时需要将相对 URL 转为绝对 URL。这时可以利用 System.Uri 类提供的方法来实现。在本篇攻略中,我将详细讲解如何使用 System.Uri 类来将相对 URL 转为绝对 URL 的方法。 步骤一:创建 Uri 对象 使用 System.Uri 类中的 Parse 方法或者构造函数,将相对 URL 转为 Uri 对象…

    C# 2023年6月7日
    00
  • .NET 6开发TodoList应用引入第三方日志库

    为了在.NET 6开发TodoList应用中引入第三方日志库,可以参考以下步骤: 步骤一:在TodoList项目中安装第三方日志库 可以使用NuGet包管理器或Package Manager Console安装第三方日志库。常见的日志库有Serilog、NLog、log4net等。以Serilog为例,可以在Package Manager Console中使…

    C# 2023年6月3日
    00
  • C#中的HttpWebRequest类用法详解

    C#中的HttpWebRequest类用法详解 简述 HttpWebRequest类是.NET Framework提供的一个用于发起HTTP请求的类。通过HttpWebRequest可以模拟HTTP客户端与服务器间的通信,发送任何形式的HTTP请求,并获取服务器的返回数据。 常用方法和属性 方法 GetResponse() 发起Http请求并获取响应。 Ht…

    C# 2023年5月31日
    00
  • C# 字符串与unicode互相转换实战案例

    下面是详细讲解“C# 字符串与unicode互相转换实战案例”的完整攻略: 背景 在C#编程中,有时需要将字符串与unicode之间进行转换。本文将针对这一问题进行探讨,并提供实战案例。 技术准备 在进行转换操作前,需要先掌握以下技术: 1. 字符串类型 在C#中,字符串类型被定义为System.String类。该类型可以容纳任何Unicode字符,通常使用…

    C# 2023年6月8日
    00
  • 如何利用C#打印九九乘法表

    下面是详细的攻略: 如何利用C#打印九九乘法表 1. 概述 九九乘法表是学习基础数学的必修课程之一,在程序员的日常工作中,也常常需要用到九九乘法表。利用C#编程语言打印九九乘法表是一项基础练习。 2. 实现方法 要实现打印九九乘法表,我们可以使用嵌套循环来实现。具体步骤如下: 使用两层for循环嵌套,外层循环控制输出的行数,内层循环控制输出该行的列数; 每次…

    C# 2023年6月6日
    00
  • C#表达式树基础教程

    下面我会详细讲解“C#表达式树基础教程”的完整攻略。 什么是C#表达式树 C#表达式树是一种数据结构,它可以被用来表示C#代码中的表达式。表达式树通常被用于动态构造查询语句或者动态生成代码。 表达式树是一种树形结构,它由一些表达式节点和变量节点构成。像x => x.V1 + x.V2这样的表达式会被转化为表达式树,其中x.V1和x.V2是两个变量节点,…

    C# 2023年6月1日
    00
  • C# zxing二维码写入的实例代码

    C# zxing是一个用于二维码的开源框架,它支持二维码的读取、生成,可用于各种应用场景,例如电子商务、物流信息追踪等。下面是C# zxing二维码写入的实例代码攻略: 1. 安装zxing库 首先需要安装zxing库,你可以从nuget包管理器中搜索zxing来安装。 2. 创建二维码编码器 BarcodeWriter writer = new Barco…

    C# 2023年5月31日
    00
  • C# 三种方式实现Socket数据接收

    C#是一种基于对象的程序设计语言,可以使用它来实现Socket数据接收。在C#中,Socket可以通过三种方式进行数据接收,分别是:同步方式、异步方式和事件驱动方式。 同步方式 同步方式是一种阻塞式的接收方式,即程序执行在接收Socket数据的阶段会一直阻塞,直到数据接收完成后程序才会继续执行。 代码示例: using System; using Syste…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部