UDPとは?たったこれだけ!

こんにちは、Tomです。

今回は、

「UDP」

について解説していきます。

今回の記事では、あなたのこんな疑問を解消していきます。

こんな疑問を解消!
  • UDPってなんのためのプロトコル?
  • UDPはどういうものに使われているの?
  • UDPヘッダの中身を教えて欲しい!

UDPはTCPほど難しくない、簡単なプロトコルです。

しかし、「UDPは重要ではない」というわけではありません。

あなたが普段、LINEやSkypeで電話するためにはなくてはならないプロトコルです。

そんな、簡単だけど重要な「UDP」について、一緒に学んで行きましょう。

1.UDPとは?

UDPとは、正式には「User Datagram Protocol」という、通信プロトコルの一つです。

UDPは、TCP/IPのトランスポート層のプロトコルで、通信相手とのコネクション(仮想的な通信路)を確立しないコネクションレス型のプロトコルです。

2.UDPの特徴

UDPは、なぜコネクションを確立しないのでしょうか?

それは、UDPが、効率の良い通信を提供するプロトコルだからです。

 

トランスポート層にはもう一つ、TCPというプロトコルがありますが、

こちらはコネクション型のプロトコルで、通信相手とのコネクションを確立して、再送制御ウィンドウ制御といったさまざまな制御により、信頼性の高い通信を提供します。

しかし、そのさまざまな制御のおかげで、迅速に効率的にデータを送りたい時には向きません。

 

一方、UDPはTCPのような制御は行いません。

UDPは、“ポート番号を識別してアプリケーションにデータを転送する”というトランスポート層としての最低限の仕事しかせず、あとは何もしません。

そのため、アプリケーション層から受け取ったデータに、ポート番号の情報だけ付加してインターネット層に渡します。

これにより、効率の良い、高速な通信が可能になります。そのため、リアルタイム性、効率性、高速性が求められる通信はUDPを使います。

 

例えば、IP電話なんかがそうです。

IP電話とは、LINEやSkypeなどの電話機能のことですが、

IP電話では音声をデータに変換し、IP通信でパケットを伝送して電話を可能にしています。

そこで、トランスポート層にTCPを用いたらどのようなことが起こるでしょうか?

 

通信回線が空いているときは問題ないです。しかし、回線が混み合っている場合は、IP電話の音声パケットが届かないということが発生します。

もちろんTCPなので、そんな時は再送制御によって届くまで何回も音声パケットを送ってもらいます。

そうすると、電話を受けている方は、パケットが届くまで、

「この間はありが………….」

といったように、途中で相手の音声が止まってしまいます。

TCPはデータを確実に届けるという重要な役割を担っていますが、このようなリアルタイム性が求められる通信には向きません。

TCPが再送制御を行わなくても、人間が「ごめん、もう一度いって」と言えば済む話だからです。

なので、こういう効率性が求められる通信ではUDPを使います。UDPを使えば、

「この間はありが…うございました」

といったように、途中の音声が途切れてしまいますが、ある程度わかるならそのまま会話は続きますし、

わからなければ、先ほども言ったように聞き返せばいいのです。

 

また、UDPは効率性がもとめられる通信だけでなく、サイズの小さいデータを転送する場合に利用されます。

UDPデータグラムに十分収まるサイズのデータであれば、TCPのように“コネクションを確立してから送る”と言った手間をかけるまでもないからです。

3.UDPヘッダ

UDPでは、扱うデータの単位(PDU)をデータグラムと言います。

そして、UDPヘッダの中身は図のようになっています。

一つ一つの項目を説明していきましょう。

3-1.送信元ポート番号(16ビット)

送信元ポート番号は、どのアプリケーションから送信されたデータであるかを示す情報になります。

ポート番号は、アプリケーションの出入口でした。

例えば、Webで使用されるHTTPでは「80」、メール送信で使用されるSMTPでは「25」です。

ここには、このようなポート番号が入ります。

3-2.宛先ポート番号(16ビット)

宛先ポート番号は、宛先ホストのどのアプリケーションにデータを送信するかを示した情報です。

送信元ポート番号と同様に、各アプリケーションに割り振られたポート番号は入ります。

3-3.パケット長(16ビット)

パケット長は、UDPヘッダとデータを合わせた長さが入ります。単位はバイトです。

例えば、パケット長が160ビットであれば、

1600ビット = 200 × 8 ビット = 200バイト

なので、「200」の2進数表記が入ります。

3-4.チェックサム(16ビット)

チェックサムは、UDPヘッダとデータのエラーチェックをするためのものです。

4.まとめ

いかかでしたでしょうか?

UDPについて解説しましたが、いつもよりだいぶボリュームのない記事になりました。

言ってしまえば、「UDP」はこのくらいの内容しかないということです。

しかし、重要じゃないわけではないので、わからないことは私にメールしていただいても良いので、

ぜひ自分のものにしてください。

それでは、今回も最後まで読んでくださり、本当にありがとうございました。

 

この分野も記事を書いてほしい!
ここがわらかないから教えてほしい
など、ブログを読んで疑問に思ったこと・気づいたことなど、何でもメールしてください!

  お問い合わせはこちら