Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 发送数据包所需的最小数据量是多少?_C_Packet - Fatal编程技术网

C 发送数据包所需的最小数据量是多少?

C 发送数据包所需的最小数据量是多少?,c,packet,C,Packet,首先是一个小背景:我有一个聊天应用程序的想法。我不希望用户需要输入连接细节,所以我想我可以发送一个定制的以太网数据包类型。该数据包由对等方接收;生成用户应用程序中每个对等方的数据库。我不想在生成原始数据包时过于复杂。发送成功接收的数据包所需的最小数据量是多少?是否存在任何特殊情况,其中最小数据包将使用某些硬件而不是其他硬件正确传输 让我澄清一下,并明确地说:我问的是数据包中传输和接收该数据包所需的最小信息量是多少。可以在以太网数据包中找到的信息示例包括IP地址、硬件地址、生存时间等 发送请求所需

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

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

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

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

更简单的方法是使用UDP/IP。UDP的设计是最小的。 UDP的wiki页面将告诉您UDP数据报的标题大小。 别忘了将IP报头(再次添加wiki)和以太网帧(同上)添加到该文件中。 最后你需要一个有效载荷

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

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

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

你为什么要把生活复杂化?使用可移植协议,例如TCPIt对我来说更像是一个编程挑战。如果我想让现有的聊天程序或服务变得简单的话,我也可以轻松地使用它。听起来你在寻找多播IPI。我似乎很清楚用户在问什么。本质上,他们希望IP协议的必要部分能够传递数据包(针对他们的特定用例)。是的,可能会有更好的答案(当然有),但这个问题很有趣,而且可以回答,即使这是不可取的。@SeanPedersen您使用的是哪一级别的协议栈?如果要发送以太网帧,以太网负载的最小大小为46字节。(但以太网不可靠,您也不能在本地网络之外发送以太网帧)。如果要发送IP数据包,它们的最小有效负载长度为0字节(但不可靠)。Flexo也建议使用多播IP(当然与UDP一起使用)。这将在基于对等的协议中节省大量数据包的复制。您的所有对等方可以位于同一个多播地址,然后交换机将为您完成所有工作。