pingが0バイトを送る

pingが0バイトを送る

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ペイロードデータサイズを反映しています。

おすすめ記事