問題タブ [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.

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

ruby - 標準のソケットライブラリのみを使用してRubyにICMP pingを実装するにはどうすればよいですか?

Ruby ソケット ライブラリを使用して ICMP パケットを送受信できるはずですが、これに関する適切なドキュメントはありません。

net-ping、icmp、ping、およびクロスプラットフォームの問題が原因で失敗し、ビルド プロセス中に失敗する devkit とカスタム ビルドを必要とするこれらの他のすべてのライブラリを使用したくありません。これらは無視され、更新されていません。長い間、および/または一般的にバグがあります。

これを達成する方法に関する適切なドキュメントはありますか? TCP または UDP パケットではなく、ICMP エコー応答を送信したい。

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

linux - RAW ソケットを使用して Linux で発信 icmpv6 パケットをトラップする

Linux 上のホストから発信される着信および発信 icmpv6 パケットをキャプチャしようとしています。私はそれを行うために次のプログラムを書きました。このプログラムでは、送信パケットではなく受信パケットをトラップできます。トラッピングは icmpv4 パケット (コードのコメント部分) では正常に機能しますが、icmpv6 パケットでは問題になります。以下で使用した方法と比較して、少し煩わしいパケット フィルタリング (バークレー パケット フィルター) メカニズムの使用には興味がありません。これを行うために使用できる何か他のものがあれば教えてもらえますか?それとも、Linux はこれを行うための他のメカニズムを提供していますか?

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

delphi - ping.exeが成功したときにICMPsendEchoが失敗する原因は何ですか

手元に面白い状況があり、トラブルシューティングの方法がよくわかりません。私は自分の状況に似たものを数回検索しましたが、それに完全に一致するものはありません。答えがすでにここのどこかにあるなら、私を正しい方向に向けることができる人をいただければ幸いです。

わかりました、要点まで。

インターネット接続を監視するためのウォッチドッグアプリケーションを作成しています。設定された間隔で一連のドメインにpingを実行するように設計されており、いずれかのドメインがpingに応答すると、ステータスタイマーがリセットされます。ステータスタイマーが設定されたしきい値を超えた場合、問題を修正するためにいくつかの段階の修正措置が試みられます。

簡単ですね。

ここがおかしくなるところです。

ICMPsendechoを使用してping要求を発行しています。私の開発環境(win7)では、正常に動作し、テストが行​​われ、すべてがスムーズに進んだようです。ただし、デプロイされている環境では、応答を受信できません。展開環境は、WindowsXPsp3マシンです。

トラブルシューティングプロセス全体を通して、この問題を実際に解決しようとする際に役立つ場合と役に立たない場合があるいくつかのことに気づきました。

Windows ping.exeは、接続ステータスのテストに使用しているすべてのドメインの展開環境で正常に機能します。応答の生成に失敗したように見えるICMPsendecho呼び出しのみです。

デプロイメント環境にwiresharkをインストールしましたが、両方のタイプのpingで要求に対してパケットが正常に発行されていることがわかります。Windows pingは74バイトの長さの要求パケットを生成し、私のプログラム呼び出しは42バイトの長さのパケットを生成します。Windows応答パケットは、受信時に同様に74バイトです。

Wiresharkをインストールした状態で、開発環境に1分間切り替えます。Windows pingは、パケットを使用する展開環境と同様の状況を生成します。ただし、私のアプリケーションでは、要求を生成するとき、パケットの長さは42バイト(デプロイメント環境と同じ)ですが、受信する応答の長さは60バイトです。

私が言ったように、その情報は役立つかもしれないし、役に立たないかもしれませんが、Windows pingがそのマシンで正常に機能しているように見えるのに、なぜこのアプリケーションがICMP応答を生成できないのかを調べようとしています。

役立つかもしれないもう一つのちょっとした情報、インターネット接続はAT&Tのelevate 4gホットスポットを使用して監視していました、実際のデバイスはシエラワイヤレスMC8790AirPrimeカードです。

これらのpingが失敗する理由について誰かが何か考えを持っていますか?

あなたが持っているかもしれない有用な情報と私の投稿を読むために時間を割いてくれてありがとう。

PS。

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

python - ツイストおよびICMP(txNetTools)

非同期pingの場合、twistedを使用するのが適切であると何度か言及しました。

スレッドで実装を作成しました(PythonでサイトをPingするなど) 。

しかし、200スレッドまではクラッシュします

http://twistedmatrix.com/trac/wiki/ProjectsUsingTwistedのページで、Twistedに実装されているtxNetTools-Ping、traceroute、icmpなど、および独自のネットワークツールを構築したい人のためのライブラリを見つけました。

誰かがこのライブラリを使用しましたか?

ping.pyを使ってみました:

変更した場合:

多分私は何か間違ったことをしているのか、理解していないのですか?

PSツイスト12.0

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

networking - ICMPエコーパケットの最大有効サイズ

ICMPエコーパケットの最大有効サイズが次のように計算される理由を誰かが説明できますか?

65535-20-8 = 65507

ありがとう。

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

c - CプログラムでICMPパケットを送信する

CでICMPpingテストプログラムを作成しようとしていますが、パケットを正常に送信できません。このsendto関数はバイト数とすべてを返しますが、実際にはパケットは送信されません。宛先コンピューターのWireSharkでこれを確認しました。ただし、ホストでの通常のpingは正常に機能し、WireSharkに表示されます。

これが私のコードです:

私が間違っていることについて何か考えはありますか?また、チェックサムは大丈夫ですか?両方に0を使用しても問題ありませんか?

編集: OK、それで私は以下の人々のおかげでパケットを適切に送信することができました!そして、宛先コンピュータはエコー応答を送り返します。しかし、今、私のプログラムは応答を受け取りません。関数はselect()常にタイムアウトします。上記のコードを更新しました。

編集2:申し分なく、私はそれが機能しています!IPPROTO_ICMPの代わりにソケットプロトコルを設定する必要がありIPPROTO_RAW、それはうまくいきました!コメントしてくれてありがとう!本当に助けてくれました!正解は1つしかマークできないようですが、皆さんはこれを修正するのに役立ちました。:)

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

azure - Azure で Ping(ICMP) を有効にする方法

Windows Azure ロールで、ping アウトできません

私はそれをグーグルで検索し、コマンドの下で実行することを提案する人を見つけましたが、実行した後でもpingを実行できません

誰かが理由と回避方法を教えてください。

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

c++ - 到達不能な宛先に対する ICMP エコー要求/応答の適切なプロセスは何ですか?

ゴール:

ネットワーク スイッチが使用可能かどうかを確認するために、ネットワーク スイッチに ping を送信できる必要があります。これは、ネットワーク ケーブルが外れているか、ネットワーク スイッチが使用できないか、またはネットワーク通信経路に他の問題があることをユーザーに知らせるためのものです。これは包括的な診断ツールではありませんが、何もないよりはましです。

デザイン:

生のソケットで ICMP を使用して、IPv4 ドット表記の特定のアドレスに 5 つの ping メッセージを送信することを計画しました。ソケットに ICMP フィルターをセットアップし、独自の IP ヘッダーを作成しません。ICMP の送信は sendto メソッドを使用し、受信は recvfrom メソッドを使用します。これは単一のスレッドで発生します (ただし、別のスレッドを使用して送信と受信を分離することもできます)。メッセージの受信は、受信したメッセージの ID と送信された ID を照合することによってさらにフィルタリングされます。保存された ID は、アプリケーションの実行中のプロセス ID になります。ICMP_ECHOREPLY メッセージが受信され、メッセージの ID と格納された ID が一致する場合、カウンターは 5 (4) に達するまでインクリメントされます (カウンターはゼロから始まります)。ping を送信して応答を待ちます。

問題:

設計を実装した後、特定の有効なネットワーク アドレス (192.168.11.15 など) に対してアクティブなネットワーク参加者と ping を実行すると、5 回の ping ごとに ICMP_ECHOREPLY メッセージを受信します。ただし、非アクティブなネットワーク参加者 (特定のアドレスにデバイスが接続されていないことを意味する) を使用して有効なネットワーク アドレス (192.168.30.30 など) に ping を実行すると、1 つの ICMP_DEST_UNREACH メッセージと 4 つの ICMP_ECHOREPLY メッセージが返されます。応答メッセージの ID は、ソフトウェア内に保存されている ID と一致します。コマンドラインから「ping 192.168.30.30」を実行すると、「From 192.168.40.50 icmp_seq=xx Destination Host Unreachable」と表示されます。ICMP_ECHOREPLY メッセージの代わりに ICMP_DEST_UNREACH メッセージを受信するはずがないのですか?

コード:

Ping.h:

main.cpp:

コンパイルするには、Linux ボックスのコマンド ラインに「g++ main.cpp -o ping」と入力するだけでコンパイルできます (つまり、すべてのソース コードがインストールされている場合)。

結論:

その特定のネットワーク アドレスにないデバイスから 1 つの (1) ICMP_DEST_UNREACH メッセージと 4 つの (4) ICMP_ECHOREPLY メッセージを受信する理由を誰か教えてもらえますか?

注: ネットワーク IP アドレスは、main.cpp ファイルから変更できます。IP をネットワーク上に実際に存在するデバイスまたはネットワーク上に存在しないデバイスに変更するだけです。

また、コーディング スタイルに関する批判にも興味がありません。見栄えがよくない、「C」スタイルのキャストと C++ キャストが混在している、メモリ管理が貧弱であるなどのことはわかっていますが、これはプロトタイプ コードにすぎません。それはきれいであることを意味するものではありません。

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

windows - コンピュータがオンになっており、ネットワーク上で動作しているかどうかを確認する方法

マジック WOL パケット用に構成されたコンピューターを使用しているため、アダプターは ICMP に応答します。コンピューターに ping を実行しても、オフのときでも常に応答するため、多くの有用な情報が得られるとは思えません。マシンは Windows 7 を実行しており、コンピューターの状態に関する情報を取得するために使用できる小さくて高速なプロトコルが利用できるかどうか疑問に思っていました。できれば小さいもので、php/python を介してソケットの形ですばやく実装できます。私が最低限必要な情報は、コンピューターがオフかオンかということです。

MS-HGRP を使用して、サポートされているすべてのシステムを一覧表示することを考えています。マシンがホーム ネットワークに表示されるという事実を知っているからです。しかし、それよりもはるかに効率的なものがあるかどうかはわかりません。

0 投票する
0 に答える
4660 参照

windows - ウィンドウの下でicmpping要求を送信しているプロセスを判別する方法

ネットワークトラフィックをWireSharkingすることにより、ping.exeを明示的に実行していないときに、PCが疑わしいIPアドレスにICMPエコー要求を送信していることがわかりました。これを行うプロセスが必要です。そして、私はそれを見つけたいと思います。

発信ICMPパケットの識別子フィールドを調べましたが、手がかりが見つかりませんでした。(すべてのパケットのidフィールド値は0x200であり、* NIXシステムではほとんどありません。このフィールドには、イニシエーターのpidが入力されます)。

また、Process Explorerを使用して、icmp.dllを使用しているプロセスを見つけましたが、何も見つかりませんでした。

実行中のオペレーティングシステムはWindowsXPServicePack2です。

誰かが私を助けてくれたらありがたいです、ありがとう。