3

まず、私はネットワークプログラミングに比較的慣れていません。サーバーアプリケーションに到達する前にHTTPトラフィックを傍受して遅延させたい。libnetfilter_queueを詳しく調べました。これにより、適切に遅延させるために必要なすべての情報が得られますが、レベルが低すぎます。そこでトラフィックを遅らせることはできますが、IPデータグラムをすぐに受け入れない限り(つまり、遅らせたいときにスタックに送信しない限り)、再送信されます(ACKが到着しないとき)。これは私が望んでいることではありません。

TCPを処理する必要はなく、TCPが配信するペイロードだけを処理する必要があります。だから私の質問は、特定のポートが宛先に到達する前に、TCPがそれを確認してチェックした後、どのようにトラフィックを傍受するのかということです。

ありがとう

編集:うまくいけば、タグとlibnetfilter_queueから明らかです-これはLinux用です

4

2 に答える 2

2

HTTPプロキシを介して接続をハイジャックします。クライアントでHTTP_PROXYを設定するだけでは不十分な場合、または現在のサーバーのIPとポート番号で実行するフィルターを設定して実サーバーを別のIPに移動することができない場合は、これを行うための良い方法をGoogleが設定します。

したがって、実際のTCP接続はクライアントとユーザーの間であり、次にユーザーからサーバーへの接続です。そうすれば、TCPは常にミッションが達成されたと見なすため、ACKを処理する必要はありません。

編集:オリジナルのコメントは、同じマシン上の透過プロキシプロセスを介してトラフィックをリダイレクトするためにiptablesを使用してこのアイデアをすでに思いついたようです。

于 2009-12-05T08:40:26.667 に答える
1

さて、私は私のコメントで提案したことをしました、そしてそれがそれをするのに長い道のりを感じたとしても、それはうまくいきます。

(または)問題は、Webサーバーが、当然のことながら、すべての要求がローカルホストからのものであると見なしていることです。本当に私はこの遅延がクライアントとサーバーの両方に透過的であることを望んでいます(もちろん時間内を除いて!)。これについて私にできることはありますか?

そうでない場合、どのような影響がありますか?各HTTPセッションは異なるポートを介して発生します-本来あるべきように完全に分離するのに十分ですか?おそらく、多くのセッションのアドレスが同じであるNATの背後で機能することを考慮するとそうです。

于 2009-12-01T17:21:54.643 に答える