网络编程。来自对端的数据有可能在本端的connect调用返回前到达套接字。这是如何发生的??

unix网络编程第16章最后个问答题。问题如下:在16.3节说过,来自对端的数据有可能在本端的connect调用返回前到达套接字,这是如何发生的??求助

正常的阻塞情况下,connect函数的调用,会引起客户端的TCP发送SYN包,然后等待接收服务端的SYN+ACK,
收到之后发送ACK,此时TCP链接已经建立,connect立即返回。

如果服务端在连接建立之后立即发送数据,而客户端却异常繁忙,虽然客户端的内核TCP协议栈中,链接已经建立起来了,
但是应用层的connect,却因为得不到调度而暂时无法返回,那么,服务端数据在connect返回之前到来也是有可能的。

这个属于异步窗口模式,在不等对方收到以前发送下个数据包,批量发送数据

connect没有返回,对于TCP连接来说,应该是三步握手还没完成吧?这样也可以传输数据吗?那个数据应该不算对端发过来的ACK吧

数据有异步或时间差的可能吧。connect没返回,并不意味着wish握手没完成