問題タブ [icmp]
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.
ruby - ICMP Ping / Echo で返信パケットの内容を確認する方法は?
ping エコーを検証するとき、ユーティリティ/ライブラリはパケットのチェックサムのみをチェックすることが多く、送信されたペイロードが返されたペイロードと一致することを実際に確認していないようです。たとえば、Wireshark の ICMP パーサーは不正なチェックサムのみをチェックし、Ruby のnet-rubyもチェックサムをチェックします。
低レベルのネットワーク ドライバーの問題をデバッグしており、受信時にデータが破損していないことを確認する必要があるため、 ICMP Echoなどの低レベルの要求を使用してドライバーをテストしたいと考えています。ただし、既存の Ping ツールでは不十分です。チェックサムがエコー応答に含まれるデータと一致する可能性がある一方で、エコー応答のデータがエコー要求のデータと一致しないことが懸念されるからです。そのため、両方に有効なチェックサムがありますが (チェックサム コードにエラーはありません)、データ受信部分にエラーがあり、ホストが送信していると考えているものをドライバーが受信していません。
エコー ペイロードをチェックして、送信したものと同じであることを確認するにはどうすればよいですか? 私が使用できるスタンドアロンの「パラノイド ping」ユーティリティがある場合、それも問題ありません。ネットワークがフラッディングしたときにのみ問題が発生するため、ping の長さと頻度を変更できる必要があるだけです。
Ruby ライブラリ/スニペットの形式で提供することをお勧めしますが、Windows で実行できるようにする限り、任意の言語またはスタンドアロン アプリを使用できます。
ありがとう!
c# - C# で ICMP パケットをリッスンする
SIP コールを設定するために UDP パケットを送信する必要がある SIP アプリケーションがあります。SIP には、配信の失敗に対処するためのタイムアウト メカニズムがあります。私ができるようにしたい追加のことは、SIPが使用する32秒の再送信間隔を待たなければならないためにUDPソケットが閉じられているかどうかを検出することです。
私が言及しているケースは、UDP ソケットに送信しようとした結果、リモート ホストによって ICMP Destination Unreachable パケットが生成された場合です。起動しているがポートがリッスンしていないホストに UDP パケットを送信しようとすると、ICMP メッセージがパケット トレーサーと共に戻ってくるのを確認できますが、C# コードからそのホストにアクセスするにはどうすればよいでしょうか?
生のソケットをいじっていますが、プログラムが ICMP パケットを受信することはまだできていません。以下のサンプルでは、PC に ICMP メッセージが届いているにもかかわらず、パケットを受信しません。
以下は、10.0.0.100 (私の PC) から 10.0.0.138 (私のルーター) への UDP パケットをリッスンしていないことがわかっているポートで送信しようとして、私の PC に着信する ICMP 応答を示す Wireshark トレースです。私の問題は、任意の期間後にアプリケーションがタイムアウトするのを待つのではなく、これらの ICMP パケットを利用して UDP 送信が失敗したことを認識する方法です。
c# - 2008 のサービスのコンテキストで ICMP パケットを受信する
udp ポートからパケットを送信すると、ネットワークが到達不能な ICMP ホストを返した場合に例外を受け取ります。例外は、(ICMP パケットの内容のような) 有益なことは何も教えてくれません。
問題ありません。ICMP をリッスンするだけで、必要な情報が得られますが、UDP ポートの例外は無視されます。したがって、生のソケットを開き、ICMP パケットをリッスンして、そこから移動します。
開発 (Win XP) では正常に動作しますが、サーバー 2008 での運用では、exe が実行されているセキュリティ コンテキストには、raw ソケットを開くことができる管理者権限が必要です。これはサービスには役に立たない。マイクロソフトが言っていることを理解できれば、私たちがやりたいことを実行できる唯一の方法は、管理者権限を持つアカウントでサービスを実行することです。管理者アカウントでネットワークに面したサービスを実行することに伴う潜在的なセキュリティ ホールは言うまでもなく、ピーナッツの大槌のように感じます。
ここで間違っていることを本当に願っていますが、上記と矛盾するものは何も見つからないようです。
コメント/ヒントや同情を得た人はいますか?
c# - C# の ICMP、SocketException - アクセス許可によって禁止されている
ここで見つかった ICMP コードを機能させようとしています。ただし、この行では:
SocketException が発生します:「アクセス許可によって禁止されている方法でソケットにアクセスしようとしました」(ネイティブ エラー コード: 10013)
管理者モードで実行することは (悪い) 解決策の 1 つですが、自分のプログラムをユーザー レベルで動作させたいので、何を提案しますか? 他の ICMP アプローチも歓迎します。
「ClickOnce」セキュリティ設定を試してみましたが、役に立ちませんでした。
python - python非特権ICMP
Python から何かを ping (ICMP) するための最良の方法を見つけようとしているときに、次の質問に出くわしました。
- Python で ping または traceroute を実行し、生成された出力にアクセスするにはどうすればよいですか?
- Python でサイトに ping を実行する
- ネイティブ python を使用して ping または traceroute を実行するにはどうすればよいですか?
答えは通常、「このサードパーティモジュールをルート権限で使用する」または「システムのpingコマンドを使用して出力を解析する」に要約されます。ネイティブ メソッドのうち、icmplibとM. Cowles と J. Diemer の ping.pyは、 scapy マニュアルと同様に、root 権限の必要性を明示的に述べています。
そのため、特別な権限なしで ICMP ping をネイティブに送信することは不可能に思えます。システムの ping コマンドは何とか管理できますが、そのマニュアル ページにはその方法が説明されていません。一方、 icmpのマニュアルページには、可能であると書かれているようです:
したがって、少なくとも icmp によれば、許可されているように見えます。では、すべての python ツールがこれを実行できないのはなぜでしょうか? Python ツールは一般的すぎて、特権ソケットでの作業が特権を持つことを期待していますか? root権限なしでpingできるping関数をCで書いて、これでpythonを拡張することは可能でしょうか? 誰かがこれをしましたか?問題を誤解しただけですか?
windows - Windows で Winsock を使用しないネットワーク トラフィックの種類はどれですか?
SMB は Winsock を使用しないため、SMB トラフィックが LSP を通過しないことがわかりました。これについては MSDN に段落がありますが、これは Windows CE 専用の MSDN の一部です。では、Winsock を通過しないトラフィック全体の包括的なリストはありますか? MSDNはそれについて少し面倒です。
私は今見つけました:
- SMB
- ICMP
linux - 組み込み Linux デバイスがインターネット接続を検出するスマートな方法
私たちのチームは、Linux 2.6 ベースのインターネット メディア デバイスを開発しています。現在、www.google.com に ping を送信することで、インターネット接続が (有線イーサネット i/f 経由で) 確立されているかどうかを検出しています。
デバイスをテストした一部のネットワークは ICMP パケット転送をサポートしていないため、この場合、アプリケーション コードは誤ってインターネットを利用できないと報告します。
よく知られているサービスにpingを実行することなく、 /dev/eth0 を介してインターネット接続が利用可能かどうかを推測するためのより洗練されたアプローチを知っている人はいますか?
c# - C#でのネットワークパフォーマンスツールの測定
ネットワーク測定ツールを開発しようとしています。目的は、クライアントとサーバーマシン間の(クライアント側からの)応答時間を測定できるツールを作成することです。これはサイドアプリケーションです-メインアプリケーションへのアプリケーション-サーバーからの応答時間が特定のしきい値を超えていることをメインアプリケーションが経験した場合、ツールは起動され、ネットワーク接続テストを実行して、クライアントサーバー接続が安定していることを確認します(ネットワークが無線であるなどの理由で不安定になる可能性があります)
実行する必要のあるテストは、ping操作だけでなく、さまざまなサイズのパッケージを送信することでもあります。
しかし、私は通信技術の経験がほとんどありません。
ICMPプロトコルは進むべき道ですか?はいの場合、異なるサイズのパッケージを送信することは可能ですか(ネットワークが妥当な時間で2 MBのデータを転送できるかどうかを測定するため)?
私は2番目の懸念があります。ファイアウォールに関して何に注意する必要がありますか?ローカルネットワーク上で正常に動作するアプリケーションを開発するのは恥ずべきことですが、実際に使用されるとすぐに、テストがファイアウォールによってブロックされているため、失敗します。
私の質問があまりお粗末ではないことを願っていますが、どんな助けでも大いに感謝されていることを知っています。
ではごきげんよう
/サギ
c++ - IcmpSendEcho と MTU サイズの設定?
ICMP エコー パケットの送信中に (IcmpSendEcho を使用して) MTU を調整できるかどうかは誰にもわかりませんか?
IcmpSendEcho() 関数を使用して Windows でこれを実行しようとしています。