IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> http2.0/http3.0/rpc -> 正文阅读

[网络协议]http2.0/http3.0/rpc

http1.x

  1. 冗余的header:每个请求都会带上冗余重复的Header,导致传输的体积很大
  2. http是无状态的协议,每个请求没有做特殊的标识:无法通过一个TCP链接并发的发送多个请求,只能等上一个请求的rsp返回了,才能发送下一个请求。(只能串行的发送)
    1. 因为http1.x是基于”文本“的协议,请求的内容打包在header/body中,内容通过CRLF来分割,同一个TCP链接中,无法区分req/rsp是属于哪个请求
    2. 于是http1.x提出了pipeline:允许请求方一口气的发送多个请求,但是有一个严重的弊端,需要对应的rsp按照req的顺序严格排列(因为每个请求没有唯一的标识,所以不按照顺序排列就无法区分rsp是属于哪个req)。==> 若前面的req迟迟不来,后面的请求都会要等待
      • Chrome浏览器,一个域名,只能有6个TCP链接在同时工作

http2.0

相较于http1.0的改进点

  1. header压缩
    1. 静态字典:常见的头部名称,如,get/post/cookie等
    2. 动态字典:比如一个req过来,会将字段保存在动态字典中,再一个req,若发现相同的字段,无需传递,只需要使用动态字典中的标识
  2. 流/帧 + 多路复用
    1. http2.0提出了流的概念,每个请求对应一个流,每个流都有唯一的ID,用来区分不同的req/rsp
    2. 基于流的概念,又提出了帧:一个请求的数据被分成多个帧,方便进行数据传输。每个帧都属于某一个流ID
    3. 多路复用:在一个TCP链接上,可以同时发起无数个请求,并且响应可以同时返回
  3. 请求划分优先级
    1. 多路复用带来的一个问题是,在共享连接的基础上会存在一些关键请求被阻塞,SPDY 允许给每个请求设置优先级,这样重要的请求就会优先得到响应
  4. 服务端推送
    1. 在HTTP1.x中,访问一个页面,浏览器首先获取HTML资源,然后在解析页面时增量地获取其他资源,服务器必须等待浏览器发出请求后才下发页面内资源。而服务器实际上是知道页面内资源有哪些的,如果服务器能够在浏览器显式请求资源之前就将资源推送到浏览器,页面加载速度将会大大提示,这也是本篇的主旨。
    2. 简单来讲,就是当用户的浏览器和服务器在建立链接后,服务器主动将一些资源推送给浏览器并缓存起来,这样当浏览器接下来请求这些资源时就直接从缓存中读取,不会在从服务器上拉了,提升了速率

http2.0存在的问题:http2.0只是通过多路复用技术解决了http层面上的队首阻塞,但是tcp层面的毫无办法TCP 的队头阻塞并没有彻底解决。TCP 为了保证可靠传输,有一个“超时重传”机制,丢失的包必须等待重传确认

TCP队头阻塞
? ? ? ? 我们都知道,TCP是一种可靠传输,这个可靠就是体现在它能够“按序到达”,然后再被上层接收,这里的按序到达指的是最终顺序是按序排列的,也就是说每当有一个或几个Packet丢失的时候,会等待它到达后合并,然后再向上交付。

? ? ? ?因此,很容易可以理解,当一个流的第一个数据包丢失了,那么即使后面的数据包都到达了,后面的这些数据包也不能被处理,而是要等第一个数据包到了之后才能被上层接收处理,那么这个时候不止是第一个数据包需要额外等待一个或多个RTT,后面的第二个Packet、第三个Packet......都需要同样多等待那么多时间才能处理,但实际上他们是按时到达了的,这也就是所谓的TCP队头阻塞

http3.0

http3.0彻底弃用了TCP协议,改用可靠的UDP协议(QUIC)

RPC和http有什么区别

  1. RPC是方法,http是传输协议。其实两者不是一个类型,没有什么可比性
  2. 传输协议
    1. RPC:tcp协议、http协议
    2. http:http协议
  3. 传输效率
    1. RPC ①如果使用自定义的TCP协议,可以让请求头的信息更少 ②使用http2.0协议,传输效率也很高
    2. http:请求头中包含很多无用的信息,比如refer,keepalivetime,last-modify等信息。在流量大的时候,每次请求多几个字节,影响效率
  4. 性能
    1. RPC:可以基于thrift或pb来实现二进制传输
    2. http:也可以使用pb,但是目前主流的浏览器大部分是使用json文本传输

protobuf压缩

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 01:01:36  更:2022-09-21 01:02:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 6:03:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码