2016-01-21 80 views
3

我看到一些服务器将通过发送[FIN,ACK]停止连接一旦单个请求完成继续接收后使用相同的连接[FIN,ACK]

从维基,

连接可以是“半开”的,在这种情况下,一方终止了它的结束,但另一方没有。已终止的一方不能再向连接发送任何数据,但另一方可以。终端方应继续读取数据,直到另一方终止。

如果我想通过避免每次请求重复握手来加速请求。即使服务器终止了它,客户端是否可以继续进行通信?请问服务器或服务器是否有任何响应,但没有响应就读取我的请求?

+1

维基百科的常见垃圾。除非您的应用协议另有要求,否则您可以忽略最后一句。 – EJP

回答

3

通常,当您终止 TCP半连接,就意味着你与沟通完成,你就等着你的合作伙伴(无论是服务器,客户端或等于对应)来完成它的传输。当你的伙伴准备好时,他终止他的一半,然后关闭TCP连接。

所以如果一台服务器已经终止了它的结束,你仍然能够可靠地发送数据,但是不能够得到任何结果。

如果你不想在TCP中握手,为什么不采取没有握手协议?例如UDP,特别是如果消息不重且强烈。

+0

如果我仍然可以在没有任何响应的情况下发送数据,服务器会处理我发送的数据吗? –

+0

我无法控制协议。我想尝试加速TCP连接时的服务器关闭连接每个请求 –

+2

@IsoletChan它取决于服务器。它可以继续阅读,直到你没有关闭你的一方。它可以在关闭写入端后立即销毁相关的套接字结构。它可以继续阅读,但会意识到它无法回答你时会破坏连接。完全取决于实施。你试一试。 – Vovanrock2002

相关问题