見出し画像

リアルタイム通信で大活躍!速度重視の重要プロトコル「UDP」

「時間はかかるけど仕事が正確な人と、雑だけど仕事が速い人、どっちがいいですか?」

はい、こんにちは!松井真也です。シリーズ「ネットワークからアプリへの橋渡し:トランスポート層の世界」第7回でございます!

前回は、TCPの伝送制御についてお話ししました。特に、受信者からの確認応答を待たずに、一定量を送ってしまうという仕組み(スライディングウィンドウ)は面白かったですね。ACKが届くたびにまさにウィンドウが横に動いていくのでした。

さて、今回から、TCPの対をなす「UDP」というプロトコルを紹介していきます。TCPは、高い信頼性を担保するためのプロトコルでしたが、UDPは低遅延、速度重視のプロトコルです。いったいTCPと何が違うのでしょうか?

早速見てみましょう!

UDPの最大の特徴とは何か?

UDP(User Datagram Protocol)は、IPネットワークで使用される通信プロトコルです。TCPと同様に、トランスポート層に位置づけられ、データをステートレスかつコネクションレスで相手に送信する役割を担います。

ようするに、送信前後の状態は記憶しないし、「データを開始しするぞ、終了するぞ、届いたか~?」という確認をせずに、データを送るんですね。

通信の確立や終了の手続きを省略することで、データを迅速に送るのでございます。

シンプルで速い!

UDPはシンプルさと効率の良さが特徴です。データは「データグラム」という単位(PDU)で送られます。プロトコルの名前のとおりですね。

TCPの場合は?そう「セグメント」でしたね。PDUってプロトコルによって呼び方が変わりますが、そんなに呼び分ける必要あるのかな~って思っちゃいますよね…。

ヘッダ部分はわずか8バイトで構成されています。これに対してTCPは、固定長部分だけで20バイトです。だいぶTCPより小さいことが分かります。

このシンプルさのおかげで、UDPは低遅延で効率的な伝送を実現しています。しかし、このシンプルさの代償として、データの到達保証や順序制御などを行わないため、通信の信頼性はTCPより低くなります。

ヘッダの内容については次回の記事で扱いましょう!

 なぜUDPが選ばれるのか?

では、どんなときにUDPを使うのでしょうか?UDPはリアルタイム性が求められる通信に適しています。

例えば、オンラインゲームやVoIP(Voice over IP)、ライブビデオストリーミングなど、遅延が発生するとユーザー体験に影響を与えるアプリケーションで好んで使用されます。

リアルタイムのIP電話で「音声パケットが一部欠損したいみたいだから、もう一回送るね!」というのは、むしろ迷惑ですよねw。

また、一つ注意したいことがあります。信頼性の確保がアプリケーション層などの上位層で行われる場合、UDPが利用されることもあります。

あるレイヤーの機能が足りないとき、別のレイヤーがその機能を補う例はときどき見かけます。例えば、HTTP/3です。これは、ウェブサイトを閲覧するときに使われるプロトコルであるにも関わらず、UDPを利用しています。各種制御はどうするのか?というと、実はそのUDPの上位で「QUIC」と「TLS」というプロトコルが肩代わりしているんです。過去記事でQUICを紹介しましたので是非ご覧ください!

このほか、UDPは、DNSやDHCP、SNMPなどのプロトコルで利用されています。詳しくは、次々回の記事で扱いましょう!


はい、本日はここまで!今回はUDPの概要についてご紹介しました。次回以降は、この技術をもう少し深掘りしていきましょう!

では!

この記事が気に入ったらサポートをしてみませんか?