ICMPエコー要求は、相手へEcho Requestを送り、Echo Replyが返るかを確かめるためのメッセージです。pingの基礎になる仕組みですが、TCP接続を張る処理とは異なります。
要求と応答の流れ
- 送信元がEcho Requestを宛先へ送る。
- 宛先が要求を受け付け、対応するEcho Replyを返す。
- 送信元が識別情報などで要求と応答を対応させ、往復時間等を測る。
Echoでは要求のデータ部分を応答で返します。受信したIPパケット全体を一切変えずに送り返すわけではありません。IPの送信元・宛先、ICMPのTypeなどは要求と応答で変わります。
IPv4とIPv6で番号が異なる
| 方式 | Echo Request | Echo Reply |
|---|---|---|
| ICMP(IPv4) | Type 8、Code 0 | Type 0、Code 0 |
| ICMPv6 | Type 128、Code 0 | Type 129、Code 0 |
「Echo要求は必ずType 8」とだけ覚えず、IPv4とIPv6のどちらを扱っているか確認します。
識別子・シーケンス番号・データ
| 項目 | 主な用途 |
|---|---|
| 識別子 | やり取りの識別を助ける |
| シーケンス番号 | 複数の要求と応答の対応を助ける |
| データ | 応答で返す内容。実装により時刻情報等を含めることがある |
ここでのシーケンス番号はTCPのバイト列管理とは別です。また、ポート番号を使うTCP/UDPの通信でもありません。
応答で確かめられる範囲
応答の有無とRTT(往復時間)は、そのEcho交換の結果です。スループットを直接測るものではなく、応答が速いだけで大量転送も速いとは限りません。要求・応答の経路や処理条件によって結果は変わります。
タイムアウトは機器停止のほか、フィルタリング、経路の問題、応答制限などでも起こります。Webサービスの正常性は、そのサービスに合う確認と組み合わせて判断します。
確認問題:Echo Replyは、受信したIPパケットを全く変更せず送り返す?
いいえ。Echoのデータ部分は返しますが、送信元・宛先やICMP Typeなどは要求と応答で異なります。
次の学習:TCP/IP全体とつなげる
EchoはIPの制御通信、TCPは接続とデータ転送の制御です。note教材でTCPの3ウェイハンドシェイクと比較すると、似た「要求と応答」でも役割が違うことを確認できます。
TCP/IPのnote教材でTCP・UDP・ポート番号を復習する

コメント