拒否またはタイムアウト
Coddyの「ターミナルで学ぶネットワーク」コースのレッスン 18/47。
接続に失敗すると、いくつかの特定の形のいずれかになり、それぞれ異なる原因を示します。curlは、コマンドが残す数値である終了コードによって、どの形なのかを報告します。これは$?として読み取れます。
curl -s http://127.0.0.1:9999/
echo $?覚えておく価値があるのは次の3つです。
- 0:成功
- 7:接続拒否。マシンは応答したものの、そこで待ち受けているものはない
- 28:タイムアウト。何も応答しなかった
7は速く、28は遅い。この違いが診断になります。拒否されたということは、マシンには到達して明確に拒否されたということなので、アドレスは正しく、サービスが実行されていません。タイムアウトはリクエストが消えてしまったことを意味し、通常はファイアウォールによって破棄されたか、アドレスが間違っています。
チャレンジ
難しい両方の失敗を発生させ、コードを確認します。
http://127.0.0.1:9999/にページを要求します。そこでは何も待ち受けていないため、refused=に続けて終了コードを表示します--max-time 2を指定して、トラフィックを飲み込むアドレスであるhttp://10.255.255.1/に対して同じことを行い、timeout=とその終了コードを表示します
期待される出力:
refused=7
timeout=28
$?には直前に実行したコマンドの終了コードが保持されるため、すぐに読み取ってください。
自分で試してみよう
ターミナル
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ターミナルで学ぶネットワークのすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド