OSI 階層化モデルはTwisted とはほとんど関係がありません (そして、一般的なソフトウェアとはほとんど関係がないと思います)。一度に各レイヤーを見る:
- physical: 明らかに、Twisted はイーサネット ケーブルや物理スイッチではないため、これを行うことはできません。
- データ リンク: Twisted をネットワーク インターフェイスで実行するには、オペレーティング システムを物理ネットワークに接続する必要があります。データリンク プロトコルは通常、ハード リアルタイム機器 (多くの場合ハードウェア) に実装する必要があるため、Twisted はそれに適していません。
- ネットワーク: このレイヤーは、「トランスポート」レイヤーとは異なる場合、BGP やルーターなど、アプリケーションとは別に発生しているものです。
- トランスポート: このレイヤーには、 と の 2 つのインターフェイスが
IProtocol
ありITransport
ます。トランスポートはトランスポートからviaIProtocol
にバイトをdataReceived
配信し、アプリケーションはを介してトランスポートにバイトを配信します。(この関係は、ワイヤのもう一方の端で逆になります。)ITransport.write()
- session: (これは暗黙的にトランスポートの一部です)
- プレゼンテーション: これは、CSS スタイルシートか何かのようなものです
- アプリケーション: 明らかに Twisted はこの部分を行いません。自分で行います。
ただし、プロトコル内レイヤリングは、よりアドホックです。現在の通常のイディオムは、単純に Protocol をサブクラスdataReceived
化してから、 などのレイヤー化イディオムに固有の新しいメソッドに委譲しlineReceived
、次のレイヤーをサブクラス化することです。
実際に Twisted を使用する TCP 実装が必要な場合は、こちらを参照してください。
Twisted 自体のレイヤリングを改善するインターフェースの提案を見たい場合は、代わりにこちらを参照してください。