Ping / Trace Route

我越来越多地看到程序员开发基于我所谓的“ping-then-do”心态的基于web的应用程序。 一个例子是在发送邮件之前ping邮件服务器的应用程序。 在另外一个论坛的一个激烈争论中,我发表了这样一个声明:“如果你要编写使用互联网的程序,你至less应该有一个关于基础的基本概念,而”ping-then-do“的愿望告诉我那许多人,不是。“

在这个论坛和Stack Overflow上,我看到很多关于ping / trace路由的问题,不知道为什么? 如果能在这里讨论一下,我想听听其他人的想法。 如果没有,我认为它会被迅速closures。

一个澄清 – 我想清楚,我正在谈论互联网stream量,而不是私人networking

根据我的经验,许多程序员不明白ping是什么,什么不是。 我经常遇到那些认为如果可以ping通某个东西的人,那么他们就可以使用在这个东西上运行的X服务。 也有人认为,如果他们不能ping通,那么他们就不能使用它。 这两个假设都是错误的。

话虽如此,我们不能把networking应用限制在只有那些完全了解networking的人,而不能把数据库应用限制在那些完全理解数据库的人。 如果我们这样做,我们会看到很less的应用程序和程序员会遇到很less的可教时刻。

我不相信这不属于元,但这是一个缓慢的早晨,所以有什么危害?

平特别是那些进入门槛低,为less量工作提供高度有用的工具之一。 这也是有人在networking学习的第一个诊断工具之一。 这意味着很多不同技能水平的人都会接触到它。

基本的机制是非常好的,直接暴露给最终用户。 新用户可以即时判断主机是否启动。 至less,这是他们认为他们看到的。 作为一个有经验的用户,你知道情况并非总是如此。 使用ping作为您唯一的诊断工具时遇到的问题是什么?

这不是一个指标,有什么事情是起起落落。 这是响应时间的指标。 缺乏答复对主机是否接收stream量没有任何影响,但是这是如何使用的,因为大多数主机响应ICMP数据包。 如果不响应ICMP,我仍然拥有相对知识渊博的用户,他们发誓远程服务器已closures。

结果是,只要用户不知道它的用途,就会有问题。 这些奖励是这些问题使我们有机会提高人们所要求的知识。

至于traceroute,这是一个非常复杂的工具,看起来很简单。 “如果我跟踪这个IP,我就能看到它和我之间的所有电脑”,就好像互联网是一系列的pipe道,就像地铁一样,你可以看到你和目的地之间的停靠。

如你所知,互联网并不是这样工作的。 路线总是在变化。 不能保证两个数据包将遍历相同的path(或者甚至ICMP响应将遍历源所采用的相同path)。 这并不意味着traceroute没有用处,而是需要更高水平的知识来解释。

再次,当人们提出traceroute问题时,我们应该把它看作是教育的一个机会,而不是滥用它们的借口。

error handling是编程中最被低估的能力,也是最less的testing。 如果一段代码做了“ping”或“traceroute”,那么它必须有很好的理由这样做。 例如,除了感知“我无法到达邮件服务器”之外,代码可能会详细阐述并将日志写入ping和traceroute转储。 如果您的networking拓扑结构错误,但是仅在凌晨4点,这可能非常有用。

首先检测服务故障,然后进行诊断。 通过判断主机诊断来暗示一切都是好的,这将是愚蠢的。

ping-then-do中的一个观点可能是大多数基于TCP的协议都有相当长的超时时间,程序员试图让用户无法等待。 但是,在这里做实际的ping仍然是错误的。 在单独的进程中检测邮件服务器故障,重新configuration为使用备份服务器。 没有使用ping,对于每个失败情况都有干净的解决scheme。

是什么促使我开始这项工作呢是因为我只是在问为什么有人在跟踪谷歌。

如果我告诉过你的话,在一个你会知道的地方有一个我认识的人。 我们经常在三十岁的时候在维护窗口,他会发现有明显的ping模式的人然后下载。 他喜欢在这些端口上阻塞ICMP几分钟。 那是十五年前的事情,我相信这些事情不会再发生了。 哦,我可以告诉的故事。 我们都惊讶于互联网骨干的增长速度。

我非常强烈的意见是,一个应用程序不应该ping,然后做一些事情,除非应用程序是networkingpipe理员使用的某种forms的networking监视工具。

我是我的家庭networking的networkingpipe理员,我是从我的ISP的stream行的三个长途WIFI链接,所以有时我有点服务。 当我遇到问题时,我不会ping雅虎,我写的应用也不会。

那里有程序员,即使有解释,仍然认为ping-then-do是好的。 我和一个人在一个论坛上来回走了。 他张贴的代码显示了为什么,我把他的代码恢复到固定的位置,他正在发送邮件,我记得。 这种情况持续了两三次,最后的回应是ping失败的错误信息比发送邮件失败的错误信息要好。 你一定要喜欢它。

如果有人有一个例子,那么ping-then-do是个好主意,可以在这里发布。

嗯,如果你的黑客点亮一个远程机器上的进程不是一件好事,你需要首先收集其他信息。 如果你的黑客一个重要/安全的网站,他们让icmp(不太可能)在那么他们将有ids / ips运行,如果你点亮那个东西太早… tr