首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当应用层更改为发送小数据包时,TCP的行为将是什么?

当应用层更改为发送小数据包时,TCP的行为将是什么?
EN

Network Engineering用户
提问于 2020-01-16 06:40:30
回答 1查看 68关注 0票数 0

假设我有一个将数据包本身分割的应用层协议。因此,如果它有100 MBytes的数据,那么它将将数据分成10000段,并将每个段分别发送给TCP。TCP将不必进行重新排序。那么,这种行为会改变网络的任何参数吗?我的吞吐量会更低吗?或者,与只向TCP发送一次数据的应用层协议相比,TCP的拥塞控制算法是否同样有效?在某种程度上,我猜这类似于一个通过网络发送太多小数据的系统(鼠标流量)。但我不确定这会产生什么效果。

EN

回答 1

Network Engineering用户

回答已采纳

发布于 2020-01-16 07:30:24

TCP将不必进行重新排序。

它这样做了,没有办法阻止它。

如果您的应用程序发送(非常)小块数据,TCP试图收集它们并以更大的段进行传输。收集有一个短暂的超时(默认情况下为200 ms,参见Nagle的算法),当应用程序中没有更多的数据时,当前的TCP段将被发送出去。这可能会增加延迟,您可以使用TCP_NODELAY套接字选项和PSH标志告诉TCP立即发送和转发每个块,这可能会增加开销和浪费带宽。

如果应用程序已经处理了数据分割、重新排序、拥塞控制和传递确认,则可能需要考虑允许应用程序完全控制的UDP。然而,试图重新发明TCP通常是失败的。

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

https://networkengineering.stackexchange.com/questions/64593

复制
相关文章

相似问题

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