【问题标题】:Does TCP use an own thread?TCP是否使用自己的线程?
【发布时间】:2015-04-23 10:09:33
【问题描述】:

TCP 在收到网络数据包时发送 ACK。它还会在发生超时时重新发送数据包。现在我的问题是:TCP 在哪个线程中执行此操作?是否有一个秘密的 TCP 后台线程来侦听接收到的数据包和超时并触发 ACK 的发送和重新发送?或者这仅在我在套接字上调用 receive 时同步发生?或者操作系统是否有自己的 TCP 守护进程来处理这个问题?

虽然我的问题涉及.net,但我认为它通常适用于任何语言的任何 TCP 实现。

【问题讨论】:

  • 这个问题的答案是去找一本关于这个主题的好书或课程——这是一个很大的问题。 TCP是网络堆栈中的一层;它由操作系统在内核模式驱动程序中管理(自然,因为操作系统必须对数据包进行排序并决定将它们路由到哪个应用程序)并且操作系统不仅可以使用多个线程,而且通常可以使用多个进程来完成所有这些.
  • @J...:嗯,你的评论已经几乎是一个答案:)。
  • @gexicide 我刚刚明白你的问题是什么意思......好吧,我同意 J......(:
  • @gexicide 是的,但它不是一个很好的方法,而且除了满足非常肤浅的好奇心(这不是真正的主题)之外,它通常不会有用。
  • TCP 在 TCP/IP 驱动程序堆栈中处理。它在环 0 处运行,因此它是一个内核线程。

标签: .net multithreading sockets networking tcp


【解决方案1】:

TCP 和套接字通常不依赖于语言,而是依赖于系统和架构。

解决您的问题:

TCP 在哪个线程中执行此操作? 绝对不是在任何应用程序线程上。通常,您无法真正定义它,因为在内核级别可能没有“线程”之类的东西。

是否有一个秘密的 TCP 后台线程来监听接收到的数据包和超时并触发 ACK 的发送和重新发送? 如果您认为操作系统是“秘密后台线程”,那么...是的。

或者这仅在我调用时同步发生,例如,在套接字上接收? 当您调用接收时,系统会检查其缓冲区中是否有任何传入数据包。但话又说回来,这可能或多或少取决于系统。

或者是否有来自操作系统的自己的 TCP 守护进程来处理这个问题? 或多或少是这样。

有关更多信息,您可能需要查看以下链接: http://en.wikipedia.org/wiki/Protocol_stack http://www.ece.virginia.edu/cheetah/documents/papers/TCPlinux.pdf

PS。我无法快速找到有关 Windows TCP/IP 实现的详细信息,但由于 winsocks 有点基于 BSD 套接字,我认为它是相似的。

【讨论】:

    【解决方案2】:

    在大多数现代通用操作系统中,包括 Linux、其他 Unix 和 Windows,这是在内核领域完成的,而不是在用户领域。在内核领域,这可以使用不同的机制来完成,包括内核线程,但大多数情况下,它是通过延迟超时请求和由特殊线程池执行的短任务来完成的。

    例如,在 McKusick & Co. 的经典著作“4.4BSD 操作系统的设计和实现”中,描述了几乎所有操作系统供应商克隆的原始 BSD 套接字实现,其中描述了 TCP 套接字的两个计时器,“快”和“慢”之一。当一个定时器触发时,一个动作被安排在所谓的“软中断”级别,在一个特定的进程上下文之外。与现代版本不同,此版本没有将此类活动附加到已声明的过程中。您应该阅读这本书(或其现代类似书),或其他一些经典系列——R. Stevens 的网络编程系列。我不知道对 Windows 有很好的模拟,并深入解释了 TCP/IP 堆栈的工作原理。

    【讨论】:

      【解决方案3】:

      简短的回答是它会神奇地发生,您无需担心。但这不是你想知道的。

      操作系统会这样做。传入的网络数据包会导致 NIC 出现中断问题。此中断由驱动程序处理并最终传递给操作系统的 TCP 组件。 TCP 组件然后执行将数据包传递到应用程序所需的操作。这可能意味着完成一个未完成的数据 IO 请求或排队等待稍后获取的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-10
        • 1970-01-01
        • 2011-03-07
        • 2014-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多