connection refused・timeout・404の違い

入門 | 10分 で読める | 2026.06.16

公式ドキュメント

connection refusedtimeout404 は、どれも「つながらない」と感じる症状ですが、失敗している段階が違います。

一言でいうと

connection refused は入口で拒否、timeout は返事がない、404 はHTTPサーバーには届いたが対象がない状態です。

まず比較

表示起きていること主に見る場所
connection refused接続先のポートで待ち受けていない、または拒否されたアプリ起動、ポート番号
timeout一定時間返事がない経路、ファイアウォール、サーバー負荷
404 Not FoundHTTPサーバーは応答したが、パスが見つからないURL、ルーティング、ファイル配置

connection refused

connection refused は、指定したIPアドレスやホストには届いたが、指定ポートで受け付けるアプリがいない時によく出ます。

例:

curl http://localhost:3000

確認すること:

  • 開発サーバーを起動しているか
  • ポート番号が正しいか
  • localhost と別のホストを混同していないか
  • コンテナ内とホストOSのポート公開が合っているか

timeout

timeout は、一定時間待っても返事が来ない状態です。拒否されたというより、返事がない状態に近いです。

確認すること:

  • ネットワーク経路があるか
  • ファイアウォールで落とされていないか
  • サーバーが重すぎないか
  • DNSが別のIPを返していないか
  • VPNやプロキシが影響していないか

connection refused より原因範囲が広くなりやすいです。

404 Not Found

404はHTTPステータスコードです。つまり、HTTPサーバーからレスポンスが返っています。

HTTP/1.1 404 Not Found

確認すること:

  • URLのパスが正しいか
  • ルーティング設定があるか
  • 静的ファイルの配置先が正しいか
  • APIのエンドポイント名が合っているか
  • ベースパスや末尾スラッシュの扱いが合っているか

404は「通信できていない」ではなく、「通信できたうえで対象が見つからない」状態です。

切り分け順

順番確認
1名前解決nslookup example.com
2到達性ping example.com
3HTTP応答curl -I https://example.com/path
4ポートcurl -v http://localhost:3000
5アプリログ開発サーバーやWebサーバーのログ

よくある誤解

誤解実際
404はネットワーク障害HTTPサーバーには届いています
timeoutとrefusedは同じ拒否されたのか返事がないのかが違います
localhostで動けば外部でも動く待受アドレスやファイアウォールが関係します
ブラウザ表示だけで原因がわかるDevToolsやcurlで層を分けて確認します

まとめ

connection refusedtimeout404 は失敗している段階が違います。エラー文を「つながらない」でまとめず、ポートで拒否、経路で無応答、HTTP上の未発見に分けて確認します。

参考リソース

← 一覧に戻る
PR
PR
PR
PR