-->

TCP连接的,如果没有数据(TCP disconnection if no data)

2019-10-19 02:17发布

我已经签出TCP协议的Wiki,但还没有找到,如果如果没有数据在长周期转移套接字连接将会超时。 我的意思..就不会有生理上的问题,但两台电脑将只是没有数据相互发送了一段时间。 仍然将如何连接存在吗? 会不会有一些低级别的数据传输,以帮助它了解它不破?

谢谢! 很抱歉,如果问题是哑巴..

Answer 1:

没有数据通过网络发送,以保持TCP连接。 您可以发送一个网络层保活通过发送简单的()荷兰国际集团无论从对零字节的数据包或启用套接字选项有操作系统定期向他们发送给你。 在我看来,应用层保持活动(您的应用程序协议对其进行管理)提供更好的设计/ relability比传输层machinary。

当desinging层叠在获得最大的可靠性,它通常需要您掺入某种非操作(NOOP),平,心跳的协议设计内TCP上的应用协议。

这是非常重要的,因为,例如,如果你的服务器监听来自客户端的请求,客户端被关闭的连接是由TCP会话基本上是孤儿后,你的服务器可能最终会听下去。 如果没有数据发送或接收不能被检测到连接中断!

如果服务器至少定期发送空操作/平/心跳传出请求将触发TCP层重传/超时machinary,然后服务器将能够检测死连接。 相反,如果你的应用程序发送一个应用层的“ping”或“嗨,你怎么样?” 消息你可以更进一步,用它来打听同行的状态,而不是简单的底层连接。

例如,如果一个对等体陷入无限循环或它的磁盘驱动器上的火TCP持久本身并不能帮助你理解和retact的根本问题。



Answer 2:

TCP连接将保持打开状态,直到两端将其关闭。

虽然知道,防火墙和NAT尤其网关往往会超时的TCP连接的条目,这意味着如果你的连接经过一个,发送数据可能会出错误如果网关已经取消了该TCP连接的映射。 只有阅读从TCP连接的网关超时,除非你有某种心跳在你的应用协议或启用TCP保活不会被检测到。



Answer 3:

连接经常保持开放使用保持连接 。



Answer 4:

没有也不会。 如果您需要任何一方断开没有数据被转移,则需要自己实现它,使用某种形式的“保活”机制。



文章来源: TCP disconnection if no data