2

テスト上の理由から、異なる送信元 IP アドレスで http パケットを生成し、それを宛先に送信しようとしています。

Sharppcapまたはpacketdotnetを使用します。

ここで良いサンプルを見つけました:

http://www.tamirgal.com/blog/post/SendTcpSynExamplecs.aspx

そしてここ:

http://pcapdotnet.codeplex.com/wikipage?title=Pcap.Net%20Tutorial%20-%20Sending%20Packets

しかし、私はこの分野の初心者であり、助けが必要です:

  1. http パケットを送信する前に何をすればよいですか? TCPハンドシェイクまたは何をしますか?http パケットを送信してpost動詞 を使用して URL を呼び出すサンプルを投稿できますか?

  2. いくつかのストレス テストを行うために、送信元 IP アドレスを変更する必要があり、宛先の応答は重要ではありません。
    では、送信元アドレスを変更するだけで十分ですか? チェックサムその他のプロパティはどうですか?

サンプルやリンクは役に立ちます。

4

2 に答える 2

2

クリス・モーガンが答えで指摘したように、あなたが説明したようにすることは不可能です。理由は次のとおりです。

  • HTTP プロトコル (実用的な目的のため - 常に) TCP 接続で動作します
  • 実際のデータが流れ始める前に、TCP 接続はハンドシェイク (3 パケットの相互交換 - クライアント -> サーバー -> クライアント -> サーバー) を実行する必要があります。
  • ハンドシェイクのため、HTTP ソース IP アドレスを置き換えることはできません。接続を確立するには、有効な IP を提供する必要があります (そうしないと、2 番目のパケットを受信できず、必要な 3 番目のパケットを送信できません)。
  • ソース IP アドレスは、確立された接続プロパティから取得されるため、接続が確立された後にそれを偽造する方法もありません。

部分的に可能である特殊なケース (X-Forwarded-For および HTTP 要求の同様のヘッダー) は多数ありますが、これはアプリケーションごとに調査する必要があります。

つまり、要するに、あなたが要求していることは不可能です (いくつかの非常に特殊なケースを除いて)、この Wiki 記事で TCP 接続の確立について詳しく読むことができます

于 2012-12-24T08:17:34.240 に答える
1

受信する http パケットを送信する前に、サーバーとの tcp 接続を確立する必要があります。この種のテストを行うために必要となる可能性があるものを IP レベルから構築するのは、ちょっとした作業です。

ただし、http セッションを生成するツールがあります。ソース IP の変更について言及するときにこれを実行しようとしている場合は、通常、特定の数の同時 http セッションを開くように構成することもできます。http://code.google.com/p/httperf/またはhttp://httpd.apache.org/docs/2.2/programs/ab.htmlのようなものがそれを行うかもしれません。

于 2012-12-18T21:07:09.603 に答える