何も実行されていないシステム(少なくとも私が知っていない)では、着信および発信トラフィックを受信すると、次の出力が印刷されます。
192.168.1.1 => all-systems.mcast.net 0b 26b 19b
<= 0b 0b 0b
192.168.1.2 => 224.0.0.251 128b 26b 19b
<= 0b 0b 0b
(26bや128bだけが表示されるのではなく、実際のメッセージが送信されるかのように大きな数字にジャンプすることもあります。)
どういう意味ですか?
192.168.1.1はゲートウェイ、私のルーターです
192.168.1.2は私、私の機械です
しかし、all-systems.mcast.netは誰ですか? 224.0.0.251は誰ですか?さらに重要なのは、パケットが送信されるのはなぜですか?
これを見つけました: https://davidsimpson.me/2015/11/16/why-is-my-machine-contacting-all-systems-mcast-net/ ただし、DLNAサーバーが実行されていません。だから誰に放送する必要がありますか?
最後の(重要な)質問は次のとおりです。 192.168.1.2 何かに連絡することは理解でき、192.168.1.1 私に連絡することは理解できますが、192.168.1.1 すべてのシステムに連絡するのがなぜ表示されるのか理解できません。私のコンピュータを監視すると、私のルータからの着信トラフィックが表示されますが、私には送信されませんか?これを見てはいけませんか?
私が使用するユーティリティは次のとおりです。
iftop - display bandwidth usage on an interface by host
ユーティリティtcptrackとnetstatには何も表示されませんでした。その場合、唯一の合理的な説明は、このユーティリティがそのトラフィックを担当することです。
問題の更新
したがって、このマルチキャストは明らかに私のシステムのカーネルと私のルーターに統合されており、非常に基本的な質問と回答システムであるタイマーは60秒ごとに動作します。私はその理由をよく理解しておらず、何人かの良い人が私にそれを説明しようとした後でも、私は決して理解できないようです。だから私はそれをオフにしたい。可能ですか?
答え1
これらのパケットは一般的なマルチキャストサービスです(プロセスはブロードキャストパケットと似ていますが、それ自体はブロードキャストではありません)。ネットワークの出力トラフィックも(通常)無視できます。
実際には、自分が生成したトラフィックだけでなく、ネットワーク上の他のコンピュータが生成したアドレスから発生したトラフィックも表示できます。
- 224.0.0.1はall-systems.mcast.netです。
デフォルトでは、すべての(Linux)サーバーは定期的にネットワーク上の224.0.0.1にマルチキャストし、近くのルーターへのマルチキャスト呼び出しが可能であることを報告します。これらのパケットはLinuxカーネルから送信する必要があります。
- 224.0.0.251はmDNSです。
224.0.0.251の場合、Avahi / zeroconfはそれをサービス通知と検索に使用します。
Avahiは、マルチキャストDNS / DNS-SDサービス検索用のシステムを含む無料のゼロ構成ネットワーキング(zeroconf)実装です。
また、見ることができますTLDP - TCP/IPによるマルチキャスト HOWTO
クラスDアドレス - マルチキャストアドレス/224.0.0.0 - 239.255.255.255
o 224.0.0.1 はすべてのホストグループです。グループをpingすると、ネットワーク上のすべてのマルチキャスト対応ホストが応答する必要があります。これは、各マルチキャスト対応ホストが起動時にすべてのマルチキャスト対応インターフェイスでグループに参加する必要があるためです。
機能していないパケットを表示するには、ブロードキャストおよびマルチキャストパケット/ガイドを聞く必要があります。これは通常、すべてのステーションに送信されるためです。ここで扱わない微妙な違いがあります。私がリンクした紹介をご覧ください。
最後に、iftop
トラフィックの確認中にトラフィックを生成する責任はありません。
サーバーが属するマルチキャストグループを表示することもできます。
netstat -g
最後に、一般ユーザー/ユーザーがプログラムを実行していないとしても、システムが実行されているわけではありません。何もない。 Linuxは、バックグラウンドで多くの管理タスクを実行するマルチユーザー/マルチタスクシステムです。
答え2
マルチキャストIPトラフィックには、通常のユニキャストまたはブロードキャストトラフィックとは異なる規則があります。マルチキャストIPアドレスは送信元アドレスとしては使用されず、常に宛先アドレスとしてのみ使用されます。マルチキャストを送信するシステムは、通常のIPアドレスを送信元アドレスとして使用します。各マルチキャストIPアドレスにマルチキャストグループ:このマルチキャストアドレスに送信されたすべてのコンテンツは、このグループに属するすべてのホストで受信されます。 (またはこれは理論です。実際には、マルチキャストトラフィックは、サブネットまたは組織の外部にマルチキャストをルーティングするための特定の措置を講じない限り、デフォルトではこれらの制限で停止する傾向があります。)
ホストの一部のソフトウェア受け取るトラフィックをマルチキャストするとき、ホストカーネルに「このマルチキャストIPアドレスに送信されたマルチキャストを受信したい」と伝えます。その後、カーネルは、受信するマルチキャストアドレスのリストにマルチキャストIPアドレスを追加し、IGMPレポートメッセージを発行します。 「このマルチキャストIPでアドレス指定されたマルチキャストトラフィックを受信したいです。」 IGMPレポート自体はマルチキャストIPメッセージです。 Linuxでは、IGMPはカーネルレベルで処理されるため、これを担当するプロセスを見ることはできません。
マルチキャスト対応ルータはまた、定期的に(通常60秒ごとに)次のIGMPクエリメッセージを送信します。デフォルトでは、「このネットワークセグメントのすべてのシステムに:まだマルチキャストトラフィックに興味がある場合は、すぐに報告してください。」 224.0.0.1 = all-systems.mcast.netに送信されたIPメッセージ。おそらくルーターが送信するものです。このアドレスのDNS名が示すように、すべてのマルチキャスト対応ホストは常に224.0.0.1でアドレス指定されたマルチキャストトラフィックを受信する必要があります。
マルチキャスト対応ホストは、次の2つの状況でIGMPレポートを送信する必要があります。
- 特定のマルチキャストIPでアドレス指定されたトラフィックの受信を開始または停止する場合
- IGMPクエリメッセージを受信した場合。
通常、ホストのカーネルはそれを自動的に処理します。 Linuxでは、これを使用して、cat /proc/net/igmp
システムが現在各ネットワークインターフェイスでリッスンしているマルチキャストIPを確認できます。残念ながら、マルチキャストIPは16進数で報告され、バイト順序は一般的なIPアドレス形式とは反対です。たとえば、224.0.0.1は「010000E0」と表示され、224.0.0.251は「FB0000E0」と表示されます。
マルチキャストをサポートするルータは、自分が属する各ネットワークセグメントにIGMPクエリを送信し、応答として受信したIGMPレポートを追跡します。これは、特定のマルチキャストIPアドレスに対するマルチキャストトラフィックをあるネットワークセグメントから別のネットワークセグメントにルーティングする必要があるかどうかを知る方法です。
例外:IGMPクエリがネットワークセグメントで行われ、すでにルータよりもソースIPアドレスが低い他のソースがある場合、ルータはクエリを送信せずに受信のみします。ただし、ルーター間のマルチキャストトラフィックを調整するために、いくつかのマルチキャストルーティングプロトコルを使用して他のIGMPクエリソースと通信しようとすることもできます。
マルチキャスト対応ホストが3回の連続IGMPクエリ(つまり180秒)に応答しない場合、ルータはホストがマルチキャストトラフィックに関心を持たないと想定します。これにより、ホストの再起動、電源オフ、またはネットワーク接続が失われた場合に不要なマルチキャストストリームが消去されます。
シンプルなホームWi-Fiネットワークでは、マルチキャストは有用性が制限されます。 Wi-Fiネットワーク上のすべてのホストグループは、マルチキャストを使用するか単純なブロードキャストを使用するかにかかわらず、すべての人の共有無線帯域幅を消費し続けます。ただし、有線またはメッシュのWi-Fiネットワークでマルチキャストを使用すると、スイッチおよび/またはAPがIGMPメッセージを監視し、特定のマルチキャストパケットを特定のスイッチポートまたはWi-Fiデバイスに送信する必要があるかどうかを理解できます。これは特定のマルチキャストには興味がありませんが、スイッチ/ APでより多くのタスクを実行する必要があるユーザーにとって帯域幅を節約します。この機能を「IGMPスヌーピング」と呼びます。