トランスポート層の通信には、コネクション型のTCPとコネクションレス型のUDPがあります。
今回は、UDPについて説明します。
UDP
UDPとは、トランスポート層におけるコネクションレス型の通信プロトコルです。
UDPでは、通信の効率を最大化するために、ポート番号によるプロセス識別と、チェックサムによる誤り検出の機能しか実装されていません。
UDPのヘッダは、以下のようになっています。
・送信元ポート番号/宛先ポート番号(各16ビット)
送信元と宛先のポート番号が設定される
・長さ(16ビット)
ヘッダ+データ長(バイト)が設定される
・チェックサム(16ビット)
誤り検出のためのフィールド
UDPは、通信の効率を最大化したいときだけでなく、リアルタイム性が求められる通信に使われます。
電話や映像などが良い例です。
なぜかというと、UDPには再送の機能が実装されていないからです。
TCPには再送の機能が実装されているため、パケットが届かなかった場合に同じデータが再送されます。
これは、信頼性を確保するには非常に便利な機能ですが、電話や映像の通信においては、再送の機能は逆に邪魔になります。
電話をしている際に、パケットが届かなかったからといって再送されると、断片的な音声データが遅れて届くことになります。
イメージを掴むために、以下の場合を考えます。
AさんとBさんが電話している状況で、Aさんが「今日は天気がよいですね」と言ったとします。
ここで、「が」のパケットが届かず、再送されたとします。
そうすると、Bさんには「今日は天気よいがですね」という感じで聞こえてしまいます。
「が」が再送され、変なタイミングで届いてしまったからです。
これなら、再送されない方が意味が伝わりますよね。
リアルタイム性が求められる通信では、パケットが再送されると意味が伝わらなくなってしまったりするため、UDPが使われます。
コメント