Skip to main content
 首页 » 编程设计

python之Twisted协议(protocol)的分层

2025年05月04日10傻小

我几乎明白了——但我遗漏了关键点......

我正在尝试弄清楚如何在 Twisted 中构建“分层”协议(protocol)栈。我可以理解一个人如何附加一个协议(protocol)并使用延迟处理事件,但是如果我想要传统的 OSI 层模型呢?假设我在 TCP 连接器的底部有一个面向线路的协议(protocol),并且我希望在到达应用程序空间之前将多个面向线路的协议(protocol)堆叠在顶部。

(想想我想在扭曲中实现 TCP/IP 堆栈本身)

请您参考如下方法:

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

  1. 物理:显然,Twisted 不是以太网电缆或物理交换机,因此它不能执行此操作。
  2. 数据链接:为了让 Twisted 在网络接口(interface)上运行,您的操作系统需要连接到物理网络。数据链路协议(protocol)通常需要在硬实时设备(通常是硬件)中实现,因此 Twisted 不适合这种情况。
  3. 网络:这一层,如果它与“传输”层不同,那么它就是 BGP 和路由器之类的东西,与您的应用程序不同。
  4. 传输:在这一层,我们有两个接口(interface),IProtocol和 ITransport .传输通过dataReceived将字节从传输到IProtocol,应用程序通过向传输传输字节ITransport.write()。 (然后在电线的另一端反转这种关系。)
  5. session :(这是隐式传输的一部分)
  6. 演示:类似于 CSS 样式表之类的东西
  7. 应用:显然 Twisted 不做这部分,你自己做。

然而,协议(protocol)内分层在某种程度上更具有临时性。现在通常的习惯用法是简单地子类化协议(protocol),然后从 dataReceived 委托(delegate)给一个新方法,特定于您的分层习惯用法,例如 lineReceived,然后让下一层向上子类化。

如果你真的想要一个使用 Twisted 的 TCP 实现,look here .

如果你想看到一个关于接口(interface)的提案,它将改进 Twisted 本身的分层,see here相反。