Ping 何时会说谎
Coddy 使用终端进行网络通信 课程的第 17 课,共 47 课。
Ping 是大家最先想到的工具,但它能回答的问题比人们想象的更有限。它只能告诉你机器是否运行正常,却无法说明你真正关心的服务是否正在运行。
服务器可以完美响应每一次 ping,但运行在上面的 Web 服务器可能已经崩溃。机器正常运行,服务却已停止。Ping 看不到这种区别,因为它从未与服务通信。
反过来也一样。许多主机被配置为完全忽略 ICMP,所以即使机器正在正常处理流量,ping 也会报告 100% 丢包。ping 失败并不能证明有什么问题。
因此,ping 是逐步排查的第一步,绝不是完整的诊断。第二步是检查端口本身。
挑战
中等展示 ping 无法识别的确切情况:机器有响应,但端口上没有任何服务。
针对 127.0.0.1,并且完全不启动服务器:
- Ping 一次,并打印
host up - 用
nc -z检查端口 9999,并打印port closed
预期输出:
host up
port closed这台机器显然是正常运行的。这正是重点:机器在运行,不代表它正在提供服务。
亲手试试
终端
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
使用终端进行网络通信中的所有课
自己练习: Terminal 在线编辑器