首页 > 其他分享 >http2

http2

时间:2023-11-23 20:03:20浏览次数:32  
标签:http 请求 http2 发送 传输 HTTP2 客户端

1. what?

①. 2009年,Google的工程师提出了HTTP的替代方案SPDY,Http 2就是在SPDY的基础上发展起来的.

2. HTTP2的优势:

三大特点:多路复用、头部压缩、Server Push

(1). 传输优势(多路复用):

①. HTTP2中的数据传输都是以最小单位帧去传输的.

②. 对某一个域名所有的请求和响应都在一个TCP连接上完成交互:
    a. 对同一个域的服务器只建立一次TCP连接,加载多个资源.

③. 数据没有大小的限制(HTTP/1.1单个包有1460字节约1.5K的大小限制),只要带宽足够:
    a. HTTP2使用二进制帧传输,同时会对http头部进行压缩.

④. 数据帧之间可以乱序发送:
    a. 并行交错的请求和响应而且之间互不干扰.
    b. HTTP2内部再根据帧首部的流标识ID再进行重新组装.

(2). HTTP2的多路复用技术:

数据以帧(frame)的格式在同一个连接传输,并且服务还可以提前Push一些资源给客户端.

①. 通过客户端与服务端之间的一个socket连接通道:
    a. 传输的内容不再是必须有序的.
    b. 可以无序可以在一个套接字上交错地发送请求和响应,请求和响应之间互不影响.

②. 所有请求和响应都无法相互阻塞.

③. 消除不必要的延迟,从而减少页面加载的时间.

(3). 二进制编码:

①. http1.1传统的文本流传输形式存在一些解析上的复杂性.

②. http2使用二进制方式不存在这个问题.

③. http/2的二进制形式并没有改变http/1.1的体系,只是把传输报文格式改了(如图):
    a. 头部帧:Headers frame
    b. 数据帧:Data frame

(5). 报文头压缩:

①. 利用了HPACK压缩方式大大减少了网络传输过程中首部的体积大小.

②. 客户端发了两次请求:
    a. 第一次请求有完整的http报文头部.
    b. 第二次请求只有一个path的字段不一样,只需要发送一个path的字段即可.
    c. 大大减少了发送的量.
    d. 要求客户端和服务同时维护一个报文头表.
    e. 在动态请求时可能只需要发送几个字节的数据,但却需要发送一个几百个字节的报文头.

(4). 反模式:

①. HTTP/1.1优化性能的方法:
    a. 域名拆分、资源内联、资源合并、禁用cookie的域名、生成精灵图片

②. HTTP2这些方法将不再起作用、完全没有必要.

(5). Server Push:

①. 在http1.1/2中可以看到第一个资源html没加载之前,其它资源是不会开始加载的.
    a. 因为它们是html触发加载.

②. http2可以提前把可能会用到的资源先push给客户端,不用等到请求的时候再发送:
    a. 这样可以提高页面整体的加载速度
    b. nginx官目前暂不支持Server Push.
    c. http2的Node.js包支持.

3. 客户端不支持http2?

①. 如果浏览器不支持http/2,还是能够正常打开的:
    a. 建立https连接时需要先握手.
    b. 浏览器或客户端会发送一个Client Hello的包.
    c. 这个包里面会说明它是否支持http2(如图).

②. nginx就能够根据握手信息决定是否使用http/2,如果客户端不支持就使用http/1.1.

标签:http,请求,http2,发送,传输,HTTP2,客户端
From: https://blog.51cto.com/u_16255561/8532215

相关文章

  • grpc服务报错: http2 frame too large
    报错如下:14xxBadRequesterrorreadingserverpreface:http2:frametoolarge其中4xx为客户端报错中的一个具体数字。比如:404/415,仅以报错举例,且出现报错码不固定。但是errormsg的核心内容不变:frametoolarge...这个是因为客户端在没有TLS加密的情况下发送HTT......
  • 编译安装http2.4,实现可以正常访问
    #1安装相关包[15:51:32root@centos8~]#dnfinstallgccmakeautoconfapr-develapr-util-develpcre-developenssl-develredhat-rpm-config-y​#2下载并解压包[15:53:11root@centos8~]#wgethttps://archive.apache.org/dist/httpd/httpd-2.4.46.tar.bz2[15:55:34roo......
  • 浏览器端,怎么发一个 http2 的请求?
    在浏览器端发送一个HTTP/2请求,可以通过以下几种方式实现:使用原生的JavaScript:你可以使用XMLHttpRequest或fetchAPI发送HTTP请求。浏览器会根据支持的协议版本选择使用HTTP/2还是较旧的版本(如HTTP/1.1)。例如,使用fetchAPI发送一个HTTP/2请求:fetch('https://example......
  • HTTP2 概述
    HTTP/2,也就是超文本传输协议第2版,不论是1还是2,HTTP的基本语义是不变的,比如方法语义(GET/PUST/PUT/DELETE),状态码(200/404/500等),RangeRequest,Cacheing,Authentication、URL路径,不同的主要是下面几点:HTTP2主要是针对Http1的下面几个问题做的优化:并行能力有限每一个源最大只支持6个请......
  • springboot +nginx 配置http2
    说明nginx端使用http2+https,如果不使用https,浏览器会默认走http1.1后台使用http2,不使用https,因为内部服务之间没必要每次校验证书nginx配置#userroot;worker_processesauto;error_logD://nginx-log/error.log;#error_log/dev/null;#pidlogs/ngin......
  • HTTP1.0、HTTP1.1、HTTP2.0 协议的特点
    HTTP(HypertextTransferProtocol)是一种用于在Web浏览器和Web服务器之间传输数据的协议。HTTP的版本有很多,其中比较常见的有HTTP1.0、HTTP1.1和HTTP2.0,它们有各自的特点。HTTP1.0的特点:1.每个请求/响应需要建立新的TCP连接,并在完成后关闭连接,导致较高的延迟。2.......
  • HTTP/HTTPS/HTTP2
    HTTP协议图文简述--HTTP/HTTPS/HTTP2 01、准备1.1、先了解下网络模型/TCPHTTP 连接是建立在 TCP*协议之上的,其数据传输功能是由TCP完成的,那TCP又是什么呢?TCP 是一个单纯用来建立通信连接,并传输数据的基础协议,属于网络模型中的的传输层。OSI模型(OpenSystemInterc......
  • 7·1HTTP协议的瓶颈|7·2双工通信的WebScoket|7·3探索式的实践-SPDY|7·4期盼已久的H
    HTTP协议的瓶颈影响Http网络请求的原因带宽延迟HTTP协议的瓶颈一条连接上只可发送一个请求请求只能从客户端开始。客户端不可以接受除响应意外的指令请求/响应头部不经压缩就发送每次互相发送相同的头部造成的浪......
  • http3.0和http2.0的比较
    从HTTP/1.1到HTTP/2,HTTP协议一直都是使用TCP作为传输协议。然而,就在最新的HTTP/3,HTTP就直接把TCP抛弃了,向孤立无援的UDP伸出了援手,基于UDP协议的基础上,在应用层实现了一个可靠的传输协议——QUIC。 很多同学可能就好奇了,HTTP都用TCP都用了几十年了,而且T......
  • Server-Sent Events Is it http2 server push?
    Person:Pleasegivemeanexamplewhereginimplementsserverpushandthefrontendreceivesdata.ChatGPT:Sure!Here'sanexampleofhowyoucouldimplem......