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(...) の間) に最初の回答パケットが来ることがあります。この場合、一部の情報が失われ、すべての後処理が破損しています。
完璧な方法は、「count=3」オプションを指定して sr() 関数を使用して 3 つのパケットのみを取得することですが、そのオプションは sr() には存在しません。
誰にもアイデアはありますか?
どうもありがとう
私の言語でごめんなさい、私はフランス語です