2

私はほとんどそれを持っています-しかし、私は重要なポイントを逃しています.....

Twistedで「階層化された」プロトコルスタックを構築する方法を理解しようとしています。単一のプロトコルをアタッチし、Defersでイベントを処理する方法は理解できますが、従来のOSIレイヤーモデルが必要な場合はどうでしょうか。TCPコネクタの下部に回線指向のプロトコルがあり、アプリケーションスペースに到達するまで、複数の回線指向のプロトコルを上部にスタックしたいとします。

(TCP / IPスタック自体をツイストで実装したいと思ったと思います)

4

1 に答える 1

0

OSI 階層化モデルはTwisted とはほとんど関係がありません (そして、一般的なソフトウェアとはほとんど関係がないと思います)。一度に各レイヤーを見る:

  1. physical: 明らかに、Twisted はイーサネット ケーブルや物理スイッチではないため、これを行うことはできません。
  2. データ リンク: Twisted をネットワーク インターフェイスで実行するには、オペレーティング システムを物理ネットワークに接続する必要があります。データリンク プロトコルは通常、ハード リアルタイム機器 (多くの場合ハードウェア) に実装する必要があるため、Twisted はそれに適していません。
  3. ネットワーク: このレイヤーは、「トランスポート」レイヤーとは異なる場合、BGP やルーターなど、アプリケーションとは別に発生しているものです。
  4. トランスポート: このレイヤーには、 と の 2 つのインターフェイスがIProtocolありITransportます。トランスポートはトランスポートからviaIProtocolにバイトdataReceived配信し、アプリケーションはを介し​​てトランスポートにバイトを配信します。(この関係は、ワイヤのもう一方の端で逆になります。)ITransport.write()
  5. session: (これは暗黙的にトランスポートの一部です)
  6. プレゼンテーション: これは、CSS スタイルシートか何かのようなものです
  7. アプリケーション: 明らかに Twisted はこの部分を行いません。自分で行います。

ただし、プロトコル内レイヤリングは、よりアドホックです。現在の通常のイディオムは、単純に Protocol をサブクラスdataReceived化してから、 などのレイヤー化イディオムに固有の新しいメソッドに委譲しlineReceived、次のレイヤーをサブクラス化することです。

実際に Twisted を使用する TCP 実装が必要な場合は、こちらを参照してください

Twisted 自体のレイヤリングを改善するインターフェースの提案を見たい場合は、代わりにこちらを参照してください。

于 2012-10-02T18:50:03.270 に答える