Network programming 如何在不使用ICMP的情况下测试连接性?

Network programming 如何在不使用ICMP的情况下测试连接性?,network-programming,Network Programming,在我们的系统中,我们使用ICMP消息测试不同节点之间的连接。但是出于安全考虑,我们的客户需要禁止这种保持活力的机制。因此,我们必须用其他一些协议消息替换ICMP消息。目前,我们的解决方案是使用TCP。显然,此解决方案至少有两个缺点: 1.在一个TCP连接上发生的故障不一定意味着其他TCP连接上也发生了同样的情况,也不意味着较低层的连接(例如,IP)故障。 2.建立TCP连接和发送/接收TCP消息非常耗时,这是对我们现有连接测试计划的另一个挑战 我想知道除了TCP之外,是否还有其他解决方案可以满足

在我们的系统中,我们使用ICMP消息测试不同节点之间的连接。但是出于安全考虑,我们的客户需要禁止这种保持活力的机制。因此,我们必须用其他一些协议消息替换ICMP消息。目前,我们的解决方案是使用TCP。显然,此解决方案至少有两个缺点: 1.在一个TCP连接上发生的故障不一定意味着其他TCP连接上也发生了同样的情况,也不意味着较低层的连接(例如,IP)故障。 2.建立TCP连接和发送/接收TCP消息非常耗时,这是对我们现有连接测试计划的另一个挑战


我想知道除了TCP之外,是否还有其他解决方案可以满足我们的要求。

您到底想测试什么?如果TCP失败,您仍然可以连接是什么意思?您尝试在哪些系统上连接?对于1的缺点。。。如果连接发生错误,您不必关闭服务器,那么其他连接都不必因此而断开。对于2个缺点。。。我认为这是实现稳定性的方法,那么对阿里来说是值得的,我们的目的只是检测对等方是否还活着(能够ping)到memosdp,我们的系统是WindRiver linux。对于第一个缺点,需要考虑的是:即使测试连接断开,我们仍然无法判断连接状态,因为其他常规连接可能保持良好。因此,它不能像最初的ICMP那样实现目标。这在很大程度上取决于系统架构。如果您可以访问所有设备(监视和监视),则基本上可以使用任何类型的协议(TCP和UDP可能只是一些可能性)。如果您不想使用TCP,只需使用UDP(如保持活动状态),并在受监控设备上实现一些简单的服务,这些服务将响应它从受监控设备接收到的每个UDP数据包。无响应=无连接。这将是非常轻量级的,并且很容易实现和维护。