连接函数在发送最后一个ACK(启动TCP连接的三次握手的第三段)后返回。如果第3段丢失是因为listen仍然在等待服务器上的ACK但客户端没有人再次发送该ACK会发生什么?
答案 0 :(得分:3)
如果客户端使用数据包发送其ACK并且丢失,则客户端将注意到服务器未对数据进行ACK确认并重新发送数据包。
如果客户端在单独的数据包中发送其ACK并且丢失,则服务器将注意到客户端未对SYN / ACK进行ACK确认并重新发送数据包。客户端将通过重新发送ACK进行响应。
当时应用程序的连接调用是否仍在阻塞并不重要,因为ACK是由操作系统的TCP / IP实现完成的。