ハイライト
Apple は、開発者が最新のネットワーク入口として URLSession または Network.framework を使用し、IPv6、HTTP/2、TLS 1.3、マルチパス TCP、暗号化 DNS、および HTTP/3 プレビューをサーバーおよびシステム構成と組み合わせて有効にして、遅延を削減し、セキュリティを向上させ、プライバシーを保護することを推奨します。
主要内容
ネットワーク パフォーマンスの問題はアプリの外側に隠れていることがよくあります。クライアントは最新の API を使用していますが、サーバーは IPv6、HTTP/2、または TLS 1.3 を有効にしていません。その結果、ユーザーは接続の確立が遅くなり、ハンドシェイクが長くなり、リクエスト キューが増えるまで待たなければなりません。
このセッションの入り口は、Apple プラットフォーム上という非常に実用的なものです。URLSessionそしてNetwork.frameworkこれらのプロトコル機能はすでに組み込まれており、通常、クライアントはネットワーク層を書き直す必要はありません。本当に完了する必要があるのは、サーバー側の構成です。 IPv6、HTTP/2、および TLS 1.3 を有効にすると、システムは接続の確立、リクエストの多重化、ヘッダー圧縮、および暗号化されたハンドシェイクの利点を享受できるようになります。
モバイル デバイスには、デスクトップではまれな、ネットワークの変化という問題もあります。通常の TCP 接続は、ユーザーが Wi-Fi から携帯ネットワークに移動するとき、または信号が不安定な環境に移動するときに中断されやすくなります。マルチパス TCP により、TCP 接続はネットワーク スイッチでも存続できるようになります。 Apple Music を有効にすると、Apple は音楽の停止が 13% 減少し、停止時間が 22% 減少することを確認しました。
iOS 14 では、ネットワーク スタックの入り口にもプライバシーが設けられています。ローカル ネットワーク アクセスには明示的なユーザー許可が必要です。 DNS over TLS および DNS over HTTPS がシステム リゾルバーに追加されます。 HTTP/3 と QUIC も実験的なプレビュー形式で提供されますURLSessionそしてサファリ。開発者は、ネットワーク機能のチェックにクライアント 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接続パラメータの直接制御が必要なシナリオに適しています。- このセッションでは、同じことを何度も強調しました。クライアントの準備ができており、対応するプロトコルをサーバー側で開く必要があります。
2. IPv6、HTTP/2、TLS 1.3 は今日チェックすべき基本です
(01:13)
IPv6 はすでに Apple デバイス接続の 26% を占めています。逐語的に比較すると、IPv6 を使用すると、接続セットアップの中央値は IPv4 より 1.4 倍高速になります。 Apple はまた、App Store の申請要件であるため、Mac インターネット共有の NAT64 サポートを備えた IPv6 専用ネットワークをテストするよう開発者に注意を促しています。
HTTP/2 の利点は、同じ接続上での複数のリクエストの多重化、接続のマージ、ヘッダー圧縮の 3 つの場所から得られます。過去 1 か月間 Safari リクエストの 79% が HTTP/2 を使用しました。URLSessionタスクの持続時間の中央値は HTTP/1.1 よりも 1.8 倍高速です。
TLS 1.3 により、ハンドシェイクの往復が削減されます。 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 テストにより、アプリ コードが IPv6 のみの環境と実際に互換性があることが検証されます。
- HTTP/2 はサーバー側のスイッチです。
URLSessionサーバーでサポートされている場合は、デフォルトでネゴシエートされます。 - TLS 1.3 はサーバー側スイッチでもあります。クライアント側の最新の API は、デフォルトでこれを使用しようとします。
3. マルチパス TCP は移動中の接続中断を解決します
(06:26)
マルチパス TCP を使用すると、デバイスがネットワークを切り替えても TCP 接続を維持できます。ユーザーが Wi-Fi 圏外に出た場合、アプリはネットワーク操作を再起動する必要はありません。
Transcript によって提供されるクライアント エントリは非常に具体的です。URLSessionConfigurationまたはNWParameters設定オンmultipathServiceType。
URLSessionConfiguration.multipathServiceType
NWParameters.multipathServiceType
キーポイント:
URLSessionConfigurationに基づいて適用されますURLSessionHTTPリクエスト。 -NWParametersに基づいて適用されますNetwork.framework繋がり。- サーバー側もマルチパス TCP をサポートする必要があります。セッションについては、multipath-tcp.org の展開手順を参照することをお勧めします。
4. ローカル ネットワークのプライバシーと暗号化 DNS により、ネットワーク アクセスがユーザーに見える動作に変わります
(08:03)
iOS 14 では、ローカル ネットワークのプライバシー保護が導入されています。マルチキャストまたはブロードキャストを使用してローカル ネットワーク リソースに直接アクセスするには、明示的なユーザー許可が必要です。また、アプリは、ローカル ネットワークにアクセスする理由をユーザーに知らせるために、Info.plist に目的の説明を提供する必要があります。
同じ段落では、安全な名前解決についても説明します。 iOS 14 と macOS Big Sur は、DNS over TLS と DNS over HTTPS をサポートします。この機能はシステム リゾルバーにあり、構成後はデバイス上のすべてのアプリがこの機能の恩恵を受けることができます。開発者も使用できますNetworkExtensionアプリはシステムレベルの暗号化された DNS 設定を提供するか、アプリ内で暗号化された解決を必要とします。
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.
キーポイント:
- ローカル ネットワークのアクセス許可により、アプリやサードパーティの SDK が LAN デバイスの存在を悪用してユーザーを見つけたりフィンガープリントしたりすることが防止されます。
- 暗号化された DNS は、ドメイン名解決コンテンツを保護し、ネットワーク上の第三者が DNS クエリを観察する機会を減らします。
- どちらのテーマにも個別のセッションがあります。
Support local network privacy in your appそしてEnable encrypted DNS。
5. HTTP/3 は次世代プロトコルへの実験的な入り口です
(10:44)
HTTP/3 は QUIC トランスポート プロトコルに基づいて構築されており、TLS 1.3 セキュリティが組み込まれており、HTTP/2 の多重化ストリームのサポートも維持されています。また、行頭ブロックも軽減されます。単一のリクエストまたは応答が失われても、他の無関係なメッセージはブロックされません。
iOS 14 および macOS Big Sur の場合URLSessionこのアプリは、HTTP/3 の実験的なプレビューを提供します。 Safari は実験的な設定で試すこともできます。 macOS Big Sur はまだ利用可能ですCFNetworkHTTP3OverrideユーザーのデフォルトはURLSessionアプリにより実験的なサポートが可能になります。
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 は、現在もセッション中の IETF によって進行中の仕様です。
- Apple は、開発者に実際のサーバー展開をテストし、発生した問題を報告することを要求しています。
- HTTP/3 の価値は、IPv6、HTTP/2、TLS 1.3 などの基本的なチェックを減らすことなく、次世代のトランスポート プロトコルを事前に検証できることにあります。
重要ポイント
-
ネットワークプロトコル身体検査パネル 機能: 現在のリクエストが IPv6、HTTP/2、TLS 1.3、または実験的な HTTP/3 のいずれに送信されたのかをアプリの内部診断ページに表示します。 実行する価値がある理由: Session は、クライアント API とサーバー構成を同時に設定する必要があることを繰り返し強調しています。健康診断ページではサーバー側で不足している項目をすぐに見つけることができます。 始め方: すべてを整理する
URLSession要求されたドメイン名について、ドメイン名ごとにサーバー機能リストを作成し、テスト結果を開発チームと運用保守チームに表示します。 -
IPv6 のみの回帰テスト プロセス 対処方法: NAT64 IPv6 のみのネットワーク テストをリリース前チェックに追加します。 実行する価値がある理由: 逐語的なドラフトでは、これが App Store の提出要件であり、IPv6 の接続セットアップの中央値は IPv4 の 1.4 倍であると明確に述べられています。 開始方法: Mac インターネット共有の NAT64 サポートを使用してテスト ネットワークを作成し、ログイン、プル リスト、リソースのダウンロード、アップロードなどの主要なリンクを実行します。
-
モバイルネットワークスイッチングのための特別な最適化 何をすべきか: 音楽、音声、ナビゲーション、インスタント メッセージングなどの長期的なタスクに対してマルチパス TCP を評価します。 実行する価値がある理由: Apple Music を有効にすると、音楽の停止が 13% 減少し、停止時間が 22% 短縮されます。 開始方法: 中断について最も恐れていることを見つけてください
URLSessionまたはNetwork.framework接続、評価multipathServiceTypeを選択し、サーバー側のマルチパス TCP の展開条件を確認します。 -
LAN デバイス検出のプライバシーの改善 対処方法: Bonjour、マルチキャスト、ブロードキャスト、およびローカル IP アクセスを統一した方法で登録し、ローカル ネットワークの使用状況の説明を補足します。 実行する価値がある理由: iOS 14 では、ローカル ネットワーク アクセスがユーザー認証プロセスに変わり、準備されていないデバイス検出機能が初日のエクスペリエンスに直接影響します。 開始方法: アプリとサードパーティ SDK のローカル ネットワーク アクセス ポイントを監査し、Info.plist に目的の説明を明確に記述してから、10110 の完全な許可プロセスを読んでください。
-
暗号化された DNS 公開戦略 やるべきこと: エンタープライズ、ホーム ネットワーク、またはプライバシーに配慮したアプリ向けの DNS over TLS / DNS over HTTPS サポートを設計します。 実行する価値がある理由: システム リゾルバーが暗号化 DNS をサポートすると、1 つの構成でデバイス上のすべてのアプリに利益をもたらすことができます。 開始方法: システムレベルのセットアップを提供したい場合は、調査してください。
NetworkExtension;アプリ内接続のみを保護する場合は、10047 のアプリレベルの暗号化 DNS の API の使用法を読み続けてください。
関連セッション
- 暗号化された DNS を有効にする - DNS over TLS、DNS over HTTPS、NetworkExtension、およびアプリレベルの暗号化解決についての詳細な説明。これは、暗号化 DNS に関するこのセクションの直接のフォローアップです。
- アプリでローカル ネットワーク プライバシーをサポートする - iOS 14 のローカル ネットワーク アクセス許可のトリガー条件、Info.plist の目的の説明、およびこのセッションのローカル ネットワーク プライバシーの段落を拡張したテスト プロセスについて説明します。
- 制限付きネットワーク向けのローカル プッシュ接続の構築 — インターネットのない制限付きネットワークでのローカル プッシュ接続について説明します。これは、Apple プラットフォーム上の LAN 通信機能を引き続き理解するのに適しています。
コメント
GitHub Issues · utterances