telnet 8.8.8.8 8888
見せる
頑張って...
もともとこれは完全に拒否されると予想していました。
背景:NGINXリバースプロキシサーバーがある場合は、バックエンドがないかどうかを直接検出するので、これは非常に良いです。
答え1
リモートエンドが再送信する内容によって異なります。
どのプロセスもリッスンしていないポートの場合、リモートエンドはリセット(RST)ビットが設定されたパケットを送信し、これによりクライアントに「接続が拒否されました」エラーが発生します。もう1つの可能性は、iptables -j REJECT
Linuxからデフォルトで送信されるようなICMP「ポートに接続できません」というメッセージです。これにより、「接続が拒否されました」も発生します。
一方、リモコンが再送信した場合何もないすると、クライアントは問題が何であるかを知ることができず、再試行するか、長時間待つことができます。
iptables
Linuxの例:
# iptables -I 入力 -p tcp --dport 3001 -j 拒否 # iptables -I 入力 -p tcp --dport 3002 -j 削除 $NC -v 127.0.0.1 3000 nc:127.0.0.1ポート3000への接続に失敗しました(tcp):接続が拒否されました。 $NC -v 127.0.0.1 3001 nc:127.0.0.1ポート3001(tcp)への接続に失敗しました:接続が拒否されました。 $NC -v 127.0.0.1 3002 (待つ…)
したがって、バックエンドがダウンしていることを確認するには、誰かがエラーを再送信する必要があります。もちろん、ホスト全体がダウンしている場合はこれを行うのが難しくなる可能性があるため、より短いタイムアウトをスケジュールする必要があるかもしれません。
答え2
TCPスタックは、一連の規則(おそらくファイアウォールレベルで)に基づいて接続に応答する方法を決定します。接続パケット(SYN)を拒否できますが、削除することもできます。たとえば、ポートスキャンのために削除するのは妥当です。