首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP窗口大小libnids

TCP窗口大小libnids
EN

Stack Overflow用户
提问于 2011-09-25 05:43:36
回答 1查看 641关注 0票数 1

我的意图是写一个应用程序。libnids之上的层进程。之所以使用libnids API,是因为它可以模拟Linux内核TCP功能。Libnids将返回hlf->count_new,它是自上次调用TCP回调函数以来的字节数。但是,每当有新的数据包传入时,tcp_callback都会被调用,因此hlf->count_new包含单个TCP段。

然而,这款应用。层应该接收TCP窗口缓冲区,而不是单独的TCP数据段。

有没有办法获取TCP窗口(而不是TCP数据段)的数据?换句话说,为了让libnids传递TCP窗口缓冲区数据。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-25 07:55:24

你误会了。TCP窗口旨在控制传输中的数据量。应用程序读取并不总是触发TCP窗口更改。所以你所寻找的信息在你所寻找的地方是不可用的。

例如,假设窗口是128KB,并且已经发送了8个字节。无论应用程序是否读取这八个字节,接收TCP堆栈都必须确认它们,否则TCP连接将超时。现在假设应用程序读取一个字节。对于TCP堆栈来说,将窗口放大一个字节是没有意义的--如果窗口缩放正在使用中,那么即使它想要这样做,它也不能这样做。

然后呢?如果四秒钟后应用程序读取了另一个单字节,是否再次调整窗口?有什么意义呢?

该窗口的目的是控制两个TCP堆栈之间的数据流,防止缓冲区无限增长,并控制“传输中”的数据量。它只是间接反映应用程序从TCP堆栈读取的内容。

同样奇怪的是,你甚至想要这个。即使你能知道应用程序读取了什么,这对你有什么用处呢?

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

https://stackoverflow.com/questions/7542137

复制
相关文章

相似问题

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