为什么在客户端发送的ACK中需要三次TCP握手,为什么不能在第三步开始发送数据呢?服务器一收到数据就会知道客户端是否还活着。
发布于 2013-10-04 08:05:21
没有什么能阻止客户端在包含ACK的数据段中包含数据。
但是,客户端不应延迟发送此ACK以等待应用程序发送数据,因为它可能会影响服务器上的RTT估计。而使用SYN-cookies的服务器如果不能立即获得ACK,可能会使它们超时。
发布于 2013-10-04 08:12:09
典型的套接字编程应用程序接口将在“打开”方法处阻塞,直到它从主机接收到syn+ack为止。通信层应该在收到该消息后立即发送其重新确认,即使客户端将处于"open“方法中,它也不会有任何数据要发送。
如果套接字API包含"openAndSend“方法,该方法将尝试打开套接字并在尝试成功时发送一些数据,则一旦从主机接收到syn+ack,它就可以准备好传输数据。如果应用程序将使用大量短暂的连接,那么这样的事情可能是值得的,但我从未使用过这样的函数,也不知道它在多大程度上得到了支持。
https://stackoverflow.com/questions/19171010
复制相似问题