12

直到heartbleed bug,我才听说过心跳。我想知道这和 ping 有什么区别,以及是否有其他信号来管理连接(也不是数据包)。

4

1 回答 1

17

严格来说,ping 是指使用 ICMP ECHO 请求来查看目标计算机是否可达。它测试网络,但不是目标计算机是否能够有效地响应任何其他特定的服务请求(我见过可以 ping 的计算机但功能上已关闭;OS 内核 - 响应 ping 的计算机 -已启动,但所有用户进程都已死)。

但是,该术语已扩展为涵盖任何类型的客户端启动检查另一端是否启动,通常在感兴趣的协议内完成,以便您可以了解目标机器是否能够完成有用的工作。

对于心跳,我通常认为它们是服务定期将通知推送到其他地方的地方(而不是由客户端提示)。这个想法是,心跳监视器检测它是否有一段时间没有心跳信号,如果发生这种情况,则应用“紧急 CPR”(即重新启动服务)。它类似于硬件中的看门狗定时器。

我认为 ping 和 heartbeat 是相辅相成的:一个是让客户端知道服务是否启动,另一个是让服务提供者知道服务是否启动。(提供者可以使用 ping,并且可能通过他们的 Nagios 设置进行,但是心跳监控的东西略有不同——尤其是内部定时器——而且实现起来非常便宜,所以没有理由不使用它。)


具有讽刺意味的是,Heartbleed 漏洞出现在我认为的 ping 机制中。但之所以这样称呼,是因为它基于SSL Heartbeat Extension的(错误)实现。术语经常被滥用......</p>

于 2014-04-20T14:29:37.033 回答