扭曲的协议分层

时间:2012-10-02 15:15:11

标签: python protocols twisted

我差不多了 - 但我缺少关键点......

我试图找出如何在Twisted中构建“分层”协议栈。我可以理解一个人如何附加单个协议并使用Defers处理事件,但是如果我想要传统的OSI图层模型呢?假设我在TCP连接器的底部有一个面向行的协议,我希望将多个面向行的协议堆叠在顶部,直到我到达应用程序空间。

(想想我想用扭曲的方式实现TCP / IP堆栈)

1 个答案:

答案 0 :(得分:0)

OSI分层模型主要与Twisted无关(而且,我认为,通常与软件无关)。一次查看每一层:

  1. physical:显然,Twisted不是以太网线或物理交换机,所以不能这样做。
  2. 数据链接:为了使Twisted在网络接口上运行,您的操作系统需要连接到物理网络。数据链路协议通常需要在硬实时设备中实现,通常是硬件,因此Twisted不适合。
  3. 网络:这个层,如果它与“传输”层不同,那么就像BGP和路由器这样的东西,以及与你的应用程序不同的东西。
  4. transport:在此层,我们有两个接口IProtocolITransport。传输通过IProtocol传输中的字节传递到dataReceived,并且应用程序通过ITransport.write()将字节传递到传输。 (然后在导线的另一端反转这种关系。)
  5. 会话:(这是传输的隐含部分)
  6. 演示文稿:这就像CSS样式表或其他东西
  7. 申请:显然Twisted不做这部分,你自己做。
  8. 然而,协议内分层在某种程度上更具临时性。现在通常的惯用法是简单地将Protocol子类化,然后从dataReceived委托给一个特定于你的分层习语的新方法,比如lineReceived,然后有下一层的子类。

    如果您确实需要使用Twisted的TCP实现,look here

    如果您想查看可以改善Twisted内部分层的接口提案,请转而使用see here