ping和心跳包的区别是什么?

12

在“心脏出血”漏洞之前,我从未听说过心跳。 我想知道这与ping的区别是什么,以及是否有其他信号来管理连接(同样,这些信号不是数据包)。


1
对我来说,ping 用于通信以查看是否有响应。心跳是本地计时器或类似的触发代码。 - kenny
1个回答

18

严格来说,ping是指使用ICMP ECHO请求来查看目标计算机是否可达。它测试网络,但不测试目标计算机是否能够有用地响应任何其他特定服务请求(我见过可以ping通但功能宕机的计算机;操作系统内核——响应ping的部分——正常工作,但所有用户进程都已停止)。

然而,这个术语已经扩展到包括任何类型的客户端发起的检查,以确定另一端是否在线,通常在感兴趣的协议内执行,以便找出目标机器是否能够执行有用的工作。

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

我认为ping和心跳是互补的:一个是为了让客户端了解服务是否可用,另一个是为了让服务提供商了解服务是否可用。(服务提供商可以使用ping,可能会通过他们的Nagios设置使用ping,但心跳监视器监视的是略有不同的事情——特别是内部计时器——并且实现相当便宜,因此没有理由不使用心跳监视器。)


具有讽刺意味的是,Heartbleed漏洞在我认为是ping机制的东西中。但它之所以被称为这个名字,是因为它基于(误)实现的SSL Heartbeat扩展。术语经常被滥用……


好的回答。你能指出一些关于网络非硬件方面的文献吗?有些东西可以解释ping和协议,但不涉及路由器和交换机。 - Quora Feans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接