C#でTCP tracerouteを実行するにはどうすればよいですか?それも可能ですか?C#のTCPトレースルート
答えて
rawソケットを介してTCPパケットを送信することはできませんので、手作業でTCPパケットを生成するにはraw ethernetフレームが必要です。
nmapが生のイーサネットフレームを取得する方法を参照してください。それを繰り返します。 MSFTから
私はこれを使うことができますか? http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx 彼はC# – webly
を使用してネットワークスニファを実装しているようです。そのようにしたいものはすべて読むことができますが、送信TCPパケットは決して電線に届きません。 – Joshua
私は少しこれを読んでいた、それは生のパケット制限を引き起こしたWindows XP SP2の修正であったようです - 私のアプリケーションがWindowsサーバー2008を対象としている場合はどうなりますか?この限界もありますか? – webly
:Windows 7のサービスパック2(SP2)でのWindows Server 2008 R2、Windows Vista、およびWindows XP上でhttp://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx
、rawソケットを介してトラフィックを送信する機能は、いくつかの方法で制限されています:
- ソケットでTCPデータを送信できません。
- 無効な送信元のUDPデータグラム は、 ソケットでは送信できません。 の送信元UDPデータグラムのIP送信元アドレスは、ネットワークインターフェイス上に 、またはデータグラム が存在する必要があります。この変更は 、サービス拒否攻撃を分散し、偽装されたパケットに (偽造ソース IPアドレスを持つTCP/IPパケット)を送信するために 能力が制限を作成するために、 悪意のあるコードの能力を制限するために作られた ました。
- ローソケット を使用してバインド関数を呼び出すことはできません。
上記の制限は、Windows Server 2008、Windows Server 2003、またはWindows XP SP2以前のオペレーティングシステムのバージョンには適用されません。
C#でtracerouteを実行したい場合は、パケットを使いこなす必要はありません。 tracerouteは、1からnまでのTTLを持つ多くのpingで構成されています。これは.NetフレームワークのPingクラスでアーカイブできます。ここで
は私のいくつかの古いコードで、それはかなりではないのですが、それは動作するはずです:/// <summary>
/// Performs a pathping
/// </summary>
/// <param name="ipaTarget">The target</param>
/// <param name="iHopcount">The maximum hopcount</param>
/// <param name="iTimeout">The timeout for each ping</param>
/// <returns>An array of PingReplys for the whole path</returns>
public PingReply[] PerformPathping(IPAddress ipaTarget, int iHopcount, int iTimeout)
{
System.Collections.ArrayList arlPingReply = new System.Collections.ArrayList();
Ping myPing = new Ping();
PingReply prResult;
for (int iC1 = 1; iC1 < iHopcount; iC1++)
{
prResult = myPing.Send(ipaTarget, iTimeout, new byte[10], new PingOptions(iC1, false));
if (prResult.Status == IPStatus.Success)
{
iC1 = iHopcount;
}
arlPingReply.Add(prResult);
}
PingReply[] prReturnValue = new PingReply[arlPingReply.Count];
for (int iC1 = 0; iC1 < arlPingReply.Count; iC1++)
{
prReturnValue[iC1] = (PingReply)arlPingReply[iC1];
}
return prReturnValue;
}
- 1. トレースルート平均待ち時間
- 2. .NETでパケットロスとトレースルートを検索する
- 3. TCPソケットサーバーC++/cウィンドウサイズ
- 4. C#チャット - TCP P2P
- 5. C#tcpソケットキープアライブ
- 6. C#TCPサーバーバッファー
- 7. Winsock C TCPソケット
- 8. C#TCPチャットアプリケーションスレッディング
- 9. C/Linux TCPソケットサーバー
- 10. C++ boost tcp-server
- 11. C# - SNMP over TCP
- 12. C#tcp server client
- 13. C/C++ Tcp over mobile hotspot
- 14. C/C++化合物TCP
- 15. TelnetブロッキングC#TCPサーバー
- 16. C#System.OutOfMemmoryException TCPサーバーで
- 17. C#TCPパケット構造
- 18. C#ソケットTCPクライアント/サービス
- 19. 目的C TCPソケット
- 20. C#ソケット(TCPとUDP)
- 21. Objective-C Bonjour/TCP Stack
- 22. Python/C++リモートTCPソケット
- 23. ソケットのTCPの例(C)
- 24. C#用のTCP IPソケットwinForm
- 25. C#のTCP/IPライブラリ(フレームワーク)
- 26. C#のTCPポートスキャナ資源
- 27. C++ TCPソケットのガベージ値
- 28. C#TCPソケットストリームメッセージの混乱
- 29. TCPポートCのデータをリッスンするC#
- 30. TCPクライアントの強制終了C#のTCPサーバのスレッド
何「TCPのトレースルート」:あなたがルートに沿って各ホスト上に接続するために望んでいるだろうTCPソケット? tracerouteは、TCPではなくICMPを使用して実装されています。 – ChrisW
彼らはhpingのようなツールを作りたいと思っていますか? – 48klocs
http://en.wikipedia.org/wiki/Tcptraceroute http://michael.toren.net/code/tcptraceroute/ http://tracetcp.sourceforge.net/ だけで、hpingをやろうとしませんHTTPに依存するtracerouteは、pcapのようなある種のパケットスニッファ/ドライバを使わなくてもC#で可能かどうかを知りたがっていました。 – webly