风暴俱乐部|带来哪些启发?,WWDC:无线网络优化实践( 四 )


?HTTP/2HTTP/2的多路复用特性使得对同一服务器的多个请求复用到单个连接上 , 不必等待前一个请求响应结束才能发送下一个请求 , 不仅节省了时间也提升了性能 。 头部压缩特性提升了带宽利用率 , 通过简化消息内容 , 从而降低消息的大小 。 根据最新统计 , 在Safari中HTTP2Web流量占比79% , HTTP/2比HTTP/1.1快1.8倍 。 如果服务端支持HTTP/2 , URLSession将默认使用HTTP/2 。
?TLS1.3TLS1.3通过减少一次握手减少了建连时间 , 通过形式化验证(FormalVerification)与减少被错误配置的可能性 , 提高了通信安全 。 从iOS13.4开始 , TLS1.3默认在URLSession和Network.framework开启 。 根据最新统计 , 在最新的iOS系统上 , 大约49%的连接使用TLS1.3 。 使用TLS1.3比使用TLS1.2建连时间快1.3倍 。 如果服务端支持TLS1.3 , URLSession将默认使用TLS1.3 。
?MultiPathTCPMultiPathTCP允许在一条TCP链路中建立多个子通道 。 当设备切换网络时 , 单个TCP连接依然可以继续使用 。 苹果的AppleMusic与Siri服务都使用了MultiPathTCP 。 AppleMusic在使用MultiPathTCP之后,音乐播放卡顿次数减少了13%,卡顿持续时间减少了22% 。 开启MultiPathTCP需要客户端和服务端都支持才能生效 , 服务端支持MultiPathTCP可参考:
其实手淘在这方面也有类似的优化尝试:多网卡:同时通过Wi-Fi与蜂窝网连接目标服务器 , 提升数据传输速度 。 其技术原理与MTCP不一样 , 但也是想在上层起到类似作用:通过多路连接 , 提升数据交换带宽 。 业界也有类似的产品 , 例如华为的LinkTurbo 。
?HTTP/3HTTP/3是下一代HTTP协议 , 它是构建在新的QUIC传输协议之上 , QUIC协议内建了对TLS1.3的支持 , 并提供了与HTTP/2一样的多路复用功能 , 并进一步减少了队头阻塞的发生 , 让单个请求或相应的丢失不影响到其他请求 。 使用QUIC的HTTP/3还具有较高的保真度信息 , 以提供改进的拥塞控制和丢包恢复 。 同时也包括内建的移动性支持 , 这样网络切换不会导致正在进行的操作失败 , 可以无缝在不同网络之间切换 。 不过HTTP/3目前还处于草案阶段 , iOS14和MacOSBigSur包括了一个对使用URLSession的HTTP/3的实验预览支持 , 这个功能可以在开发者设置中开启 。 同时Safari的HTTP/3支持也可在开发者设置中开启 。