Linux(CentOS)のpingコマンドは0バイトを送信できますか? Windowsでは、試行された-l
パラメータコマンドを使用して
定義できます。
ping localhost -s 0
PING localhost (127.0.0.1) 0(28) bytes of data.
8 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64
8 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64
^C
--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
man ping
-s packetsize
Specifies the number of data bytes to be sent. The default is
56, which translates into 64 ICMP data bytes when combined with
the 8 bytes of ICMP header data.
編集1:誰かが必要な場合に備えてWindows ping出力を追加しました。
ping 127.0.0.1 -l 0
Pinging 127.0.0.1 with 0 bytes of data:
Reply from 127.0.0.1: bytes=0 time<1ms TTL=128
Reply from 127.0.0.1: bytes=0 time<1ms TTL=128
Reply from 127.0.0.1: bytes=0 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
ping 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
ベストアンサー1
Linux、Windows、またはPingを送信できると主張する他のプラットフォームでは、Pingは0バイトにすることはできません。パケットには少なくとも1つのIPヘッダーを含める必要があり、よく構成された非トリックプレーピングには8バイト長のICMPヘッダーも含まれます。
Windowsでは、受信したバイトの出力方法が異なる場合があります。 LinuxはパケットのICMP部分サイズを知らせます(ICMPヘッダーの8バイト+存在するすべてのICMPデータ)。 Windowsでは、ICMPペイロードデータバイト数を印刷して「0」とマークしても、8つのICMPヘッダバイトがまだ存在するようにすることができます。実際、ICMPバイトが0であることは、パケットが元のIPヘッダーであり、もはやICMP ping要求ではないことを意味します。要点は、Windowsがpingパケットの長さが0バイトであることを知らせても、それは本当ではないということです。
ICMPエコー要求またはエコー応答パケットの最小サイズは28バイトです。
- 20バイトのIPヘッダー、
- 4バイトICMPヘッダ、
- 4バイトエコーリクエスト/レスポンスヘッダデータ、
- ICMPペイロードデータ0バイト。
Linuxでpingするときの印刷:
8 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64
この8バイトは、4バイトのICMPヘッダーと4バイトのICMPエコー応答ヘッダーデータで、0バイトのICMPペイロードデータサイズを反映しています。