データ転送にかかる時間について、不思議に思ったことはありませんか?
100Mバイトのファイルを100Mbpsのネットワークで使った場合、単純に計算すると8秒となりますが
実際にはもっとかかります。その理由の一つ、応答待ち時間について説明してみます。
TCP通信の場合、データを通信パケット(データ部1460バイト)に分割して送信していきます。
また、送信するには相手から受け取ったと連絡がないと次のパケットの送信ができません。
(実際には1送信1応答を待つのではなく、まとめて送れるサイズ「ウインドウサイズ(標準で最大64Kバイト)」を
接続先と調整しながら通信しています。)
そのため、時間としては、1度に送れるデータに分割した回数の応答を待つ必要があります。
通信の応答待ち時間は、伝送距離の長さによるものや中間経路の機器や設備の処理時間によるものとなります。
車で時速100kmで走っても距離が長ければ、その分時間がかかるとイメージしやすいかと思います。
同じ建屋の場合は、10ms以下となりますが、他拠点やクラウドサーバー、VPN接続などでは 数100msなどと時間がかかっているケースもあります。
最初の計算に戻りますが
100Mバイトの場合、応答待ち時間10ms、ウインドウサイズ最大64kbとしても
- 100Mバイト ÷ 64Kバイト = 1562.5 分割
- 応答待ち時間(10ms) × 1563回 = 約16秒
応答待ち時間は、Pingコマンドで簡単に調べることができます。
いつも利用しているサーバーなどで試してみてはいかがでしょうか
データ通信において、応答待ち時間の影響は大きいです。
遅いからといって回線速度を上げても、原因が応答待ちの場合は改善しないといったこともありますので
ご注意いただければと思います。