ICMPエコー要求パケットとエコー応答パケットにはデータ部分が含まれています。たとえば、これはEcho Requestパケット(Windowsでpingコマンドを使用して送信されたもの)です。
ご覧のとおり、パケットには32バイトで構成されるデータ部分があり、このデータは何も意味していないようです(アルファベットの一部にすぎません)。
データ部分は必須ですか、それともオプションですか?
要求パケットにデータ部分がある場合、replyパケットではデータ部分が必須です。応答システムは、まったく同じデータ部分を含む応答を送信する必要があります。 RFC792 は、要求パケットのデータ部分が必須かどうかを指定しません。このスキーマのData
は、他の多くのRFCのように(optional)
としてマークされていません。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-
ただし、ゼロバイトのデータでpingを送信することは完全に可能です。 Windowsで試してみてください:
ping <destination> -l 0
これは、ICMP-Echo-Requestのデータ部分がオプションであることを証明しています。