水野 忠則 静岡大学情報学部情報科学科教授
石原 進 静岡大学工学部システム工学科助教授

データをなるべくたくさん一度に送る

 一方,TCPを使うことで問題が生じる場合もあります。前回説明したように,TCPでは通信に先立って,通信相手とコネクションを確立します。いろいろな相手とたまに小さなデータをやりとりするような通信の場合は,実際のデータ通信よりもコネクションの確立に要する時間の方が長くなり,効率が悪くなります。こうしたケースでは,たとえ信頼性が必要となる通信でも,TCPではなくUDPを使います。例えばDNS(domain name system)サーバー間のメッセージ交換にはUDPが使われます。

 TCPはすべてのアプリケーションで同じように動作するわけではありません。TCPを使うプロトコルはそのデータの送り方によって,次の二つに大別されます。一つはなるべく一度に多くのデータを送るタイプです。HTTPやFTPなどがこの方式を使います。もう一つは細かいデータを少しずつ送るタイプです。

 パケットには,転送するデータそのもののほかに,パケットのあて先や送信元を示すヘッダーが含まれます。一つのパケットで送るデータのサイズが小さいと,データよりもヘッダーの割合が大きくなり,転送効率が悪くなります。そこでTCPは転送効率を高めるために,データをできるだけ一度にまとめて送ろうとします。HTTPやFTPではこのようにして一度に連続してデータを送信します(pict.2[拡大表示])。

 しかし,これでは都合が悪いケースもあります。例えば,遠隔地のコンピュータを操作するTelnetの場合です。Telnetは一つ一つのデータが小さいので,たまるのを待っていると,いつまでたっても送信できません。そこでTelnetでは,そのまま送ると効率が悪くても強制的にデータを送るようにTCPを使います。