「 通信制御サンプルプログラムにTCPでなくUDPを使用している理由 」 | |||||||||||||||||||||||||
【UDPは信頼性が低いのか?】 UDPはTCPに比べ信頼性が低いと言われています。 これは通信エラー時の再送回復処理がUDPプロトコル内に含まれない為です。 ただしこの処理がプロトコル内で行われるTCPが完全かと言われると再送回数を無限に繰り返す訳に行かない事からも100%のプロトコルという訳でもありません。 TCPを使用する場合その信頼性は内部再送システムにかかっている訳ですがその再送システムの作りは一様ではありません。 再送時間間隔やその回数はTCP実装(ドライバソフト作成)者の判断に全て委ねられて作られている為です。 そしてこの再送処理は一般的に安全を見込んで長い時間かけて繰り返し行われる場合が多いようです しかしながらこの再送処理に長時間取られては困る場合があります。 通信経路に問題が生じた場合にそれが断線なのか不安定な状況なのかをすばやく判断し、すぐさま次の処理に移りたい場合があるからです。 この様な場合には、内部遅延の無い単純なUDPプロトコルが向いています。 ただしUDPにはTCPのような信頼性向上のための再送処理がありませんのでこれを司る部分はアプリケーション側に組み込む必要があります。 通常応答データが任意の時間待っても戻らない場合に再送を何回か繰り返すプログラムをアプリケーションに加えます。 これが上手に組み込められればTCPを使った場合の信頼性と変わらないシステムが得られます。 ※注 ) UDPにはパケットデータをチェックサムしない仕様も許可されているので注意が必要です。ここではチェックサムされているUDPを使用すると言う前提で書かれています。(KARACRIX製品はチェックサムされる仕様で作られています) 【UDPのメリット】 そして信頼性を確保したUDPシステムではそのプロトコル仕様を活かしTCPシステムでは困難な以下に示す様な事柄が可能となります。 1. 細かなリアルタイム通信制御
以上のようにTCPも良いものですが、UDPも再送の問題をクリアしてしまえば大変便利で使い勝手が良いものです。 この様な事から計測制御用の通信サンプル及び実用化プログラムにUDPを利用しています。 【サンプルプログラムでは】
|