2

私は、リモートPCからIPパケットを受信するUSB​​デバイスを含むプロジェクトに取り組んでいます。リモートPCにIPアドレスを割り当てます。私はいくつかの方法で生のIPパケットを送信することを試みてきました:

1-rawソケット:pingは正常に機能し、tcpの送信に問題があります

2-tun / tap W32:pingを送信してphyイーサネットデバイスに返すのに十分な動作をすることができましたが、ドライバーGUIDでReadFile(...)を使用して読み取ることができませんでした。

3-winpcap:pingは機能し、tcpがwiresharkに表示されます(したがって、PCを離れると思います)が、synにackが表示されることはありません。また、私がackを取得した場合、WindowsTCPスタックが最初に送信するのではないかと心配しています。

私たちの目標は、クライアントPCからネットワークへの透過的なパススルーになることです。クライアント<-wrappedippacket-> [device] <-wrapped ip packet-> WinPC <-IP-> IpNetwork

私がこれを間違えている可能性は、これはもっと簡単なはずだと思われます。

私は、Windowsがこのための理想的なOSではない可能性があることを認識していますが、OSを制御することはできません。

前もって感謝します

4

1 に答える 1

1

TCP Syn パケットが ack されないという問題を修正しました。TCP ヘッダー チェックサムを計算するときに疑似ヘッダーを含めるのを忘れていたことが判明しました。これで、tcp ハンドシェイクが完了したように見えるので、この問題は解決したと言えます。これを達成するためのより良い方法をお勧めしたい場合は、遠慮なく返信してください。今のところ、winpcap メソッドを使用するようです。

更新: Windows が常に RST を使用せずに tcp 接続を実行するには、パケットを送信するアダプターでインターネット接続の共有 (ICS) を有効にする必要があります。それ以外は、これがうまくいきました。

于 2010-11-18T22:43:47.967 に答える