TCP发送函数重传逻辑?

TCP发送函数重传逻辑?,tcp,send,Tcp,Send,当我们发送数据包并开始重新传输时,我们是否退出发送功能? 在我的例子中,我的应用程序获取了一个锁,并等待send返回,然后离开锁 但在我的场景中,它永远不会回来。我想知道,当我们有一个重新传输案例时,我们真的没有发送功能吗?发送功能将数据传输到套接字发送缓冲区,在没有足够空间时阻塞 确认后,数据将从套接字发送缓冲区中删除 当发送给对等方的数据未在适当的超时时间间隔内得到确认时,重新传输开始 重新传输和send()函数之间的交互基本上是这样的:如果数据没有被确认,它仍然在发送缓冲区中,这可能导致s

当我们发送数据包并开始重新传输时,我们是否退出发送功能? 在我的例子中,我的应用程序获取了一个锁,并等待send返回,然后离开锁


但在我的场景中,它永远不会回来。我想知道,当我们有一个重新传输案例时,我们真的没有发送功能吗?

发送功能将数据传输到套接字发送缓冲区,在没有足够空间时阻塞

确认后,数据将从套接字发送缓冲区中删除

当发送给对等方的数据未在适当的超时时间间隔内得到确认时,重新传输开始


重新传输和
send()
函数之间的交互基本上是这样的:如果数据没有被确认,它仍然在发送缓冲区中,这可能导致
send()
函数阻塞。

发送函数将数据传输到套接字发送缓冲区,在没有足够空间时阻塞

确认后,数据将从套接字发送缓冲区中删除

当发送给对等方的数据未在适当的超时时间间隔内得到确认时,重新传输开始

重新传输和
send()
函数之间的交互作用基本上由以下内容组成:如果数据未被确认,它仍在发送缓冲区中,这可能导致
send()
函数阻塞