【问题标题】:What is the minimum amount of data required in order to send a packet?发送数据包所需的最小数据量是多少?
【发布时间】:2014-12-04 00:15:32
【问题描述】:

首先有一点背景:我有一个聊天应用程序的想法。我不希望用户需要输入连接详细信息,所以我想我可以发送自定义以太网数据包类型。该数据包被对等方接收;生成用户应用程序中每个对等点的数据库。我不想使生成原始数据包变得过于复杂。发送成功接收的数据包所需的最小数据量是多少?是否存在任何特殊情况,即最小数据包可以通过某些硬件而不是其他硬件正确传输?

让我澄清一下,明确一点:我问的是要传输和接收的数据包在数据包中所需的最少信息量是多少。可以在以太网数据包中找到的信息示例包括 IP 地址、硬件地址、生存时间等。

【问题讨论】:

  • 为什么你的生活过于复杂?使用可移植协议,例如TCP
  • 这对我来说更像是一个编程挑战。如果我想让现有的聊天程序或服务变得简单,我可以同样轻松地使用它。
  • 听起来你在找组播IP
  • 对我来说用户在问什么似乎很清楚。本质上,他们希望 IP 协议的所需部分来传递数据包(针对他们的特定用例)。是的,可能有更好的答案(肯定有),但这个问题很有趣且可以回答,即使不建议这样做。
  • @SeanPedersen 您在哪个级别的协议栈上工作?如果要发送以太网帧,最小以太网有效负载大小为 46 字节。 (但是以太网不可靠,也不能在本地网络之外发送以太网帧)。如果要发送 IP 数据包,它们的最小有效负载长度为 0 字节(但不可靠)。

标签: c packet


【解决方案1】:

发送数据所需的最少数据量是多少? 成功接收数据包?

如果您不打算通过 Internet 发送此信息,则根本不需要使用 IP。 如果您愿意,可以在您的 LAN 上使用自定义网络层。 还有一些现有的非 IP 协议 (IPX) 可能适合您的需求。 IPX 的设置相对简单,但如果有人发现你使用它,他们会生你的气。 (我也不知道Windows自winxp以来是否支持IPX)。 那将是艰难的道路。

更简单的方法是使用 UDP/IP。 UDP 被设计为最小化。 UDP 的 wiki 页面将告诉您 UDP 数据报的标头大小。 不要忘记在其中添加 IP 标头(再次 wiki)和以太网帧(同上)。 最后你需要一个有效载荷。

有很多选择。这在很大程度上取决于您打算使用的网络基础设施。如果您的基础架构是 IP over Ethernet,那么您将无法使用它!

是否存在任何特殊情况下最小数据包将 使用某些硬件而不是其他硬件正确传输? 如果您遵守标准:不。如果您标榜标准:很有可能。

在您的后一个问题中,您似乎暗示您想使用“聪明”的技巧来最小化数据包大小(即遗漏标头的非关键部分),但我重复一遍:不要反对标准。 如果抓住你这样做,人们会对你非常失望,你会失去所有的朋友。

【讨论】:

  • 多播IP(当然与UDP一起使用)也是Flexo的一个很好的建议。这将在基于对等的协议中节省大量数据包的复制。您的所有对等点都可以在同一个多播地址上,然后交换机将为您完成所有工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2015-11-07
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多