WWDC2017 网络持续优化

苹果对于网络的优化是持续的,对于网络标准的推进是大踏步的

苹果要求部署https要follow以下四点

1.Encrytion要遵循AES-GCM ChaCha20/Poly1305

2.Hashes要遵循 SHA-2 family

3.Public keys要遵循 >  =2048-bit RSA Elliptic

4.Protocol要遵循 https TLS1.2+

Revocation要遵循 OCSP Stapling

服务端同学要尽量按照苹果的要求升级服务端的https部署

客户端同学要尽量避免ATS的exception

聊到ATS想必大家并不陌生,苹果已经让它如雷贯耳,在WWDC2017上苹果同步了它的当前标准,从http切换到https要满足TLS1.2,strong cryptography AES,SHA-2,ECDHE

ATS增加了以下豁免,AVFoundation加载,Webview请求,本地网络连接

ECN,显式的拥堵通知,苹果告知在iOS11上会在合适的tcp连接上百分百启用ECN,服务端有74%的网站都支持了ECN

IPv6,并不陌生的词汇,苹果建议使用高级的网络框架,URLSession,CFNetwork,IPv6会提升15%到30%的速度,提到IPv6的审核也是个有意思的话题,提交到Appstore上的app都要在IPv6和NAT64的环境下进行测试,被拒绝的app少之又少

苹果网络栈也进行了演化,原来tcp/IPv6和tls/http是在不同的进程空间里的,传输数据在kernel层,剩余的在app层,带来了很多上下文切换的开销,iOS11将两者都放到了同一个进程,即app层,所有协议都统一在app层,提升了系统的效率,这种改造适用于URLSession,不适用于BSD Socket

苹果更新了Network Extension,主要增加了NSHotspotConfiguration和NEDNSProxyProvider,对于NSHotspotConfiguration将更方便用于智能设备连接手机热点而不用进入设置界面,可以创建临时热点,断开后自动释放,NEDNSProxyProvider这个东西可以让我们在iOS上搞httpdns,提供系统的dns query回调,我们自己可以按照自己的意愿进行httpdns或者httpsdns的封装

个人理解苹果本次大会重磅推出的是Multipath TCP,这个功能从iOS7上就应用在siri上了,它是在tcp基础之上,无缝的在WIFI和蜂窝网路切换,生命周期都是由TCP的子流控制,事实证明在siri上提升了20%的速度,降低了5倍的错误率,MPTCP需要服务端支持,可以通过https://multipath-tcp.org来了解,客户端iOS11上URLSession中开放了这个接口,主要分为两种模式

一,handover mode,可靠的持久连接,极小的移动网络使用,只有在切换移动网络才创建tcp subflow,切换回wifi又销毁,在iOS Beta1可见

二,interactive mode,低延迟的体验,同时创建WIFI subflow和cell subflow,带来切换网络的低延迟体验,会在Beta2可见

URLSession带来的新API

苹果为了方便开发者在无网状态下发送请求,给URLSessionConfig增加了waitsForConnectivity,当设置为YES时,会在等待发送请求时回调URLSession的taskIsWaitingForConnectivity

针对BackgroundSession可以设置earliestBeginDate,但系统不会保证一定在设置的时间以后启动BackgroundSession,系统会检查CPU,电量,等一系列条件决定是否启动,并且会回调URLSession的urlSessionwillBeginDelayedRequest方法,除此之外,BackgroundSession还可以设置发送和接受的大小,分别是countOfBytesClientExpectsToSend和countOfBytesClientExpectsToReceive

苹果对于URLSession的优化是持续的,iOS11将URLSessionTask与ProgressReporting进行了绑定,实现了这个Protocol,并且能从URLSessionTask对象里获取到Progress对象,进而对进度进行详细的控制

URLSession在iOS11上支持Brotli,Content-Encoding:br,我们会在http header看到,苹果给出的数据,要比gzip的压缩比高15%,必须要在https基础之上实施

苹果内部正在做的网络优化开发,实践quic和TLS1.3,quic源于Google,苹果声称离完成还有很远的距离,TLS1.3正在草案中,苹果给出的数据百分之十的移动网络花费800ms,百分之十的WIFI网络话费500ms,而TLS1.3将改进这些体验

以上部分来源WWDC2017的三个Session,囊括了苹果对于网络优化的所有部分,本人细致学习了这三个Session,提炼出以上内容,希望对大家有帮助

你可能感兴趣的:(WWDC2017 网络持续优化)