【发布时间】: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