UDP【User Datagram Protocol】

広告

広告

UDP とは

最終更新
2005-07-31T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/tcp/udp.html#use

UDPTCP/IPにおけるトランスポート層プロトコルです。ネットワーク層のプロトコルであるIPをほとんどそのまま利用した通信プロトコルとなっていまして、IPとほぼ同じ機能を上位層に対して提供しています。TCP/IPではトランスポート層のプロトコルとしてTCPも使われますが、

のような特徴があります。なぜこのような特徴が生まれているのかを順番に見ていきましょう。

TCPより信頼性が低いのは

TCPではより確実に相手にデータ(セグメント)を届けるために、スリーウェイハンドシェイク確認応答フロー制御輻輳制御など様々な機能を備えています。これらの信頼性を高めるための機能をUDPは一切備えていません。冒頭で「UDPはIPをほとんどそのまま利用した通信プロトコルである」と言いました。IPパケットと同じようにUDPセグメントも、相手に届いたかどうということは送信元では分かりません。また途中のネットワークの状態によっては、送信した順番にUDPセグメントが相手に届く保証は一切ありませんし、途中のセグメントが届かなかったからと言って再送処理が行われるわけでもありません。ただ単にネットワーク層のプロトコルであるIPとセション層以上のプロトコルやアプリケーションとの橋渡しを行っているだけにすぎないのです。

転送速度(スループット)がTCPより高いのは

まずはUDPヘッダを見て下さい。TCPのヘッダが20オクテットあるのに対し、UDPヘッダは8オクテットしかありません。ヘッダが少ない分送信するデータの全体容量が減ることになりますので、TCPに比べて転送速度が高くなるのです。更に既述ですがUDPではスリーウェイハンドシェイク確認応答を行いません。即ち相手からの応答を待つ待ち時間が一切無いのです(一方的に送りつけるだけですから)。当然待たなくて良い分転送速度は上がりますし、余分な作業をしない分内部処理的な負荷も少なくなります。これらのことからUDPはTCPに比べ、軽量で高速なプロトコルと言えるでしょう。

1対多の通信にむいているのは

これも既述ですがUDPではスリーウェイハンドシェイクを行いません。即ちコネクションを確立しないコネクションレスと言う通信方式となります。TCPではブロードキャスト通信、マルチキャスト通信の際にも全ての端末とスリーウェイハンドシェイクを行い、コネクションを確立しなくればなりません。このことから送信元の負荷は非常に大きなものとなってしまいます(コネクションを確立するための送受信作業にウィンドウのためのバッファの確保などなど)。しかしUDPでは余分な作業をしない分、一回の送信動作で複数相手に同じデータを送信することが簡単にできるのです。

補足

UDPではデータ伝送単位をデータグラムと呼びます。

チェックサムは1の補数和の1の補数となります。

UDP の用途

最終更新
2005-07-13T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/tcp/udp.html#use

上記のような特徴を考えるとUDPにも有用な用途がいくつもあることに気が付くと思います。例えばDNSで使用するデータは非常に小さいデータで、複数のセグメントに分割する必要はまずありません。もしDNSをTCPで実現しようとするとどうなるか考えてみて下さい。相手のドメイン名からIPアドレスを確認することは再々あることですが、その度にスリーウェイハンドシェイクを使いコネクションを確立しなければなりませんし、その度に無駄な通信(SYN、ACKのやり取り)を行わなければなりません。これでは無駄が多すぎますのでDNSではUDPが使用されています。

また、IP電話(VoIP)やストリーミング配信の際もUDPが使われます。IP電話で相手と話す際にTCPを使っていたのでは、まともな会話になりませんよね。先ほどのデータが届いていませんので再送をお願いします、まだ届きません、なんてことをやっていますとまともに会話することができませんから。多少データが欠落しようが順番が入れ替わろうが、なるべくリアルタイムに相手にデータを届けたい場合にはUDPが向いています。

また、同時に複数の相手に対して、一斉に情報を送信したい場合にもUDPが向いています。1回の送信動作で対象となる全ての端末にデータを送信することができますので、ネットワークへの負荷も少なくなりますし、既述ですがコネクションの確立も必要ありません(ただし応答を受け取るのが難しいため、一方的に情報を送信する通信に限ります)。またコネクションを確立しませんので通信相手を特定する必要もありません。通信相手がいるかいないか、ダウンしているか生きているかに関らず、最小限の動作で情報を送信することができると言うメリットがあります。このようなことからルーティング情報のやり取りやDHCPパケットの送信等に向いているプロトコルと言うことになります。

広告

Copyright (C) 2005 七鍵 key@do.ai 初版:2005年06月26日 最終更新:2005年07月13日