問題タブ [igmp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
31523 参照

networking - Linux および IGMPv3 でのマルチキャスト参加

私たちは厄介な問題に遭遇しました。マルチキャスト UDP トラフィックを受信する C++ プログラムを作成しています。私たちはアプリケーションを別のネットワーク環境に移行する過程にあり、運用チームは、アプリケーションからの IGMPv3 メンバーシップのアナウンスをサポートするように要求しました。初期の調査では、Linux 2.6 カーネルが IGMPv3 をサポートしていることが示されています。したがって、tcpdump を実行すると、次の出力トレースが表示されることに困惑しています。

私の理解では、ファイル /proc/sys/net/ipv4/conf/eth1.22/force_igmp_version にゼロ以外の値を指定することで、カーネルに下位バージョンの IGMP を使用させることができます。ただし、ファイルにゼロ値の構成があることを確認しました。

私たちのアプリケーションは、次のコードを使用してマルチキャスト グループに参加しています。

IGMPv3 を強制するために、ソース プログラムに追加する必要があるものはありますか?

0 投票する
2 に答える
885 参照

php - PHP で IGMP を送信する

PHP スクリプトで IGMP パケットを送信できますか? IGMP はトランスポート層にもありますか?

224.0.0.251 宛ての JOIN パケットを調べていました。

IP ヘッダーにはポートが割り当てられていませんが、MAC アドレスが指定されていることに気付きました。これにより、IGMP はトランスポート層ではなくネットワーク層にあると思いました。(うまくいけば、私はそれを正しく言った)

誰かが私のためにこれを明確にすることができますか? JOIN パケットを送信しようとしています。

私は rfc3376 を読んで答えを見つけようとしていましたが、答えを構築する方法を示しているだけです。そうしようとすると、不正な形式のパケットが表示されます。

0 投票する
4 に答える
3065 参照

c - IGMPv2パケットのルーターアラートオプション

IGMPv2メンバーシップリクエストパケットを偽造して、RAWソケットで送信しようとしています。

RFC3376は次のように述べています。

IGMPメッセージは、IPプロトコル番号2のIPv4データグラムにカプセル化されます。このドキュメントで説明されているすべてのIGMPメッセージは、IP Time-to-Live 1、IP Precedence of Internetwork Control(Type of Service 0xc0など)、 IPヘッダーにIPルーターアラートオプション[RFC-2113]が含まれています

したがって、IP_ROUTER_ALERTフラグを設定する必要があります。

パケットに必要な厳密なもの(たとえば、IGMPヘッダーとペイロードのみ)を偽造しようとしているので、setsockoptを使用してIPオプションを編集しています。

いくつかの有用な変数:

RAWソケットを開く方法は次のとおりです。

次に、TTLとルーターアラートオプションを設定します。

IP_ROUTER_ALERTのsetsockoptは0を返します。パケットを偽造した後、次のようにsendtoで送信します。

パケットは送信されますが、IP_ROUTER_ALERTオプション(wiresharkでチェック)がありません。私は何か間違ったことをしていますか?IP_ROUTER_ALERTオプションを設定する他の方法はありますか?

前もって感謝します。

0 投票する
3 に答える
11953 参照

python - Pythonで指定された16進ペイロードでIPパケットを送信する方法は?

IGMP パケットを盗聴しましたが、python を使用して送信したいと思います。次のようなパケットを送信する方法はありますか

impacket のようなパケット ジェネレーターなしで?

UPD OK、次のように生のソケットを使用しようとしました:

ちょっとしたことを除いて、すべて問題ありません...そのパケットを嗅ぐと、次のようになります。

ご覧のとおり、何らかの理由で python はヘッダーを無視し、独自のヘッダーを作成します。どうすれば修正できますか?

0 投票する
1 に答える
2276 参照

c - IP_ADD_SOURCE_MEMBERSHIP を使用すると、RAW ソケットに 10 個を超える送信元アドレスを追加できません

こんにちは、

set socket option IP_ADD_SOURCE_MEMBERSHIP を使用して、10 個を超える送信元アドレスを追加します。しかし、10 個の送信元アドレスを追加すると、それ以上追加できなくなります。ソケットごとに 10 個を超えるアドレスを追加する方法を教えてください。私のコードは次のとおりです。

sock = ソケット (AF_INET、SOCK_RAW、IPPROTO_UDP);

/* 以下のコードが 10 回以上繰り返されています */

10 個の送信元アドレスを追加すると、Can't set IP_ADD_SOURCE_MEMBERSHIP! というエラーが発生します。

前もって感謝します

デブジョティ

0 投票する
1 に答える
19748 参照

c - ソケット エラー:90:メッセージが長すぎます

次の IGMP ソケット呼び出しのシナリオでエラーが発生しました。

sendto 呼び出しは Message too long と言って失敗します。バッファサイズとして 8192 を使用しています。そこで、次の呼び出しを使用してこのエラーを修正しようとしました。

setsockopt( ) 呼び出しは成功しますが、sendto() で同じエラーが発生します。

だから私は getsockopt() 呼び出しで SO_SNDBUF サイズをチェックし、それは 1 バイトを示しています?!

私がやっている何が悪いのですか。

Linux カーネルは、IGMP サポートのために再コンパイルする必要がありますか? または私は何かが欠けていますか?

0 投票する
2 に答える
3965 参照

c# - C# (IGMPv3) でソース固有のマルチキャスト グループに参加する方法

マルチキャスト グループに参加してデータを受信できる C# アプリケーションがあります。これはうまくいきます。IGMPv3 をサポートし、マルチキャスト グループに参加するときに送信元の IP を指定できるようにしたいと考えています。MSDN のドキュメントから、これを行う方法がわかりません。私の質問に答えているように見える次のリンクを見つけました。

http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/e8063f6d-22f5-445e-a00c-bf46b46c1561

そして、これが私がこれをどのように実装したかです:

しかし、次のエラーで SetSocketOption() を呼び出すと、SocketException が発生しますThe requested address is not valid in its context

誰かが私がここで間違っていることを指摘できますか? ありがとう!

0 投票する
2 に答える
979 参照

c# - C# で MLDv2 を使用する方法 (IPv6 マルチキャスト)


IPv4 では、[IGMP のバージョン 3 は「ソース フィルタリング」のサポートを追加します。つまり、システムが特定のソース アドレスからのみパケットを受信することに関心があることを報告する機能です。][1]

この動作をサポートするために、C# アプリケーションで IGMPv3 を使用しています。これが私のやり方です。

現在、アプリケーションに IPv6 のサポートを追加する過程にあり、IPv4 と同じ動作を得る必要があります。私が読んだことから、IPv6 の IGMPv3 に相当するプロトコルはMLDv2です。これを Socket を使用して C# に実装する方法について誰か考えがありますか?

ありがとう!

0 投票する
1 に答える
17341 参照

windows-7 - Windows 7 での IGMP バージョンの設定

私は、マルチキャスト モードで使用できるようにする「そこに」書かれたソフトウェア (たとえば、利用できるソース コードがない) を持っています。技術的な理由から、IGMP バージョン 2 しか使用できないネットワークでこのソフトウェアを使用しようとしています。

私のOSはWindows 7です(64ビットですが、違いがあるとは思えません)。これまでのところ、私の検索では Windows XP と Windows Server のソリューションしか得られず、そのすべてにレジストリの編集が含まれていました。通常の理由 (別名「レジストリ パラノイア」) に加えて、この特定のネットワークだけが使用するわけではないため、この場合はレジストリを編集することを躊躇します。マルチキャストを使用しようとしている他のすべてのネットワークでは、まったく問題がありません。

このソフトウェアを強制的に IGMP V2 に準拠させる簡単な方法はありますか?

ありがとう!

ジョン・プライス

0 投票する
1 に答える
1238 参照

c# - IGMP トラフィックのスヌーピング

IGMP を行うためのライブラリを作成しました。さて、ばかげたことですが、私のライブラリはプレゼンス監視も行って、他の人がまだグループの一員であることを確認しています.

IGMP は、下位レベルでまったく同じことを行います。別れのメッセージ、それがまだ同じグループの一部であるというルーターへのポーリング、すべて。同じ作業をすべて繰り返しましたが、おそらくそれほど堅牢ではありません。

それらのパケットを利用できれば、すべてをよりきれいにすることができます (そして、車輪を再発明する必要はありません)。

誰でもこれを行った経験がありますか? たぶん、ある種のクレイジーなソケットを作成しますか?libpcap を使用したくありません。Windows/Linuxでソケットを使用できる限り、言語は問題ではないと思います