“Unknown host”是网络编程与系统运维中常见的异常提示,其字面含义为“未知主机”。在技术语境下,它表示当前程序或系统在尝试访问某个主机名(如 api.example.com)时,无法通过 DNS(域名系统)解析出对应的 IP 地址,或虽能解析但目标主机不可达,从而抛出的 java.net.UnknownHostException、getaddrinfo failed、Host unreachable 等错误信息。
该异常并非指“找不到某个物理设备”,而是指在当前网络环境中,无法定位到目标主机的网络可达地址。它处于网络通信链路的最底层——DNS 解析与网络连通性层,一旦触发,意味着上层业务逻辑(如 HTTP 请求、数据库连接、消息队列通信)将彻底中断。
例如:
ping: redis-cluster.internal: Name or service not known
# 或 Java 程序中:
java.net.UnknownHostException: redis-cluster.internal
at java.net.InetAddress.getAllByName0(InetAddress.java:1283)
此处的 redis-cluster.internal 是一个内网域名,若 DNS 服务中未配置其 A 记录,或该域名未被本地 /etc/hosts 映射,系统便无法解析出 IP,进而报出 Unknown host。
关键区分点
⚠️ “Unknown host” ≠ “404 Not Found”:
• Unknown host:发生在 DNS 解析阶段,请求甚至未能到达目标服务器;
• 404:DNS 解析成功,请求抵达服务器,但路径资源不存在——二者处于通信链路的不同层级。