为什么在需要3次TCP握手的客户端发送的ACK中,为什么不能在第三步开始发送数据?服务器一旦收到数据就知道客户端是否活着.
问问题
244 次
2 回答
1
没有什么禁止客户端在包含 ACK 的段中包含数据。
但是,客户端不应延迟发送此 ACK 以等待应用程序发送数据,因为它可能会影响服务器上的 RTT 估计。如果使用 SYN-cookies 的服务器没有立即得到 ACK,它们可能会超时。
于 2013-10-04T00:05:20.543 回答
1
典型的套接字编程 API 将在“open”方法处阻塞,直到它收到来自主机的 syn+ack。通信层应该在收到它后立即发送它的重新确认,即使由于客户端将处于“打开”方法中,它不会有任何数据要发送。
如果套接字 API 包含一个“openAndSend”方法,该方法将尝试打开一个套接字并在尝试成功时发送一些数据,那么一旦它从主机接收到 syn+ack,它就可以准备好传输数据。如果应用程序将使用大量短期连接,这样的事情可能是值得的,但我从未使用过这样的功能,也不知道它的支持程度。
于 2013-10-04T00:12:08.963 回答