现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障

  • 时间:
  • 浏览:0
  • 来源:5分PK10APP下载_5分PK10APP官网

《七牛云技术分享:使用QUIC协议实现实时视频直播0卡顿!》

第两个问提,连接建立耗时的问提,这里主要的优化思路是复用连接,不不每次请求都重新建立连接,咋样更有速度单位地复用连接,都时要说是网络请求速度单位优化里最主要的点了,因此这里的优化仍在演进过程中,值得了解下。

1)提升连接成功率:

▼【keep-alive】:

复合连接,建立连接时,阶梯式并发连接,其中两根连通后一点连接都关闭。这人方案结合串行和并发的优势,提高弱网下的连接成功率,一齐又不不增加服务器资源消耗,见下图

2)与服务端建立连接,包括 tcp 三次握手,安全协议同步流程;

PS:关于理解TCP的3次握手原理,以下文章因为对您会有帮助

HTTP2 的多路复用看起来是完美的补救方案,但还有个问提,好多好多 队头阻塞,这是受限于 TCP 协议,TCP 协议为了保证数据的可靠性,若传输过程中两个 TCP 包丢失,会等待英文这人包重传后,才会补救后续的包。HTTP2的多路复用让所有请求前会同两根连接进行,里边有两个 包丢失,就会阻塞等待英文重传,所有请求也就被阻塞了。

3)压缩数据,减小传输的数据大小。

实际上现在无论是客户端还是浏览器都默认开启了keep-alive,对同个域名不不再有每发两个 请求就进行一次建连的情形,纯短连接因为不处于了。但有个问提,好多好多 这人 keep-alive 的连接一次还可不后能 了发送接收两个 请求,在上两个 请求补救完成过后,无法接受新的请求。若一齐发起多个请求,前会五种 情形:

下面这几篇是有关移动端通信安全的基础文章,比里边那篇要容易理解:

3)加密算法保持灵活可更新,补救定死算法被破解后无法更换,禁用已被破解的算法。

《来自阿里OpenIM:打造安全可靠即时通讯服务的技术实践分享》

针对弱网的那些细致优化未成为标准,系统网络库还可不后能 了内置,不过前两个 客户端优化微信的开源网络库 mars 有实现,若有时要都时要使用(详见《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》)。

对基于浏览器的前端开发来说,网络这块能做的事情很少,但对于原生的移动端应用来说(本文中说的原生主要指iOS和Android应用),整个网络请求过程是自由控制的,都时要做好多好多 事情。好多好多 大型 APP 都针对这两个 问提做了好多好多 网络层的优化,一点新的网络层协议像 HTTP2 / QUIC 也是在那些方面进行了不少优化。在此请跟着我的文字,边学习边挂接,总结一下当今主流的移动端网络短连接常见优化手段,希望能给您带来启发。

1)缓存时间设置得长,域名更新不及时,设置得短,少量 DNS 解析请求影响请求速度单位;

3)调优TCP参数,使用TCP优化算法:

PS:关于新一代QUIC协议的更多文章请见

里边这人 DNS 解析机制有十好多个 缺点:

3)安全保障:咋样补救被第三方窃听/篡改或冒充,补救运营商劫持,一齐又不影响性能?

1)使用加密算法组合对传输数据加密,补救被窃听和篡改;

1)直接使用 IP 地址,去除 DNS 解析步骤;

(本文同步发布于:http://www.52im.net/thread-1413-1-1.html)

2) 降低加密成本。

解释下多路复用这人词,多路都时要认为是多个连接,多个操作,复用好多好多 字面上的意思,复用两根连接或两个 程序。HTTP2这里是连接的多路复用,网络相关的还有两个 I/O的多路复用(select/epoll),指通过事件驱动的法律辦法 让多个网络请求返回的数据在同两根程序里完成读写。

1)保证安全;

2)弱网适应:移动端网络环境随时变化,突然跳出网络连接很不稳定可用性差的情形,咋样在这人情形下最大限度最快地成功请求?

若并行发送那些请求,还可不后能 了首次每个请求前会进行tcp三次握手建立新的连接,确实第二次都时要复用连接池里这堆连接,但若连接池里保持的连接很多,对服务端资源产生较大浪费,若限制了保持的连接数,并行请求里超出的连接仍每累积建连。

《微信新一代通信安全补救方案:基于TLS1.3的MMTLS详解》

2)缓存安全协议握手后的密钥等数据,加快第二次建连的速度单位;

2)涉及移动端网络形态学 的文章:

对总读写超时(从请求到响应的超时)、首包超时、包包超时(两个 数据段之间的超时)时间制定不同的计算方案,加快对超时的判断,减少等待英文时间,尽早重试。这里的超时时间还都时要根据网络情形动态设定;

1)关于网络通信的基础文章:

4)一次请求还可不后能 了解析两个 域名。

《理论经典:TCP协议的3次握手与4次挥手过程详解》

《谈谈移动端 IM 开发中登录请求的优化》

若串行发送请求,都时要突然复用两个 连接,但速度单位很快,每个请求前会等待英文上个请求完成再进行发送。

3)加快握手过程:2RTT-> 0RTT。加快握手的思路,好多好多 好多好多 客户端和服务端时要协商使用那些算法后才能加密发送数据,变成通过内置的公钥和默认的算法,在握手的一齐就把数据发出去,也好多好多 不时要等待英文握手就过后过后刚开始发送数据,达到0RTT。

《移动端IM开发时要面对的技术问提(含通信协议选泽)》

《即时通讯安全篇(六):非对称加密技术的原理与应用实践》

移动端网络优化这人话题非常庞大,本文好多好多 在学习过程中从优化思路上列举了目前业界常见的优化点,还有好多好多 细节好多好多 更深入的优化没涉及到,网络层实践开发经验严重不足,若有错误欢迎指出。

2)通过签名等法律辦法 ,保证 HTTPDNS 请求的安全,补救被劫持;

目前基本主流都支持 TLS1.2,iOS 网络库默认使用 TLS1.2,Android4.4 以上支持 1.2。TLS1.3 iOS 还处于测试阶段,Android 未查到消息。对于普通 APP,倘若正确配置证书,TLS1.2 因为能保证传输安全,好多好多 在建连速度单位上会有所损耗,有一点大型 APP 像微信就自行实现了 TLS1.3 的累积协议,早一步全平台支持(微信团队专门分享过关于TLS1.3的实践文章,详见《微信新一代通信安全补救方案:基于TLS1.3的MMTLS详解》)。

2)域名劫持,容易被里边人攻击,或被运营商劫持,把域名解析到第三方 IP 地址,据统计劫持率会达到7%;

移动客户端来说,iOS 9 以上 NSURLSession 已原生支持 HTTP2,倘若服务端也支持就都时要直接使用,Android 的开源网络库 okhttp3以上版本也支持了 HTTP2,国内一点大型 APP 会自建网络层,支持 HTTP2 的多路复用,补救系统的限制以及根据自身业务时要增加一点形态学 ,这人微信的开源网络库 mars(详见《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》),做到两根长连接补救微信上的大累积请求,多路复用的形态学 上基本跟 HTTP2 一致。

压缩算法多种多样,也在不断演进,最新出的 Brotli 和Z-standard实现了更高的压缩率,Z-standard 都时要根据业务数据样本训练出适合的字典,进一步提高压缩率,目前压缩率表现最好的算法。

为了补救那些问提,前会了 HTTPDNS,原理很简单,好多好多 我本人做域名解析的工作,通过 HTTP 请求后台去拿到域名对应的 IP 地址,直接补救上述所有问提。

那些点涉及的细节非常多,对 TLS 的介绍有一篇雄文,说得很删改,在此推荐:《TLS协议分析 与 现代加密通信协议设计》(JackJiang注:这篇文章长的惊人,希望你能耐心把它想看 ^_^)。

▼【多路复用】:

《TCP/IP详解 - 第18章·TCP连接的建立与终止》

本文挂接的有关内容,对于移动端即时通讯IM应用来说,同样具有启发意义,因为现今主流的移动端IM数据通信总结下来无外乎好多好多 长连接+短连接的法律辦法 ,则短连接的优化在一点场景下对于移动端IM来说因为显示的更为特出。在这方面,微信做的比较彻底和极端,几乎再造了一套针对移动端IM的网络层框架(详见:《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》)。

《技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解》

正常两根网络请求时要经过的流程是好多好多 :

这里有明显的两个 优化点:

▼【TCP队头阻塞】:

对于这人问提不改变 TCP 协议就无法优化,但 TCP 协议依赖操作系统实现以及累积硬件的定制,改进缓慢,于是 GOOGLE 提出 QUIC 协议(详见《技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解》),大约在 UDP 协议之上再定义一套可靠传输协议,补救 TCP 的一点严重不足,包括队头阻塞。具体补救原理网上资料较多,都时要看看。

《简述移动端IM开发的那些坑:挂接、通信协议和客户端》

其余细节就很多说了,HTTPDNS 优点还可不后能 了多,几乎成为中大型 APP 的标配。至此补救了第两个 问提 — DNS 解析耗时的问提,顺便把一累积安全问提 — DNS 劫持也补救了。

《通俗易懂-深入理解TCP协议(上):理论基础》

2)认证对方身份,补救被第三方冒充;

因为您对网络通信知识了解甚少,建议阅读《网络编程懒人入门系列文章》,更高深的网络通信文章都时要阅读《不为人知的网络编程系列文章》。

HTTP 协议里有个 keep-alive,HTTP1.1默认开启,一定程度上缓解了每次请求前会进行TCP三次握手建立连接的耗时。原理是请求完成后不立即释放连接,好多好多 放上连接池中,若这时有好多好多 请求要发出,请求的域名和端口是一样的,就直接追到连接池中的连接进行发送和接收数据,少了建立连接的耗时。

《让互联网很快:新一代QUIC协议在腾讯的技术实践分享》

标准协议 TLS 保证了网络传输的安全,前身是 SSL,不断在演进,目前最新是 TLS1.3。常见的 HTTPS 好多好多 HTTP 协议去掉 TLS 安全协议。

(本文同步发布于:http://www.52im.net/thread-1413-1-1.html)

3)DNS 解析由我本人控制,都时要确保根据用户所在地返回就近的 IP 地址,或根据客户端测速结果使用速度单位最快的 IP;

众所周之,通常朋友开发两个 移动端应用,会直接调用系统提供的网络请求接口去服务端请求数据,再针对返回的数据进行一点补救,因为使用iOS中的开源AFNetworking/OKHttp好多好多 的网络库(Android中都时要用HttpURLConnection因为开源的okhttp库),管理好请求程序和队列,再自动做一点数据解析,就过后过后刚开始了。

1)域名解析与请求分离,所有请求都直接用IP地址,不不 DNS 解析,APP 定时请求 HTTPDNS 服务器更新IP地址即可;

但对于追求用户体验的应用来说,前会针对移动网络的形态学 做进一步优化,包括:

第两个 问提,传输数据大小的问提。数据对请求速度单位的影响分两方面,一是压缩率,二是解压序列化反序列化的速度单位。目前最流行的五种 数据格式是 json 和 protobuf,json 是字符串,protobuf 是二进制,即使用各种压缩算法压缩后,protobuf 仍会比 json 小,数据量上 protobuf 有优势,序列化速度单位 protobuf 前会一点优势,这两者的对比就不细说了。(关于protobuf的原理,详见《Protobuf通信协议详解:代码演示、删改原理介绍等》、《全方位评测:Protobuf性能到底有还可不后能 了比JSON快5倍?》、《强列建议将Protobuf作为你的即时通讯应用数据传输格式》)

逐条来看能做那些。

通过 HTTPDNS,连接多路复用,更好的数据压缩算法,都时要把网络请求的速度单位优化到较不错的程度了,接下来再看看弱网和安全上都时要做的事情。

关于移动端网络中DNS的问提,《谈谈移动端 IM 开发中登录请求的优化》一文中前会提到,仅供参考。

《腾讯原创分享(一):咋样大幅提升移动网络下手机QQ的图片速度单位单位和成功率》

手机无线网络环境不稳定,针对弱网的优化,微信有较多实践和分享,包括:

降低加密成本上:

《传输层安全协议SSL/TLS的Java平台实现简介和Demo演示》

2)制定最大约的超时时间:

《通俗易懂:一篇掌握即时通讯的消息传输安全原理》

3)DNS 解析过程不受控制,无法保证解析到最快的IP;

DNS 删改的解析流程很长,会先从本地系统缓存取,若还可不后能 了就到最近的 DNS 服务器取,若还可不后能 了再到主域名服务器取,每一层前会缓存,但为了域名解析的实时性,每一层缓存前会过期时间。

《即时通讯安全篇(三):常用加解密算法与通讯安全讲解》

HTTP1.1的协议里,在两个 连接里传送数据前会串行顺序传送的,时要等上两个 请求删改补救过后,下两个 请求才能进行补救,因为那些请求期间这条连接并前会满速度单位传输的,即使是HTTP1.1的pipelining都时要一齐发送多个request,但response仍是按请求的顺序串行返回,倘若其中两个 请求的response稍微大一点或处于错误,就会阻塞住里边的请求。

1)用对称加密算法加密传输数据,补救非对称加密算法的性能低以及长度限制问提;

《腾讯原创分享(二):咋样大幅压缩移动网络下APP的流量消耗(下篇)》

2)无须每次请求都重新建立连接,复用连接或突然使用同两根连接(长连接);

《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》

自已实现HTTPDNS的好处总结好多好多 :

对这人问提,新一代协议 HTTP2 提出了多路复用去补救。

《腾讯原创分享(二):咋样大幅压缩移动网络下APP的流量消耗(上篇)》

除了传输的 body 数据,每个请求 HTTP 协议头的数据也是不可忽视,HTTP2 里对 HTTP 协议头也进行了压缩,HTTP 头大多是重复数据,固定的字段如 method 都时要用静态字典,不固定但多个请求重复的字段这人 cookie 用动态字典,都时要达到非常高的压缩率,这里有删改介绍《HTTP/2 头部压缩技术介绍》(该作者针对HTTP2有好多好多 研究,更多HTTP2文章可见作者的HTTP2技术专题,方便进行深入学习)。

1)DNS 解析,请求DNS服务器,获取域名对应的 IP 地址;

网络上有张图都时要较形象地表现这人过程:

4)一次请求都时要解析多个域名。

在保证安全上:

《理论联系实际:Wireshark抓包分析TCP 3次握手、4次挥手过程》

HTTP2 的多路复用机制一样是复用连接,但它复用的这条连接支持一齐补救多条请求,所有请求都都时要并发在这条连接上进行,也就补救了里边说的并发请求时要建立多条连接带来的问提。

HTTP2 这里的多路复用协议补救了那些问提,它把在连接里传输的数据都封装成两个 个stream,每个stream前会标识,stream的发送和接收都时也不 乱序的,不依赖顺序,也就不不有阻塞的问提,接收端都时要根据stream的标识去区分属于哪个请求,再进行数据拼接,得到最终数据。

《微信对网络影响的技术试验及分析(论文全文)》

对服务端的TCP协议参数进行调优,以及开启各种优化算法,使得适合业务形态学 和移动端网络环境,包括RTO初始值,混合慢启动,TLP,F-RTO等。

安全协议概括性地说补救两个 问提:

本文原始内容来自JSPatch开源工程作者bang的技术分享,他的博客是:http://blog.cnbang.net/about/,本次内容有优化和完善,感谢原作者的无私分享。

3)连接建立完成,发送和接收数据,解码数据。

QUIC 处于起步阶段,少有客户端接入,QUIC 协议相对于 HTTP2 最大的优势是对TCP队头阻塞的补救,一点的像安全握手 0RTT / 证书压缩等优化 TLS1.3 已跟进,都时要用于 HTTP2,并前会独有形态学 。TCP 队头阻塞在 HTTP2 上对性能的影响有多大,在速度单位上 QUIC 能带来多大提升待研究(关于这人点都时要看看腾讯的QUIC技术实践《让互联网很快:新一代QUIC协议在腾讯的技术实践分享》)。

1)速度单位优化:网络请求的速度单位咋样能进一步提升?

猜你喜欢

2018上半年有事业单位招聘吗?有的话是什么时候?

扫描二维码下载可选中另三个 多或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问提。换一换你对你这些 回答的评价是?中公教育是一家全国性综合职业教育企

2020-03-22

架构之路:从管理者的角度看问题

只能 管理的本质是那些?那些才是你这个有效的管理?管理的精髓是那些?……你说歌词 你这个 制度好!对你当然好了,但manager心里苦啊。虽然任何有三个小制度就有利弊参半

2020-03-22

五个问题的简短回复【调试、求职疑虑、编程能力提高、做题】

【两根评论】(有读者按《CodeBlocks调试功能快捷教程》走,发现走不下去。核实,意识到可能性是Code::Blocks中的一还还有一个Bug。)初学C++,我敲教材上复杂

2020-03-22

微信小程序正式上线 下一波红利来临?

在张小龙看来,移动互联网的下一站是“唾手可得”。6.小系统线程切换:小系统线程支持挂起请况,即多窗口概念,用户可不并能把小系统线程先挂起,而且做别的事情,在需用你这名小系统线程

2020-03-22

游客vqwytl6gp2ayy的主页

flink运营若有阿里后边件(Aliware)官方账号周晓,阿里云数据库运营负责人文章:11丨粉丝:27626丨话题:2目前在阿里巴巴后边件技术部EDAS团队从事开发工作分布式

2020-03-21