数据在tcp套接字中保留多长时间和位置

时间:2016-01-13 15:59:02

标签: sockets tcp kernel tcp-ip

TCP发送器应用程序想要发送数据,因此它使用write()系统调用写入套接字,然后返回write()。现在,内核和NIC驱动程序在后台发生套接字,基于可以在线路上发送多少数据,保持tcp连接的属性(拥塞窗口和所有)。

现在,这些数据是否位于套接字中,直到从客户端返回成功的接收通知(TCP ACK)为止?

我想知道保留数据的时间和长度,以便在tcp数据包丢失的情况下再次发送数据。

1 个答案:

答案 0 :(得分:1)

TCP是一种可靠的传输方式。它自动处理重传。如果确实发生了数据丢失,则认为连接已断开/丢失,并且您的代码将在后续套接字操作上开始接收错误代码,直到您关闭套接字。您无需担心使用TCP手动重新传输数据(仅限UDP)。一旦数据在内核中,它就会为您处理剩下的事情。是的,数据位于内核中,直到对等方确认它为止,根据需要重新传输,直到套接字在内部超时。