首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDP和TCP/IP数据包大小(以TOIT表示)

UDP和TCP/IP数据包大小(以TOIT表示)
EN

Stack Overflow用户
提问于 2021-06-04 19:36:14
回答 1查看 98关注 0票数 0

在使用运行在esp32上的UDP服务器进行实验时,我发现接收到的数据包的大小限制为1500字节: 20 (IP报头)+8 (UDP报头)+ 1472 (数据)(尽管在理论上UDP似乎可以支持高达64K的数据包数据)。这意味着,为了传输更多的数据,客户端必须将其拆分成几个块并逐个发送,并且在服务器端需要恢复这些数据。我认为这样的解决方案的开销会相当高。我还知道TOIT提供TCP/IP连接。当然,在TCP/IP的情况下,数据包大小也是有限的。这是64K (65535字节)。TOIT是否对TCP/IP连接有任何额外的限制,或者对于TOIT来说64K值也是事实?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-10 20:17:18

this问题/答案中所述,这是避免数据包碎片的问题。发送超过此大小的数据包将迫使系统将它们拆分成多个大小为MTU的片段,每个片段都是不可靠的。由于嵌入式系统上的内存已经非常有限,因此发送大型(> MTU)包,其中所有片段都必须在处理之前到达,这对于整个应用程序行为来说可能是非常不幸的,因为它可能会超时或耗尽内存。

相反,应用程序应该考虑流管道(甚至可能是TCP来处理不可靠的方面)。

因为TCP/IP是一种流协议,所以可以发送任何大小的“包”,因为它们被自动分割成大小为MTU的片段。请注意,数据是在“随机”-sized包中接收的,尽管字节的顺序被完全保留。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67836543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档