2

私はNATの実装を書いていますが、rawソケットを使用する必要があります。私はツイストアーキテクチャに慣れており、同時接続の処理方法が気に入っています。

Twistedプロトコルに入ってくるデータは、操作され、NATされ、表にされ、rawソケットに送信されます。rawソケットに入ってくるデータは、操作され、検索され、NATされ、適切なプロトコルインスタンスに送られます。

生のソケットは1つで十分でしょうか?同時に多数の接続が入った場合はどうなりますか。ツイストはそれを処理しません、またはツイストはコネクションレス型プロトコルではほとんど利点がありません。利点がある場合、誰かが私を生のソケットのねじれた例に導くことができます

4

2 に答える 2

3

Twistedは、コネクションレス型プロトコルを問題なくサポートします。たとえば、を参照してくださいlistenUDP

にはIPレベルのプロトコルデータを操作するためのモジュールがありますがtwisted.pair、すべてが機能するわけではありません。特に、tuntapサポートは機能しません

私が知っているこの例はありませんが、私が理解しているように、1つのrawソケットで十分です。ただし、独自のトランスポートを作成し、ソケットをIReadDescriptor/でラップしてIWriteDescriptor、を使用IReactorFDSetする必要があります。ただし、そもそもrawソケットが必要であることを十分に理解している場合は、これはそれほど難しいことではありません。

于 2012-10-31T08:02:18.767 に答える
0

ツイストソースコードを調べてみると、 twisted.pairが見つかります。これは、実際にはもう維持されていませんが、rawソケットを実行するために必要なものの約90%を提供します。

BSDで/dev/bpfを使用する方法を示すサンプルコードがどこかにあります。唯一の注意点は、それが純粋なpythonであるため、tcpdumpスタイルのパケットフィルター(ポート80およびホストblah.com)がないことです。消火ホースから飲む必要があります。

于 2013-11-08T15:22:02.653 に答える