nsurlsessiondは実際には何ですか?
nsurlsessiondはmacOSに標準搭載されているシステムデーモンで、Appleによってコード署名されています。これはNSURLSessionのバックグラウンド転送エージェントであり、Appleプラットフォーム上のアプリがサーバーと通信するために使用する標準的なネットワーキングAPIです。
名前は理解しやすく分解できます。NSURLSessionはAPIで、末尾のdはUnixの慣例であるデーモン、つまりウィンドウやドックアイコンのないバックグラウンドプロセスを意味します。これはあなたではなくシステムによって起動され、作業がキューに入ると動作します。
重要なのは「バックグラウンド」という言葉です。開発者がNSURLSessionを使用すると、ダウンロードやアップロードをバックグラウンド転送としてマークでき、これによりアプリ自体が対応できない状況でも転送が継続されます。たとえば、ユーザーがアプリを終了したり、アプリが一時停止したり、クラッシュしたり、マシンが放置された場合でもです。macOSはこれを尊重し、転送をnsurlsessiondに委ね、後でアプリに通知し、必要に応じて再起動して結果を届けます。これが、App Storeのダウンロードがウィンドウを閉じた後も進行し続けたり、ポッドキャストのエピソードが到着し終わるまでアプリを再度開かなくても完了する理由です。
近くにnsurlstoragedもよく見かけるでしょう。これはURLセッションデータのストレージを扱うAppleの関連デーモンで、キャッシュされたレスポンスやクッキーなどを管理します。こちらも正常な動作で、ネットワークアクティビティは少なく、ストレージ側に仕事が集中しています。
なぜそのトラフィックは他のアプリのトラフィックなのか
これがnsurlsessiondについて理解すべき最も重要なポイントであり、多くの人が疑念を抱く理由です。nsurlsessiondに帰属するトラフィックは、実際には他のアプリに属しています。 それは共有の宅配便のようなもので、誰かが要求した荷物を運び、その荷物はそれ自体に宛てられていません。
たとえば、Photosが画像のバッチをiCloudにアップロードすると、そのバイトはnsurlsessiondを通じて送信されます。App Storeが数ギガバイトのアップデートをダウンロードするときも同様です。サードパーティのクライアントがファイルを同期したりメディアを事前キャッシュしたりする場合も、ほとんど同じです。これらすべてのトラフィックは一つのプロセスによって開かれ、一つのプロセスに帰属し、一つの名前の下に表示されます。
Activity Monitorや、ソケットを所有するプロセスだけでトラフィックを識別するツールは、それを解き明かすことはできません。これらはOSレベルでの真実を報告します:接続はnsurlsessiondに属しています。しかし、各転送の背後にあるリクエストアプリを示すことはできません。なぜなら、その関係はソケットの上の層に存在しているからです。結果として、1つの行に見えるのは、実際には複数のアプリの作業を一つのラベルで示しているに過ぎません。
したがって、nsurlsessiondのアラームの大部分は誤った帰属によるものであり、誤った動作ではありません。もしあなたが、なぜAppleのデーモンが40ギガバイトのダウンロードを必要とするのか疑問に思っているなら、それはそうではなかったということです。あなたのMacがそれを要求したのです。
これにより、デーモンが常に動作しているように見える理由も説明できます。これは自分自身の恒久的な接続を維持しているわけではありません。転送がキューに入ると起動し、作業を行い、静かにします。写真やドキュメント、メールの添付ファイルやアプリのアップデートを同期しているマシンでは、ほぼ常に何かがキューに入っています。
nsurlsessiondは安全なのか、そして自分で確認する方法
nsurlsessiondはマルウェアではありません。 これはmacOSのファーストパーティコンポーネントであり、すべての現行Macに存在し、削除、無効化、またはユーティリティによるクリーンアップの必要はありません。
疑念の背後にある合理的な注意点は、マルウェアがシステムプロセスに似た名前を採用し、プロセスリストの素早い確認で通過させようとすることです。Terminalでの2つのチェックはそれを打ち破り、これらはどんなプロセスにも役立つ知識です。
最初のチェックは場所です。pgrepコマンドと-lfフラグを使い、パターンとしてnsurlsessiondを指定して、実行中のバイナリの場所を確認します。正規のデーモンはシステムフレームワークのパス内、CFNetworkフレームワークの深い場所にあります。ダウンロードフォルダやホームディレクトリ、未知のアプリケーションバンドルからその名前を主張しているものは、Appleのデーモンではありません。
次のチェックはコード署名です。-dvと詳細フラグを付けてバイナリのパスに対してcodesignを実行します。正規のデーモンはAppleに属する認証チェーンを報告し、Software SigningとApple Code Signing Certification Authorityの名前を示します。署名されていないバイナリや、未知の開発者によって署名されたものは、懸念の理由になります。
両方のチェックに合格すれば、そのプロセスは本物であり、その動作についての驚きは、背後のアプリが作業をキューに入れていることに関する疑問です。
高いネットワーク使用量または高いCPU使用率:確認すべきこと
nsurlsessiondは常に何かのために動作しているだけなので、異常な活動は症状であり、有用な診断は上流にあります。原因の小さなセットが大多数のケースを占めています。
最も一般的なのはiCloudです。新しく有効にしたiCloud写真ライブラリ、復元したMac、または大量の新しいインポートは、ライブラリのサイズと接続速度に応じて数時間または数日にわたって持続的なトラフィックを生成します。iCloud Driveも大きなフォルダ変更後は同じように動作します。次に、App Storeが続き、大きなアプリのアップデートやシステムアップデートがバックグラウンドで段階的に行われます。三番目は、ポッドキャストクライアントなどのメディアアプリがコンテンツを事前キャッシュしている場合で、複数のエピソードを先取りしてプルしています。
安価から最も複雑なものまで順番に確認する方法です。まず、前景の候補から始めます:App Storeのアップデートビューとシステム設定を開き、アップデートがダウンロード中かどうかを確認します。その後、Photosを開き、ライブラリビューの下部にあるステータスラインを読み取ります。ここでは同期の進行状況とアイテム数が報告されており、FinderのiCloud Driveで保留中のアイテムを確認します。次に、最近インストールまたは再設定されたものを考慮します。新たに追加された同期クライアントは頻繁にトリガーとなるためです。最後に、それを動かし続けさせてください。終了が定義された転送は完了します。
高いCPU使用率も同じ原因に追随します。持続的な転送は継続的な作業を意味し、アイドル状態の待機ではありません。持続的な高CPU使用率が意味のあるスループットなしに続く場合は稀であり、多くの場合再起動で解消します。これにより、デーモンとそのキューがリセットされ、長期的な影響はありません。
避けるべきなのはブロックです。ファイアウォールを使ってnsurlsessiondのネットワークアクセスを拒否できますが、その結果、システム全体のバックグラウンド転送が停止し、通常エラーもなく動作しなくなります。ダウンロードは完了せず、iCloud関連の同期は停止し、転送が完了したと期待しているアプリはそれを見つけられません。システム全体にわたるこの失敗は黙って行われるため、良い選択ではありません。正しい操作は、作業をキューに入れるアプリ側で行うことです。
転送をキューに入れたアプリを見つける
それは内蔵ツールでは答えられない質問です:実際にこれらすべてを要求したアプリケーションはどれか。Activity Monitorはプロセスの境界で止まるため、その行はnsurlsessiondと表示され、そこから先は追跡できません。
より鋭いアプローチは、プロセス名に頼るのをやめて、代わりに宛先を確認することです。接続はどこかに向かっており、そのエンドポイントは、プロセス名が示さなくても転送の背後にあるサービスを特定します。Appleのコンテンツ配信やiCloudのエンドポイントは、サードパーティの同期サービスやメディアCDNとは明確に異なり、ドメインを見ることで、どのサービスに属しているかを推測せずに識別できます。
これがNetMuteの核となる部分です。リアルタイムのアプリごとおよびプロセスごとのトラフィックを表示し、ドメインレベルのロギングと組み合わせて、どのエンドポイントに転送が到達しているかを確認できます。これにより、匿名の行が明確な画像に変わります:iCloudにどれだけ送られているか、先週インストールしたアプリにどれだけ送られているか。
ソースがわかれば、NetMuteはそれに応じた対処方法を提供します。責任のあるアプリに対してネットワークアクセスをワンクリックでブロックしたり、次の1時間だけ静かにしたい場合に一時的なルールを設定したりできます。アプリごとのデータ制限は、閾値に達すると自動的にブロックします。これは、シーズンのコンテンツを事前キャッシュする動作をするアプリに適しています。ネットワークプロファイルは、状況に応じてルールを変更できるため、メーター付きホットスポットに接続したMacBookは、家庭で必要のない制限を課すことができます。
これらはすべて、nsurlsessiondに触れる必要はありません。デーモンはそのまま動き続け、バックグラウンドのダウンロードやiCloudの転送は完了し続け、トラフィックを生成しているアプリだけが制約を受けます。