ネットワーク回線には、パケットの往復速度というものがあります。
TCPパケットの場合、回線速度に密接に関係するわけですが
イーサネット(100Base/TX)は0.3msほどです。
フレームサイズ(MTUからヘッダとったサイズ)は1460なので、
1460 / 0.0003 = 4866666.6666666666 となり、
一秒間に4.87MB転送できる計算になります。
しかし、TCPには送受信のためにバッファのようなものを設けてあります。
それはウインドウと呼ばれ、そのサイズは個体により違います。
TCPでは、通信を始めたとき等に、受信側が送信側へウインドウサイズを伝えます。
送信側は、受信側のウインドウサイズで一気にストリームデータを送信し、待ちます。
受信側は、正しく受信できたかどうかをまとめてやります。
1パケットずつデータの正当性確認するよりも、遥かに高速化します。
こういった仕組みのため、計算上、ウインドウサイズがフレームサイズの代わりになります。
たいていは8KBがウインドウサイズになっています。
すると、26.7MB秒くらいになります。
しかしながら、100Base/Tは上限速度が100/8=15 なので実行速度は12MB/sとして
12MB/sが上限となります。
パケットの応答速度が遅いのは、衛星通信・モデム です。
リアルタイム性の求められることには使わないでください
そらTCPはコネクション型ですからな
ストリーミングならUDPとかのが有利ですな
自社暗号IP開発でデータ通信を行うときはやはりデータの保証されるTCPでやらざるを得なかった。でも動画や音声を暗号化して通信する場合にリアルタイム性を求められても難しいものです。。。
非コネクション型のUDPの信頼性はあまりにも悪く
アプリケーション層で信頼性確保のためのプロトコルを作ってやる必要があります。
UDPのメリットは、アプリケーション層でプロトコルを好きに作れる事が挙げられるのです。しかしそれをやるとTCPよりも遅くなるわけですが。
ちなみに、現在使われているプロトコルはTCPが95%以上だそうです。
応答速度を肌で感じるには、二人目の前で向き合って携帯電話で話してみてください。
あれ? 声が 遅れて 聞こえて クルヨ
なんだって!
光回線の信頼性がすごく高いと思ってた人(1/20)
ネトゲとか、結構UDPをつかってるイメージだったんですが調べたらTCPと併用してるんですな・・・