检查互联网连接是否存在的最佳方法是什么?


0

我是学生,我连接到互联网 Shibboleth的 。 实际上我在覆盆子pi上有一个Python脚本,有selenium和phantomjs在运行时自动连接。

我想在没有充斥网络的情况下检查互联网连接。

Icinga监控,netstat建立连接,ping,nmap ...... 最好的办法?


5
很少有最好的方法,但通常最适合你的方式。为了帮助您选择,您应该尽可能多地在问题中添加详细信息,包括所有要求(您希望如何获得通知,是否需要仪表板,您已经尝试过的内容等)
uSlackr

2
您有什么标准来确定什么是最好的?

因此,如果8.8.8.8可达,则为8.8.4.4。是不是表示有效的互联网连接?
Konrad Gajewski

是的,但是不是那种方式充斥我的住宅路由器?

Answers:


3

假设连接必须是死的或活的并且您可以可靠地区分它是不正确的。这种假设导致系统不可靠,因为您最终可能依赖于一种实际上并未检查您期望它的活力属性的启发式方法。

更好的方法是监控您需要连接的东西是否真的有效。例如,如果您需要特定客户端连接到特定服务器,那么您应该监视它。只要两者保持通信,您就不关心不同的启发式方法是否会认为连接已关闭。

如果监控确实检测到问题,那么您可能希望监控对此发出警报。您可能希望监控不仅可以检测连接断开和警报,还可以尝试纠正问题。然而,这会带来更多问题。

例如,假设您有硬件可以在发生中断时为网络组件供电。那么也许你不想仅仅因为客户端和服务器无法相互通信而重新启动它。可能是连接的另一端已关闭,并且不需要电源循环。甚至可能是电力循环会引入其自身的中断或者进行人工干预。

有办法解决这些问题。例如,如果与服务器的连接似乎已关闭,则可以发送服务器的DNS查找。如果你得到了回复,那不是因为连接完全失败了。但您甚至不必将请求一直发送到DNS服务器。您可以使用低跳限制发送DNS查找。例如,如果您发送跳数限制为3的DNS查找并从第三跳获得ICMP,则第一跳的电源循环不太可能解决问题。

这当然不是一颗银弹。即使最好的启发式方法有时也会出问题。如果你想构建一些试图自动重启断开连接的东西,你当然需要确保它有一个指数退避策略来阻止它反复重启。

如果不交换任何数据包,显然无法进行监控连接。但您确实希望限制处理这些数据包的成本。例如,虽然您可以发送一些数据包并从特定路由器返回错误消息,但这对大多数路由器来说并不是最便宜的操作。如果您可以找到一种方法来发送和返回数据包而不涉及除路由器的硬件转发部分以外的任何内容,那么这样做会更便宜,即使它需要更多的跳跃。

如果您有更多站点,则可以通过定期彼此成对通信来提高连接监视的可靠性。如果一个站点同时失去与所有其他站点的连接,那么这个站点很可能存在连接问题。


0

如果您的意思是想知道是否可以访问互联网,那么通过8.8.8.8和8.8.4.4的服务器对www.google.com进行DNS查询是最可靠的方式。

如果您无法得到答案,那么您的互联网连接肯定存在问题。请注意,“出错”并不意味着根本无法访问。

你无法证明互联网连接是完美的。


你和谷歌之间可能存在对等问题。所以它不一定是你的互联网有问题,但我认为ping 8.8.8.8就足够了,我认为不需要DNS查询。
Devon

ICMP比UDP或TCP更容易被丢弃
caskey

通过路由器可能,但终端主机不应该随机丢弃ICMP。
Devon

当试图检查互联网连接时,可能涉及路由器。
caskey

这不是它的工作原理。路由器仍将转发ICMP数据包,它们无法可靠地回复。服务器(例如8.8.8.8)应该可靠地回复。如果你ping,你不是在寻找路由器的回复,如果你是traceroute,你是。
Devon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.