面向云技术架构 - 痴者工良

  • 首页
  • 工良写的电子书
    • kubernetes 教程
    • 从 C# 入门 Kafka
    • 多线程和异步
    • 动态编程-反射、特性、AOP
    • 表达式树
  • 本站文章导航
  • 隐私政策
愿有人陪你颠沛流离
遇到能让你付出的事物或者人,都是一种运气。
能遇到,就该珍惜。或许你们最终没能在一起,但你会切实地感受到力量。
正因为这样,那段相遇才变得有价值,才没有辜负这世间的每一段相遇。
  1. 首页
  2. 笔记和吹水
  3. 正文

Natasha 群5月11日吹水备忘录

2020年5月11日 2303点热度 1人点赞 0条评论
内容纲要

Natasha 群5月11日吹水备忘录

HTTP/2 新特性

关于 HTTP/2

HTTP/2 并不是对 HTTP 协议的彻底重写,HTTP/2 关注的重点是性能、低延迟、降低网络和服务器资源使用等;与 HTTP 的请求方法、状态代码和语义等是相同的。

HTTP/2 由两个部分组成:

  • 超文本传输协议(version 2) -RFC7540
  • HPACK (HTTP/2 头部压缩算法) -RFC7541

HTTP/2 的主要特性体现在 HPACK 中。

可参考:https://www.jianshu.com/p/f44b930cfcac

HTTP1.x 缺点

HTTP1.x 协议出现时间较早,其协议头有很多重复的部分,或者赘余的部分。其劣势是 HTTP1.x 在 HTTP 请求中,每次请求和相应数据,都需要传递大量的数据。这样就需要消耗大量资源。

file

HTTP 请求,有 Get、Post、Put、Delete 等方法,使用字母单词表示,则需要传递多个字节,如果使用 1,2,3,4 表示上述的请求方法,则可以省下大量字节。

HPack 正是使用了此种特性,通过一系列算法去减少 HTTP 头部的传输的字节,实现数据压缩。

HPack

HPack 称为 HTTP2 头部压缩算法,定义了一种有效表示 HTTP 标头字段的压缩格式。HPACK 使用2个索引表(静态索引表和动态索引表)来把头部映射到索引值,并对不存在的头部使用 huffman 编码,并动态缓存到索引,从而达到压缩头部的效果。

动态索引表:

那么动态表就是,当一个头部没有出现过的时候,会把他插入动态表中,下次同名的值就可能会在表中查到到索引并替换掉头部。为什么我说是可能呢,因为动态表是有最大空间限制的。

静态索引表:

静态表的大小现在是固定的 61, 因此静态表就是从1到61的索引,然后动态表从新到旧,依次从62开始递增。这样就共同的组成了一个索引空间,且互不冲突。

HTTP/2 中引入了多路复用的概念,对于同一个域名的多个请求,会复用同一个连接。

详细协议定义,请参考:https://httpwg.org/specs/rfc7541.html

.NET 5新特性

Web 主机新特性

Microsoft.AspNetCore.Server.HttpSys用于专门用于 IIS 的通信库,增加了一个方法,其定义如下:

public bool AutomaticAuthentication { get; set; }

Microsoft.AspNetCore.Server.Kestrel.Core 命名空间增加了 Http3Limits 这个类型。

Kestrel 服务器定义的异常:

Microsoft.AspNetCore.Server.Kestrel.BadHttpRequestException

IIS 服务器定义的异常:

Microsoft.AspNetCore.Server.IIS.BadHttpRequestException

两者统一到:

Microsoft.AspNetCore.Http.BadHttpRequestException

HttpClient 类型返回状态码改变

HttpClient 用于 HTTP 请求,其返回结果从 OK 改成 status:200。

江湖传闻说是方便ES检索等其他操作。

还有根据 PFC 7111 规范, .csv 文件 的 HTTP 类型从 application/octet-stream 改为 text/csv。

Authentication

IAuthenticationSchemeProvider 接口增加了一个方法,其定义如下:

bool TryAddScheme(AuthenticationScheme scheme); 

当然,我们可以直接使用 AuthenticationSchemeProvider 。

新增 BaseConnectionContext 抽象类型

Microsoft.AspNetCore.Connections 命名空间增加了一个抽象类 BaseConnectionContext

群主目测这个是针对建立连接方面定义的一个抽象,其缺少 Send()、Recive() 等方法,不具备请求和接收数据的功能。

HttpProtocol 增加协议支持

file

身份认证增加了邮件支持

Microsoft.AspNetCore.Identity 命名空间中, ClaimsIdentityOptions 类型 增加了一个方法,其定义如:

public string EmailClaimType { get; set; }

UserManager<TUser> 类型公开了 GetChangeEmailTokenPurpose() 这个方法。

Ajax

增加新的头参数 X-Request-With ,其用于在服务端判断 `request 是来自 Ajax 请求(异步)还是传统请求(同步)。

file

AltSvc

AltSvc 全称是 Alternative Service,翻译是替代服务、自举服务、备选服务。

AltSvc 是 HTTP 响应头,这个协议字段的作用是:如果你现在用的链接是 HTTP2 或者更低版本,
则发送这个字段浏览器,其格式如 Alt-Svc: h3=":50781",告诉客户端,我这有 HTTP3,端口是 50781;也可以写成 h2="www.xxx.com:443",h2=":443"。
可以参考 RFC7838:
https://tools.ietf.org/html/rfc7838

.NET 5 中对操作系统的支持

Windows:

file

Linux:

file

MacOs:

file

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: natasha 吹水 备忘录
最后更新:2022年5月28日

痴者工良

高级程序员劝退师

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

文章目录
  • Natasha 群5月11日吹水备忘录
    • HTTP/2 新特性
      • 关于 HTTP/2
      • HTTP1.x 缺点
      • HPack
    • .NET 5新特性
      • Web 主机新特性
      • HttpClient 类型返回状态码改变
      • Authentication
      • 新增 BaseConnectionContext 抽象类型
      • HttpProtocol 增加协议支持
      • 身份认证增加了邮件支持
      • Ajax
      • AltSvc
      • .NET 5 中对操作系统的支持

COPYRIGHT © 2022 whuanle.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备18051778号

粤公网安备 44030902003257号