协议/数据包设计问题

时间:2010-04-04 14:43:58

标签: protocols packet

我正在寻找一个设计客户端 - 服务器应用程序的协议,并需要一些链接到一些可能对我有帮助的资源。

最重要的是我正在尝试创建自己的“数据包”格式,以便最大限度地减少发送的信息量。我正在寻找一些资源来剖析他们的协议,但似乎有些完全缺乏数据包设计,例如SMTP(它只发送由CLRF终止的字符串)。在使用自定义数据包的系统上使用SMTP等系统的优点/缺点是什么? SMTP不能只使用几个字节来通过位标志覆盖所有命令并节省带宽/空间吗?

试图让我全神贯注。

4 个答案:

答案 0 :(得分:1)

是的,但SMTP并未针对空间进行特别优化,也不是基于数据包的协议。它位于TCP之上,并使用TCP的流功能。您需要确定协议中需要什么:性能敏感吗?潜伏?带宽?

是否需要以超级用户身份运行?如果没有,您可能想要使用UDP或TCP。

您需要在交货时提供担保吗?如果是这样,TCP可能是您的最佳选择,除非您处理相当极端的性能或尺寸问题。

现在很少有协议设计单个数据包,尽管许多协议使用TCP或不太常见的UDP在线路上发送非常具体的数据结构。

如果您想真正优化空间或带宽,请考虑尽可能将数据压缩到单个位和字节中,并定义和打包结构以通过TCP发送它。现代网络适配器无论如何都针对TCP进行了优化,其他策略通常没什么优势。

答案 1 :(得分:1)

首先,您要实施增强型传输协议(如UDP之上的RTP)还是应用程序协议(如HTTP / SMTP)?

在有关协议设计或应用程序要求的两种情况下,您应该考虑以下几点: 基于流或基于数据包, 单向/双向, 有状态的,会议的或州, 可靠或尽力而为, 时间要求, 流量/拥塞控制, 安全或平原。

对于应用层协议,您还应该考虑: 文本或二进制数据,应用程序数据到网络数据单元/数据包的映射,安全要求和完整性等。

答案 2 :(得分:0)

SMTP,HTTP和其他基于TCP的协议不关心数据包设计,因为它们是基于流的。因此,谈论协议设计更有意义。

至于为什么使用基于文本的协议与二进制协议...

Wireshark这样的数据包嗅探程序对协议的可读性非常有用。

通过指定纯文本,只需远程登录到您的端口并能够与服务器通信,这通常非常有用。

对于像HTTP这样的协议,实际资源通常是通信的有效负载,资源可以是二进制或任何其他指定格式。因此,只使用纯文本中的标题和状态并不是一件坏事。

答案 3 :(得分:0)

  • TCP是一种基于的协议,而不是基于数据包的。
  • 使用带行的文本可以更轻松地进行即席调试
  • 使用带行的文本可以使用telnet
  • 练习您的协议