TCP Keep-Alive 是双向的吗?
我在 iPhone 应用程序和 NodeJS 服务器之间使用 tcp 套接字连接来实时传输数据。当客户端连接到服务器时,我在套接字上启用“保持活动”,以帮助防止因不活动而“静默”断开连接。
从服务器到客户端的保持活动“ping”是否是单向的? TCP 连接的客户端是否具有任何固有的智能来检测 ping 是否停止到达?
I'm using a tcp socket connection between an iPhone app and a NodeJS server to transmit data in real time. When a client connects to the server, I'm enabling "keep-alive" on the socket to help prevent "silent" disconnects from inactivity.
Are the keep-alive "pings" uni-directional from the server to client? Does the client side of the tcp connection have any inherent intelligence to detect if the pings stopped arriving?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您通过 socket() 在 Unix 套接字上使用 TCP keepalive,则服务器必须使用 ACK 进行响应,否则套接字将在达到超时和重试后认为连接已死亡。
链接的 RFC 讨论了顶级 keepalive:
https://www.rfc-editor.org /rfc/rfc1122#page-101
If you are using TCP keepalives on a Unix socket via socket(), then the server must respond with an ACK or the socket will assume the connection is dead after the timeouts and retries have been reached.
The linked RFC discusses top keepalives:
https://www.rfc-editor.org/rfc/rfc1122#page-101