运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

TCP Keepalive是确定断开链接的唯一机制吗?

运维开发网 https://www.qedev.com 2020-07-15 14:29 出处:网络 作者:运维开发网整理
我最近遇到了一个问题,即TCP服务器和客户端之间的中间链接已关闭.如果主服务器已关闭,则客户端需要连接到辅助服务器.当主服务器被购买时(例如,在终端上执行^ C),有TCP关闭序列通过,客户端成功检测到断开的链路并尝试辅助.但是,如果中间链路出现故障,客户端和服务器将不知道它.客户端可以检测到的唯一方法是当TCP bufferes被错误的“发送”操作填满时. 作为解决方案,已经使用了“TCP Ke
我最近遇到了一个问题,即TCP服务器和客户端之间的中间链接已关闭.如果主服务器已关闭,则客户端需要连接到辅助服务器.当主服务器被购买时(例如,在终端上执行^ C),有TCP关闭序列通过,客户端成功检测到断开的链路并尝试辅助.但是,如果中间链路出现故障,客户端和服务器将不知道它.客户端可以检测到的唯一方法是当TCP bufferes被错误的“发送”操作填满时.

作为解决方案,已经使用了“TCP Keepalive”机制.这令人满意.

我的问题是’TCP Keepalive’唯一的解决方案?

-Prabhu

Keepalive旨在处理所谓的半开连接,当其中一方(通常是接收请求的服务器)不知道连接被破坏时.客户端通常知道它,因为尝试向服务器发送请求将返回错误.

另一种选择是让监听器保持运行 – 当客户端检测到通信问题时,它只是尝试再次连接到服务器.服务器获取传入连接,检查它是否来自同一IP地址,如果是这种情况,则关闭打开的连接并建立新连接.

但是如果客户端不知道连接断开而服务器需要发送内容,那么服务器就无法重新建立连接,而是TCP keepalive.

如果您不想使用keepalive,则可以使用应用程序级别的keepalive,例如发送类似应用程序的回显消息.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消