首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IP数据报中的有效载荷/数据大小是如何确定的?

问IP数据报中的有效载荷/数据大小是如何确定的?
EN

Stack Overflow用户
提问于 2013-11-22 01:06:55
回答 1查看 2.3K关注 0票数 0

我正在检查用Wireshark捕获的数据包。

我理解IP数据报(数据包)中总长度字段的值是数据报的总大小,其中包括头和数据的大小。标头大小固定为40字节(封装TCP报头为20字节,IP报头为20字节)。但是,在我的每个数据包中,我注意到数据的大小是可变的,从1字节到1500字节不等。

我的Java应用程序发送用头\x0b和预告片\x0c\x0d包装的消息。所以我的消息发送格式是:

0b讯息0c0d

但是,如果我检查Wireshark中发送的数据包,我可以看到一些数据包只包含数据中的0b。一些数据包包含0b +部分消息。

我很想知道为什么数据包的数据部分是可变的。

  1. 如何确定数据/有效载荷的大小?
  2. 谁决定有效载荷的大小?
  3. 我能控制我的应用程序中有效负载的大小吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-22 01:11:44

您的代码是以原子方式将字节发送到网络层,还是将字节分段发送到网络层?如果是分段的,有时网络堆栈将打开nagle算法,尝试将多个短TCP有效负载合并为一个大的有效负载,但这并不一定会发生。由于TCP是流协议,所以不能保证TCP数据包的数量等于调用TCP发送的次数。另外,还需要由您的接收代码沿着消息边界正确地分割TCP输入流。

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

https://stackoverflow.com/questions/20135072

复制
相关文章

相似问题

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