1. 序章

Pingは、ほとんどのオペレーティングシステムで使用できるユーティリティです。 通常、ネットワークデバイスが到達可能かどうかを確認するために使用されます。

この名前は、ソナーと漠然と似た方法で、情報パケットの送信(エコー要求)と受信(エコー応答)を含む動作モードに由来しています。 一部の作成者は、この名前をPacketInterNetGroperの頭字語と見なしています。

このチュートリアルで説明するように、pingを使用してネットワーク接続の帯域幅を測定できます。

オペレーティングシステムによって、実装にわずかな違いがあります。 以下の例では、Linuxシステムで使用可能なpingコマンドを使用します。

2. Pingコマンドの構造:ICMPプロトコル

2.1. 一般的な機能

pingユーティリティは、IPネットワークの不可欠な部分であるインターネット制御メッセージプロトコル(ICMP)内で、エコー要求とエコー応答メッセージを使用します。 pingコマンドが発行されると、指定されたアドレスにエコー要求パケットが送信されます。 リモートホストはエコー要求を受信すると、エコー応答パケットで応答します。

pingコマンドは、いくつかのエコー要求を送信します。 各エコー要求の結果が表示され、要求が正常な応答を受信したかどうか、応答で受信されたバイト数、存続時間(TTL)、応答の受信にかかった時間が、パケット損失と統計情報とともに表示されます。往復時間。

pingコマンドを使用すると、次のことが可能になります。

  • インターネット接続をテストします。
  • リモートマシンがオンラインかどうかを確認します。
  • パッケージのドロップや待ち時間の長さなど、ネットワークの問題があるかどうかを分析します。

2.2. ICMPプロトコル

次の図に示すように、ICMPプロトコルは、オープンシステム相互接続(OSI)モデルのネットワーク層にあります。

MTUが1500バイトの各ICMPパケットの構造は、次のとおりです。

MTUが異なれば、ICMPペイロードのサイズが変わるため、通常は変動する可能性があります。

3. ホストの到達可能性の確認

Pingは通常、リモートデバイスが到達可能かどうかを確認するために使用されます。 たとえば、Baeldungをホストしているホストに10個のエコー要求を送信します。

> ping -c 10 www.baeldung.com
PING www.baeldung.com (172.67.72.45) 56 (84) bytes of data.
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 1 ttl = 59 time = 13.5 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 2 ttl = 59 time = 14.2 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 3 ttl = 59 time = 13.5 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 4 ttl = 59 time = 15.1 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 5 ttl = 59 time = 14.2 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 6 ttl = 59 time = 13.8 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 7 ttl = 59 time = 14.2 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 8 ttl = 59 time = 14.5 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 9 ttl = 59 time = 19.4 ms
64 bytes from 172.67.72.45 (172.67.72.45): icmp_seq = 10 ttl = 59 time = 16.3 ms

--- www.baeldung.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9011ms
rtt min / avg / max / mdev = 13.460 / 14.869 / 19.415 / 1.708 ms

出力の最初の行は、リモートIPの後に送受信パケットまたはMTUのサイズを指定します、56(84)、これはペイロードの56バイトと合計84バイトを意味します。ヘッダ。

最終的な統計からわかるように、10個のパケットすべてに対する応答が受信され、平均送信/応答時間またはRTT(ラウンドトリップ時間)は14.869ミリ秒でした。 1つ以上のパケットの損失は、何らかの接続の問題の兆候です。

送信されるペイロードのサイズは、-s引数で指定できます。 デフォルトは56バイトです。

3.3. リモートホスト距離:遅延時間

大きなファイルをモデム経由で転送する場合は、数秒、数分、さらには数時間かかる場合があります。 送信するデータが少ないほど、かかる時間は短くなりますが、制限があります。 データの量がいくら少なくても、特定のネットワークデバイスには、絶対に勝てない最小時間が常にあります。 これは、デバイスの遅延と呼ばれます

接続を介して送受信されるパケットのサイズが小さいほど、待ち時間がパーセンテージで重要になり、場合によっては送信時間を超える可能性があります。

前の例で説明した14,869ミリ秒の平均RTTは、接続の平均遅延時間にすぎません。 この値の半分は、サイズに関係なく、情報パケットを送受信するために必要な最小時間です。

すぐに利用できるいくつかのデータと平均遅延時間の知識があれば、雑誌をホストしているサーバーがどれだけ離れているかを計算できます。

  1. 真空中の光速はkm/sです。
  2. ファイバー内の光速は、真空中の光速(km / s)の約66% ofです。 銅線の信号の速度はほぼ同じです。
  3. エコー要求とエコー応答の平均遅延時間は14.869ミリ秒です。 一方向の遅延は7.4345ミリ秒です。

したがって、ホスト距離は次のようになります。

   

これは、サーバーが最大1472kmのファイバーに接続されていることを意味します。 pingの結果がISPによってキャッシュされている場合、または「エニーキャスト」ルーティング(一意でないIPアドレス)がある場合、実際の距離はGeoIPテストの結果と異なる場合があります。

4. Pingによるアップロード/ダウンロード速度

これまでに説明したすべての要素から、ホストの距離の計算で行ったのと同様の方法で、接続の帯域幅を計算できます。

-s オプションを使用してペイロードサイズを指定することにより、この例を繰り返してみましょう。

> ping -c 10 -s 1472 www.baeldung.com
PING www.baeldung.com (104.26.12.74) 1472 (1500) bytes of data.
From 93.188.101.9 (93.188.101.9) icmp_seq = 1 Frag needed and DF set (mtu = 1492)
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 2 ttl = 59 time = 17.5 ms
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 3 ttl = 59 time = 15.4 ms
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 4 ttl = 59 time = 14.5 ms
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 5 ttl = 59 time = 19.6 ms
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 6 ttl = 59 time = 19.4 ms
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 7 ttl = 59 time = 15.2 ms
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 8 ttl = 59 time = 16.7 ms
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 9 ttl = 59 time = 14.5 ms
1480 bytes from 104.26.12.74 (104.26.12.74): icmp_seq = 10 ttl = 59 time = 13.7 ms

--- www.baeldung.com ping statistics ---
10 packets transmitted, 9 received, +1 errors, 10% packet loss, time 9011ms
rtt min / avg / max / mdev = 13.710 / 16.288 / 19.640 / 2.027 ms

ペイロードサイズは1472バイトで、最終的なMTUは1500バイト(1472 + 28ヘッダー)です。 したがって、送受信された合計量はkbです。

この値と平均RTTを使用して、帯域幅を計算できます。

   

5. 結論

このチュートリアルでは、pingコマンドから大量の情報を取得する方法を説明しました。 帯域幅はその1つです。

その他のより高度な可能性には、ICMPプロトコルの完全な理解が必要です。