【问题标题】:What events make TCP in linux kernel send out packets什么事件使linux内核中的TCP发送数据包
【发布时间】:2017-02-26 09:42:31
【问题描述】:

由于 TCP 向用户空间异步发送数据包,即用户空间数据在发送缓冲区中排队,并在拥塞控制和其他算法允许时发送出去,所以我想知道究竟是哪些事件,触发 TCP 检查是否它可以发送更多的数据包。

我的猜测是

  • 当用户空间应用程序尝试发送更多数据时
  • 当收到 ACK 并且 TCP 假定它可以发送更多数据时

也许我的假设有误,或者我错过了其他情况。请纠正我。

【问题讨论】:

    标签: tcp linux-kernel network-programming


    【解决方案1】:

    当用户空间应用程序尝试发送更多数据时

    是的。当应用程序对套接字进行写操作时,它会通知 TCP 其发送数据的意图。根据窗口大小、收到的 ACK 等方面的套接字状态,它将做出 最终 决定,将其通过网络发送出去。

    当收到一个 ACK​​ 并且 TCP 假设它可以发送更多数据时

    是的。如果它早些时候重新传输,现在 ACK 确认它们,这将是 TCP 的一个信号,表明它可以发送迄今为止尚未发送的新段。

    【讨论】:

    • 谢谢。这些是触发数据包可能被发送出去的唯一场景吗?
    • 重传超时是另一种情况。
    猜你喜欢
    • 2021-06-25
    • 2019-02-14
    • 2018-02-28
    • 2010-12-21
    • 2012-05-17
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    相关资源
    最近更新 更多