2

HTTP GET を実行するには、パケット (GET / HTTP/1.0\n\n) を送信し、3 つのパケットを待機する必要があります。

私のGETのACK

GET の回答: HTTP/1.0 200 OK

および送信のFIN ACK

私は2つの方法を見つけました:

=> マルチオプションで sr() を使用

=> GET リクエストを送信した直後に sniff を使用する

  • sr() 関数の場合、問題はスニッフィングを停止することです。唯一のオプションはタイムアウトを設定することですが、私のスクリプトは多くの異なるサイトをテストします。非常に多くの時間の答えが異なるため、静的なタイムアウト値を選択するのは難しい場合があります。いつでもそれを超えるサイトはないと確信しています。

  • sniff の場合、「count」引数を設定して 3 つのパケットのみを取得できるため、同じ問題はありません。しかし、記録された 3 つのパケットが必要な 3 つであることを確認するのに十分なほど良いフィルターを作成するのは困難です (ARP や DNS などは含まれません)。しかし、主な問題は、"sniff" が起動される前 (send(GET_PACKET) とanswers=sniff(...) の間) に最初の回答パケットが来ることがあります。この場合、一部の情報が失われ、すべての後処理が破損しています。

完璧な方法は、「c​​ount=3」オプションを指定して sr() 関数を使用して 3 つのパケットのみを取得することですが、そのオプションは sr() には存在しません。

誰にもアイデアはありますか?

どうもありがとう

私の言語でごめんなさい、私はフランス語です

4

2 に答える 2

0

これは答えというよりはヒントですが、問題は、アプリケーション層の要求に対してトランスポート層のパケットを調べたいということかもしれません。を送信し、待機して応答し、送信することで、HTTP GETトランスポート層に分割できます。これは、あなたが望むかもしれないものを説明するリンクです。SYNACKGET

于 2012-12-09T12:00:23.377 に答える