TCP pingとは?
TCP pingは、ICMPエコーを送る代わりにTCP接続を開くことで、ホストが到達可能かどうか、またどれだけ速く応答するかを測定します。ICMPはほとんどのホスティングやCDNの背後で利用できないため、IPeekはポート443と80へのTCP接続で到達性と遅延を測定し、複数回の試行にわたる最小・平均・最大の往復時間を報告します。
TCP pingとICMP pingの違い
従来のpingコマンドはICMPエコー要求を送り、応答までの時間を計測します。これはローカルネットワークでは機能しますが、ファイアウォール、CDN、クラウドプロバイダーがICMPを日常的に破棄または優先度を下げるため、公衆インターネットの多くで失敗します。TCP pingは代わりにサービスポートへ実際の接続を開き、ハンドシェイクにかかる時間を計測します。ウェブサーバーは機能するために443と80で接続を受け入れなければならないため、ICMPに決して応答しないホストにも確実に到達し、実際にトラフィックを運ぶ経路の遅延を測定します。
遅延の結果の読み解き方
IPeekは複数回の試行にわたる最小・平均・最大の往復時間を報告します。最小は経路の最良の遅延、平均は通常期待できる値です。最小と最大の差はジッターです。差が小さければ安定した接続、大きく広がっていれば輻輳や過負荷のホストを示します。おおまかな目安として、50 ms未満は優秀、50〜150 msはリージョンをまたぐ通常範囲で、一貫して高いか大きく変動する時間はネットワークまたはサーバーの問題を示し、調査する価値があります。
TCP pingが適したツールであるとき
通常のpingが100%のパケットロスを報告するのにサイトは明らかに読み込まれる、つまりICMPがフィルタリングされているだけのときに、TCP pingを使ってください。サーバーがウェブポートで接続を受け入れているか確認したり、自分の場所からホストへの遅延を比較したり、障害になる前の断続的な遅さを発見したりするのにも使えます。また、ブラウザやAPIが使うのと同じTCP経路を計測し、別のICMPチャネルではないため、実際のユーザー体験を気にかけるときの正直な測定でもあります。
ICMPがしばしばブロックされる理由
運用者は攻撃対象領域とノイズを減らすためにICMPをブロックまたはレート制限します。ICMPフラッドは古典的なサービス拒否の手段であり、エコー応答は偵察に役立つ情報を漏らします。CDNやロードバランサーもエッジで接続を終端するため、ICMP pingはオリジンではなく最寄りのエッジノードを計測してしまいます。このため、ICMP pingの失敗はサイトが稼働しているかどうかについて何も語りません。サービスが実際に待ち受けるポートへのTCP pingは、到達性について信頼できるyes/noを与えます。