Loading [Contrib]/a11y/accessibility-menu.js

2018年11月6日火曜日

[一次専門]TCPのデータ転送量

作成:2018年11月06日
更新:2018年11月13日
前回の投稿で

確認応答(ACK)なしに一度で送信可能な最大のデータ量をウィンドウサイズと言います。

と書きました。

このウィンドウサイズに関連して、技術士一次試験ではデータ転送量の上限値を求める問題も出題されています。

【出典:平成28年度技術士第一次試験〔専門科目〕III-33】
【出典:平成24年度技術士第一次試験〔専門科目〕IV-19】

2点間でTCPを用いてデータを転送する。2Gbpsの帯域をもつ通信回線において往復の遅延が500マイクロ秒,TCPのウィンドウサイズを50kバイトとするとき,1秒当たりのデータ転送量の上限値に最も近い値はどれか。

① 20Mバイト
② 50Mバイト
③ 100Mバイト
④ 200Mバイト
⑤ 400Mバイト

問われているのはデータ転送量の上限値なので、最も転送効率が良いケースを考えます。

ここで、「ウィンドウサイズ」と「1回の送信あたりのデータ転送量」は必ずしも一致しないことは注意が必要です。

言い換えると、1回の送信でウィンドウサイズと同じデータ量を送信する場合もあれば、複数回に分割して送信する場合(合計値がウィンドウサイズと同じ)もあるということです。

それでは、1回で送信する場合と、複数回に分割して送信する場合のどちらが転送効率が良いでしょうか。

問題文に着目すると「往復の遅延」とあります。
送信するたびに送受信間のやり取りで遅延が発生するということですね。

つまり、送信回数が少ないほど遅延が小さくなるので、1回の送信でウィンドウサイズと同じデータ量を転送するのが最も転送効率が良いと言えます。


前置きが長くなりましたが、問題文に戻ると

「1回の送信(往復の遅延0.5マイクロ秒)で、ウィンドウサイズと同じデータ量(50kバイト)を転送する」

場合にデータ転送量が上限値となるので、1秒当たりの転送量は

50(kバイト)/0.5(マイクロ秒)
=50,000(バイト)/0.0005(秒)
=100,000,000(バイト/秒)
=100M(バイト/秒)

よって、答えは③となります。

0 件のコメント:

コメントを投稿