作为一个相当新的(在世界上工作的)开发人员,我对ping的概念并不陌生,因为它是在uni中教给我的,而且我已经在各种各样的地方使用它了我之前遇到过的小作业。
我对它的理解是确定是否存在其他主机并在网络上响应。
我已经用Java(我最熟悉的语言)实现了一些代码,类似于下面想要实现ping的代码:
try {
String ip = "127.192.199.01";
InetAddress inet = InetAddress.getByName(ip);
System.out.println("Send ping-request to: " + ip);
if (inet.isReachable(5000)){
System.out.println(ip + " is reachable.");
} else {
System.out.println(ip + " NOT reachable.");
}
} catch ( Exception e ) {
System.out.println("Exception:" + e.getMessage());
}
然而,我对“浅”的概念很陌生。和#'深'在我目前的工作场所遇到过这种情况。
到目前为止,虽然我已经能够弄清楚深度ping基本上是关于测试所有连接是否存活并且正在通过尽可能多的webstack测试功能。
我的问题是:
浅浅的ping会怎样做?
然后,浅层和深层ping 之间的主要区别(如果有的话)是什么?
答案 0 :(得分:2)
浅静态通过向主机发送一个或多个(ICMP / ICMP6)回应请求数据包来工作,并且仅测试网络是否正常工作,即主机是否可从您的计算机访问。
深度ping通过测试应用程序来工作。如何实现深度ping取决于开发人员,但它可以通过“状态”端点响应当前应用程序状态或其他类似接口(如您已经提到的链接中所述)。
根据您的链接,深度ping也可能意味着测试整个子网或测试除标准Echo请求之外的其他协议。
答案 1 :(得分:1)
这听起来像是在不同的OSI层(https://en.wikipedia.org/wiki/OSI_model)
上执行主机可用性测试ping你如何知道它是在传输层上执行的,其中一个数据包被发送到另一台机器,操作系统用另一个数据包响应。
在这种情况下,您不知道除了干净的操作系统之外是否有任何应用程序在该节点上运行。
在OSI层中更进一步,您可以对业务逻辑执行测试,例如调用基于HTTP的REST API的API
答案 2 :(得分:1)
我的直觉是"浅平"表示使用标准ICMP请求执行的ping(我们知道的众所周知的ping命令),"深度ping"试图通过打开给定端口上的套接字来查看实际的远程服务,看看你是否得到任何答案
答案 3 :(得分:0)
我如何解释它:
浅平:主机可用,接受服务的端口正在接受。 (更像是telnet)
深度ping:您实际上正在点击其中一个服务并获得预期的响应。
同样,这些更像是自定义术语,而不是实际定义的标准。