Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

データグラム(データグラム)とは | 意味や読み方など丁寧でわかりやすい用語解説

データグラム(データグラム)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

データグラム (データグラム)

英語表記

datagram (データグラム)

用語解説

データグラムは、コンピュータネットワーク上で送受信されるデータの基本的な単位の一つであり、特にコネクションレス型の通信において利用される、自己完結型の独立したデータブロックを指す。これは、事前に通信相手との間に仮想的な接続路を確立することなく、個々のデータブロック自体に必要な宛先情報を付与して送信される。インターネットの根幹をなすIP(Internet Protocol)や、その上位層プロトコルであるUDP(User Datagram Protocol)において、中心的な役割を果たす。

データグラムの最も顕著な特徴は、その「コネクションレス型」であることだ。これは、データの送受信を開始する前に、送信元と送信先の間でハンドシェイクと呼ばれる接続確立の手続きが不要であることを意味する。送信者は、ただ宛先アドレスなどの情報を含んだデータグラムを作成し、ネットワークに送り出すだけでよい。これにより、通信のセットアップにかかる時間や処理のオーバーヘッドが削減され、効率的なデータ転送が可能になる。

しかし、コネクションレス型であることと密接に関連して、「信頼性の保証がない」という重要な特性も持ち合わせる。データグラムを送信するプロトコル自身は、送信したデータグラムが必ず相手に到達すること、正しい順序で到達すること、重複せずに到達すること、あるいはデータが破損せずに到達することなどを保証しない。ネットワークの混雑、ルータの故障、ケーブルの断線といった様々な要因により、データグラムが途中で失われたり、遅延したり、予期せぬ順序で到達したりする可能性がある。このような特性は「ベストエフォート型」と呼ばれ、プロトコルは可能な限り最善を尽くして転送を試みるが、その結果については保証しないというスタンスを示す。

信頼性が保証されないにもかかわらずデータグラムが広く利用されるのは、そのシンプルさと高速性にある。信頼性を確保するための複雑な処理、例えば接続の確立・維持、パケットの順序管理、データ欠損時の再送制御、データフローの制御、ネットワークの輻輳(混雑)制御などが不要であるため、データグラムの処理は非常に軽量である。この軽量さが、低遅延でのデータ転送を実現し、リアルタイム性が重視されるアプリケーションにおいて大きな利点となる。例えば、インターネット電話(VoIP)、オンラインゲーム、ライブストリーミングなどでは、多少のデータ損失があっても、データの鮮度や一貫した時間間隔でのデータ到達の方が重要視される。これらのアプリケーションでは、失われたデータを再送するために遅延が発生するよりも、最新の情報を途切れることなく提供する方がユーザー体験が向上する場合が多い。

詳細に掘り下げると、データグラムの概念はTCP/IPモデルの異なる層で見られる。特に、インターネット層のIPデータグラムと、トランスポート層のUDPデータグラムが代表的だ。IPデータグラムは、インターネット層における基本的な転送単位であり、送信元IPアドレス、宛先IPアドレス、プロトコルタイプ、データグラムの長さといった情報を含むヘッダ部と、実際に運ぶべきデータ(ペイロード部)から構成される。このIPデータグラムが、インターネット上のルータによって、その宛先に到達するまで次のルータへと次々に転送されていく。この転送メカニズム自体がベストエフォート型であり、ルータは個々のデータグラムを独立して処理し、ルーティングテーブルに基づいて最も適切な経路を選択して転送する。

UDPデータグラムは、IPデータグラムのペイロードとしてカプセル化されて運ばれる。つまり、UDPデータグラム全体がIPデータグラムのデータ部に格納される形だ。UDPデータグラム自身も、送信元ポート番号、宛先ポート番号、データグラム長、チェックサムなどの情報を含むヘッダ部と、アプリケーション層からのデータで構成される。ポート番号は、一台のコンピュータ上で動作する複数のアプリケーションやサービスの中から、特定のものを識別するために利用される。UDPは、IPが提供するベストエフォート型の通信をそのまま上位層のアプリケーションに提供する。したがって、UDPを使用するアプリケーションは、データグラムの信頼性を自身で管理するか、あるいは信頼性が元々不要な状況で利用するかの選択をすることになる。

データグラムの送信プロセスは、通信相手との接続確立を必要としないため、効率的に多数の宛先にデータを送ることが可能である。例えば、DNS(Domain Name System)は、ドメイン名とIPアドレスの変換を行うためのプロトコルであり、UDPデータグラムを広く利用している。DNSクエリは通常、非常に小さなデータ量であり、一度の送受信で完結することが多いため、UDPのシンプルさが適している。もしDNS応答が得られなかった場合でも、クライアントは単にクエリを再送するだけでよく、TCPのような複雑な接続管理は不要である。また、NTP(Network Time Protocol)もネットワーク上の時刻を同期するためにUDPデータグラムを利用しており、これも低遅延かつ効率的な通信が求められる典型的な例だ。

データグラムの信頼性欠如は、一見すると大きな欠点に思えるかもしれないが、この特性があるからこそ、ネットワーク機器は余計な状態管理をすることなく、シンプルにデータグラムを転送することに専念できる。これにより、ネットワーク全体の処理能力が高まり、スケーラビリティ(拡張性)が向上する。もしインターネット上の全ての通信がTCPのようなコネクション指向で厳密な信頼性保証を持つものであったなら、ネットワークリソースの消費が大幅に増大し、インターネットは今のような柔軟性と高速性を持ち得なかっただろう。

ただし、アプリケーションレベルで信頼性が絶対に必要とされる場合は、UDPデータグラムを直接利用するのではなく、その上に独自の信頼性確保メカニズムを実装したり、あるいは最初からTCPのようなコネクション指向で信頼性保証のあるプロトコルを選択したりする。例えば、ファイル転送やウェブ閲覧などでは、データの欠損は許されないためTCPが利用される。しかし、特定のアプリケーションにおいては、TCPが提供する汎用的な信頼性メカニズムよりも、データグラムの特性を理解した上で、欠損データの検出と再送処理、データの順序付け、重複排除などをアプリケーション層で独自に実装する方が、より特定の要件に最適化された効率的な通信を実現できる場合もある。

このように、データグラムは信頼性保証を持たないシンプルなデータ転送単位でありながら、その特性を活かしてインターネットの様々な場面で重要な役割を担っている。ネットワークの効率性、リアルタイム性、そしてスケーラビリティといった観点から、その価値は極めて大きい。

関連コンテンツ

関連IT用語