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 平台上的 URLSession 和 Network.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 定义为 URLSession 和 Network.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 起对 URLSession 和 Network.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 给出的客户端入口很具体:在 URLSessionConfiguration 或 NWParameters 上设置 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 app和Enable 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 这些基础检查。
核心启发
-
网络协议体检面板 做什么:在 App 的内部诊断页显示当前请求是否走到 IPv6、HTTP/2、TLS 1.3 或实验 HTTP/3。 为什么值得做:session 反复强调客户端 API 和服务器配置必须同时到位,体检页可以快速发现服务器侧漏项。 怎么开始:先梳理所有
URLSession请求的域名,给每个域名建立服务器能力清单,再把测试结果展示给开发和运维团队。 -
IPv6-only 回归测试流程 做什么:把 NAT64 IPv6-only 网络测试加入发布前检查。 为什么值得做:逐字稿明确说这是 App Store submission requirement,且 IPv6 median connection setup 比 IPv4 快 1.4 倍。 怎么开始:用 Mac Internet Sharing 的 NAT64 支持创建测试网络,跑登录、拉取列表、下载资源和上传等主链路。
-
移动网络切换专项优化 做什么:为音乐、语音、导航、即时通信这类长时间任务评估 Multipath TCP。 为什么值得做:Apple Music 启用后,Music stalls 减少 13%,stall duration 减少 22%。 怎么开始:找到最怕中断的
URLSession或Network.framework连接,评估multipathServiceType,再确认服务端 Multipath TCP 部署条件。 -
局域网设备发现隐私改造 做什么:把 Bonjour、multicast、broadcast 和本地 IP 访问统一登记,补充本地网络用途说明。 为什么值得做:iOS 14 会把本地网络访问变成用户授权流程,未准备好的设备发现功能会直接影响首日体验。 怎么开始:审计 App 与第三方 SDK 的本地网络访问点,写清楚 Info.plist 中的用途说明,再跳转阅读 10110 的完整权限流程。
-
加密 DNS 发布策略 做什么:为企业、家庭网络或隐私敏感 App 设计 DNS over TLS / DNS over HTTPS 支持方案。 为什么值得做:系统 resolver 支持加密 DNS 后,一次配置可以让设备上的所有 App 受益。 怎么开始:如果要交付系统级设置,调研
NetworkExtension;如果只保护 App 内连接,继续阅读 10047 中 App 级加密 DNS 的 API 用法。
关联 Session
- Enable encrypted DNS — 深入讲 DNS over TLS、DNS over HTTPS、NetworkExtension 和 App 级加密解析,是本场加密 DNS 段落的直接后续。
- Support local network privacy in your app — 解释 iOS 14 本地网络权限的触发条件、Info.plist 用途说明和测试流程,是本场本地网络隐私段落的展开。
- Build local push connectivity for restricted networks — 讨论无互联网受限网络里的本地推送连接,适合继续理解 Apple 平台上的局域网通信能力。
评论
GitHub Issues · utterances