Pingを使用してアップロード/ダウンロード速度を計算する
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は、接続の平均遅延時間にすぎません。 この値の半分は、サイズに関係なく、情報パケットを送受信するために必要な最小時間です。
すぐに利用できるいくつかのデータと平均遅延時間の知識があれば、雑誌をホストしているサーバーがどれだけ離れているかを計算できます。
- 真空中の光速はkm/sです。
- ファイバー内の光速は、真空中の光速(km / s)の約66% ofです。 銅線の信号の速度はほぼ同じです。
- エコー要求とエコー応答の平均遅延時間は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プロトコルの完全な理解が必要です。