2017-06-16 8 views
0

状況(プロキシされたtcp接続と関係があります)のため、私は定期的にCLOSE_WAIT接続を終了します。通常、デバッグ中に私のブラウザが原因です。CLOSE_WAIT接続はソフトウェアを殺さずに終了します

トンネルは、これらのCLOSE_WAIT状態を検出できるPHPスクリプトによって起動されるため、エラーを表示し、そのポートを再利用しようとしません(「プログラムX」はビジー状態を維持しているため)。それは関連するプログラムを殺すのはかなり簡単ですが、私は再びセットアップするのに多くの時間がかかるので、したくないでしょう。

偽の「ACK」パケットを送信するこのperl scriptがあります。これにより、プログラムは接続が終了したとみなして接続を終了します。 PHPでこれを実現する方法はあります:

my $packet = Net::RawIP->new({ 
    ip => { frag_off => 0, tos => 0, saddr => $dst_ip, daddr => $src_ip}, 
    tcp => { dest => $src_port, source => $dst_port, seq => 10, ack => 1} 
}); 
$packet->send; 

私が言ったように:私は、すべての詳細を持っている、それだけで、実際のパケット生成だと私は必要があるとそれを送信します。 PHPからperlスクリプトを外部から起動する必要はありません。

答えて

0

SOCK_RAWでcreate_socket()を使用することは可能です。

ただし、ヘッダー(IP/TCP)の設定は生データでなければなりません。それは難しい。

PRNL(PHP Raw Network Library)を簡単にすることができます。

関連する問題