2022-11-30

anond:20221130155016

まず伝搬遅延を計算します。

これは光の速度から計算できます

簡単計算したければ1m=5nsだと覚えましょう。

そうすると1kmは5μsだとすぐに分かるし、1000kmで5msです。(単位を上げるだけ)

東京-大阪間はざっくり500kmなので2.5msで到達できます

片道の遅延を計測するのは難しいのでpingで往復を測ると5msぐらいです。

実際にはルーターを通過する時間なんかがあるので10msとかになったりします。(30msはちょっと遅い気がする)

ちなみにLTEとかWiFiを挟むと平気で100msぐらい増えます

電波は共有資源なので誰かが使ってる間は使えないから、使えるようになるまで待つからです。

待ち時間が100msとかになります。5GとかWiFi6はその辺が早かったりします。

東京-サンフランシスコ間だと8000kmぐらいあるので40msです。往復で80msなので、まぁ100msぐらいです。

TCP場合送信前に3wayハンドシェイクっていうのをするので2往復ぐらい事前にやりとりします。

なので200msecぐらいかかりますが、最近はFast Openっていうのもあるので多分もっと早いです。

1GBのデータを送るとして、送り始めの先頭データが到達するのにこれだけの遅延がかかります

1byteだけ送って、届いた確認が来たら次の1byteを送って・・・なんてやってたらいつまで経っても送れないので

届いてるかどうかは後回しにしてとにかくドンドン送るとします。

この場合、1GBのデータを送り終わるまでかかる時間は、使える帯域によって変わります

1Gbps使えるなら、1GB送るのにざっくり8secの計算になりますが、まぁ諸々あってそんなわけはなくてもうちょっとかかります

ちなみにUDP場合、使える帯域以上にデータを送ると途中で捨てられるだけです。

パケットなので順番が逆転する可能性もありますが、それでも気付かずそのまま送ります

送られた側でエラーになって初めて気付きます

TCPだと途中で「ここまでOK?」っていう確認をするのでその分の遅延が入りそうですが、SACKっていう仕組みで良い感じに遅延が少なく通信できます

  • 計算は合ってるから何の問題ないんだけど、最初の質問的に何も分かってない人だから 一応補足だけすると光の速度っても光ファイバとかの媒質内の速度であって秒速30万キロではない...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん