【问题标题】:How is the window scale set/calculated in the TCP/IP implementation of the Linux kernel?Linux内核的TCP/IP实现中的窗口比例是如何设置/计算的?
【发布时间】:2016-05-17 14:35:58
【问题描述】:

有人能指出内核源代码树中的确切位置以及如何在 linux 内核中计算/设置 TCP 数据包的窗口比例的确切算法吗?

大多数其他 TCP 选项(如 ttl 和窗口缓冲区大小)似乎直接硬编码在内核中。

【问题讨论】:

    标签: linux tcp linux-kernel network-programming


    【解决方案1】:

    根本不计算 TCP 数据包的窗口比例。 TCP 数据包没有窗口比例。连接有窗口比例,连接完成时它是固定的,基于套接字接收缓冲区的大小和可能的任何系统默认值,以这样的方式,任何 16 位按比例移位的值都可以包含整个套接字接收缓冲区.

    【讨论】:

    【解决方案2】:

    查看拥塞避免模块的最佳位置是在 Linux Reno 实现的 Linux 源代码中。您可以在 net/ipv4/tcp_cong.c 文件中找到它: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/ipv4/tcp_cong.c

    net/ipv4/tcp_input.c 文件调用模块,通常是了解整体逻辑如何工作的好地方:

    git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/ipv4/tcp_input.c

    此外,RFC 5681 详细指定了 Reno 拥塞控制操作,可能有助于理解内核代码。如果你觉得上面的文章太粗俗,可以看看下面的链接。它包含上述文章的摘录,但是它删除了一些冗余信息:

    github.com/romain-jacotin/quic/blob/master/doc/TCPCongestionControl.md

    【讨论】:

    • 拥塞避免!=窗口比例。
    猜你喜欢
    • 2012-04-02
    • 2012-02-09
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2020-08-31
    • 2011-12-14
    相关资源
    最近更新 更多