WWDC Quick Look 💓 By SwiftGGTeam
Boost performance and security with modern networking

Boost performance and security with modern networking

观看原视频

Highlight

Apple 建议开发者以 URLSession 或 Network.framework 作为现代网络入口,并配合服务器与系统配置启用 IPv6、HTTP/2、TLS 1.3、Multipath TCP、加密 DNS 和 HTTP/3 预览来降低延迟、提升安全性和保护隐私。

核心内容

网络性能问题经常藏在 App 之外。客户端已经用了现代 API,服务器却没有启用 IPv6、HTTP/2 或 TLS 1.3,结果用户仍然要等更慢的连接建立、更长的握手和更多的请求排队。

这场 session 的切入点很务实:Apple 平台上的 URLSessionNetwork.framework 已经内建这些协议能力,客户端通常不用重写网络层。真正要补齐的是服务器侧配置。启用 IPv6、HTTP/2 和 TLS 1.3 后,系统才能在连接建立、请求复用、头部压缩和加密握手上拿到收益。

移动设备还有一个桌面端少见的问题:网络会变。用户从 Wi-Fi 走到蜂窝网络,或者在信号不稳的环境里移动时,普通 TCP 连接容易中断。Multipath TCP 让一个 TCP 连接在网络切换时继续存在,Apple Music 启用后,Apple 观察到 Music stalls 减少 13%,stall duration 减少 22%。

iOS 14 还把隐私放到网络栈的入口处。本地网络访问会要求明确的用户许可;DNS over TLS 和 DNS over HTTPS 被加入系统解析器;HTTP/3 与 QUIC 也以实验预览形式进入 URLSession 和 Safari。开发者需要把客户端 API、服务器协议和用户隐私提示一起纳入网络能力检查。

详细内容

1. 客户端 API 是入口,服务器配置决定收益

00:54

Apple 明确把现代网络 API 定义为 URLSessionNetwork.framework。使用这些 API 后,客户端可以自动获得许多协议支持;如果服务器没有开启对应能力,系统也无法替开发者完成协商。

Client API:
- URLSession
- Network.framework

Server capabilities to verify:
- IPv6
- HTTP/2
- TLS 1.3
- Multipath TCP
- encrypted DNS support where applicable

关键点:

  • URLSession 覆盖标准 HTTP 请求,是 HTTP/2、TLS 1.3 和 HTTP/3 预览的主要入口。
  • Network.framework 适合需要直接控制连接参数的场景。
  • 这场 session 多次强调同一件事:客户端已经准备好,服务器侧也要打开对应协议。

2. IPv6、HTTP/2 和 TLS 1.3 是今天就该检查的基础项

01:13

IPv6 在 Apple 设备连接中已经占到 26%。逐字稿给出的对比是,使用 IPv6 时,median connection setup 比 IPv4 快 1.4 倍。Apple 还提醒开发者用 Mac Internet Sharing 的 NAT64 支持测试 IPv6-only 网络,因为这是 App Store 提交要求。

HTTP/2 的收益来自三个位置:同一连接上复用多个请求、连接合并、header compression。Safari 过去一个月 79% 的请求使用 HTTP/2,使用 HTTP/2 的 URLSession task median duration 比 HTTP/1.1 快 1.8 倍。

TLS 1.3 则减少了一次握手 round trip。它从 iOS 13.4 起对 URLSessionNetwork.framework 默认启用;在最新 iOS 设备上,约 49% 的连接使用 TLS 1.3,建立速度比 TLS 1.2 快 1.3 倍。

Protocol check:
1. Test the app on IPv6-only NAT64 networks.
2. Enable HTTP/2 on servers used by URLSession clients.
3. Enable TLS 1.3 on servers used by URLSession and Network.framework clients.

关键点:

  • NAT64 测试验证 App 代码是否真正兼容 IPv6-only 环境。
  • HTTP/2 是服务器侧开关;URLSession 会在服务器支持时默认协商。
  • TLS 1.3 也是服务器侧开关;客户端现代 API 会默认尝试使用。

3. Multipath TCP 解决移动中的连接中断

06:26

Multipath TCP 允许一个 TCP 连接在设备切换网络时继续存在。用户走出 Wi-Fi 覆盖范围时,App 不必重新开始一次网络操作。

Transcript 给出的客户端入口很具体:在 URLSessionConfigurationNWParameters 上设置 multipathServiceType

URLSessionConfiguration.multipathServiceType
NWParameters.multipathServiceType

关键点:

  • URLSessionConfiguration 适用于基于 URLSession 的 HTTP 请求。
  • NWParameters 适用于基于 Network.framework 的连接。
  • 服务器侧还需要支持 Multipath TCP;session 建议参考 multipath-tcp.org 的部署说明。

4. 本地网络隐私和加密 DNS 把网络访问变成用户可见的行为

08:03

iOS 14 引入本地网络隐私保护。直接访问本地网络资源、使用 multicast 或 broadcast,都会要求明确的用户许可。App 还需要在 Info.plist 里提供用途说明,让用户知道为什么要访问本地网络。

同一段还介绍了安全域名解析。iOS 14 和 macOS Big Sur 支持 DNS over TLS 与 DNS over HTTPS。这个能力位于系统 resolver,配置后设备上的所有 App 都能受益。开发者也可以用 NetworkExtension App 交付系统级加密 DNS 设置,或者在 App 中要求加密解析。

Privacy work items:
- Add a local network usage reason string when the app accesses local resources.
- Use NetworkExtension when delivering system-wide encrypted DNS settings.
- Ask the DNS provider to offer DNS-over-HTTPS when it is not available.

关键点:

  • 本地网络权限防止 App 或第三方 SDK 利用局域网设备存在性定位或 fingerprint 用户。
  • 加密 DNS 保护域名解析内容,减少网络第三方观察 DNS 查询的机会。
  • 这两个主题都有单独 session:Support local network privacy in your appEnable encrypted DNS

5. HTTP/3 是下一代协议的实验入口

10:44

HTTP/3 构建在 QUIC transport protocol 上,内建 TLS 1.3 安全性,并保留 HTTP/2 的 multiplexed stream 支持。它还降低 head-of-line blocking:单个 request 或 response 的丢包不会阻塞其他无关消息。

iOS 14 和 macOS Big Sur 为使用 URLSession 的 App 提供 HTTP/3 实验预览。Safari 也能通过 experimental settings 试用。macOS Big Sur 还可以用 CFNetworkHTTP3Override user default 为 URLSession App 启用实验支持。

HTTP/3 preview:
- iOS 14: enable experimental HTTP/3 for URLSession in Developer settings.
- macOS Big Sur: set CFNetworkHTTP3Override for URLSession apps.
- Safari: enable HTTP/3 from Experimental Features.

关键点:

  • HTTP/3 在 session 中仍是 IETF 进行中的规范。
  • Apple 要求开发者测试真实服务器部署,并提交遇到的问题。
  • HTTP/3 的价值在于提前验证下一代传输协议,不会减少 IPv6、HTTP/2、TLS 1.3 这些基础检查。

核心启发

  1. 网络协议体检面板 做什么:在 App 的内部诊断页显示当前请求是否走到 IPv6、HTTP/2、TLS 1.3 或实验 HTTP/3。 为什么值得做:session 反复强调客户端 API 和服务器配置必须同时到位,体检页可以快速发现服务器侧漏项。 怎么开始:先梳理所有 URLSession 请求的域名,给每个域名建立服务器能力清单,再把测试结果展示给开发和运维团队。

  2. IPv6-only 回归测试流程 做什么:把 NAT64 IPv6-only 网络测试加入发布前检查。 为什么值得做:逐字稿明确说这是 App Store submission requirement,且 IPv6 median connection setup 比 IPv4 快 1.4 倍。 怎么开始:用 Mac Internet Sharing 的 NAT64 支持创建测试网络,跑登录、拉取列表、下载资源和上传等主链路。

  3. 移动网络切换专项优化 做什么:为音乐、语音、导航、即时通信这类长时间任务评估 Multipath TCP。 为什么值得做:Apple Music 启用后,Music stalls 减少 13%,stall duration 减少 22%。 怎么开始:找到最怕中断的 URLSessionNetwork.framework 连接,评估 multipathServiceType,再确认服务端 Multipath TCP 部署条件。

  4. 局域网设备发现隐私改造 做什么:把 Bonjour、multicast、broadcast 和本地 IP 访问统一登记,补充本地网络用途说明。 为什么值得做:iOS 14 会把本地网络访问变成用户授权流程,未准备好的设备发现功能会直接影响首日体验。 怎么开始:审计 App 与第三方 SDK 的本地网络访问点,写清楚 Info.plist 中的用途说明,再跳转阅读 10110 的完整权限流程。

  5. 加密 DNS 发布策略 做什么:为企业、家庭网络或隐私敏感 App 设计 DNS over TLS / DNS over HTTPS 支持方案。 为什么值得做:系统 resolver 支持加密 DNS 后,一次配置可以让设备上的所有 App 受益。 怎么开始:如果要交付系统级设置,调研 NetworkExtension;如果只保护 App 内连接,继续阅读 10047 中 App 级加密 DNS 的 API 用法。

关联 Session

评论

GitHub Issues · utterances