データグラム
データグラム(英: datagram)は、配送成功・到達時間・到達順序がネットワークサービスによって保証されることがないパケット交換網における基本転送単位である。
概要
[編集]大まかに言えばフラグメンテーションが行われていない状態のデータの転送単位を指す。
個々のデータグラムは、ヘッダ部とペイロード部という2つの部分から構成される。ヘッダには送信元から宛先までルーティングを決定するのに十分な情報が格納されており、事前に端末装置とネットワークの間でやり取りする必要はない。
ヘッダには、送信元と宛先のアドレスやペイロードの種類を示す情報などがある。ペイロードは転送すべきデータである。タグ付きヘッダでこの構造を入れ子にすることをカプセル化と呼ぶ。
Internet Protocol (IP) 標準では何種類かのデータグラムが規定されている。
「データグラム」は「パケット」と同義語として扱われることが多いが、ニュアンスは若干異なる。「データグラム」は一般に、宛先に届かない場合でもユーザに通知しない、信頼できないサービスでのパケットを意味する。一方、「パケット」はパケットとしてフォーマットされたメッセージ一般を指す。例えば、IPは信頼できないサービスを提供し、その上のUDPも信頼できない。そのため、IPおよびUDPのパケットは一般にデータグラムと呼ばれる[1]。
歴史
[編集]「データグラム」という用語は、1970年代初期に作られたパケット交換網であるCYCLADESプロジェクトで最初に使われた。ルイ・プザンによって「データ」と「テレグラム」を組み合わせて作られた単語である[2]。CYCLADESは信頼できないデータグラムとエンドツーエンド・プロトコルを結びつけ、確実にデータを届ける責任をネットワーク自体ではなくホストに負わせた最初のネットワークである。
「データグラムの発想は2つのヒントから来ている。1つはドナルド・デービスの研究である。彼はデータグラム・ネットワークのシミュレーションをしていた。実際に構築はしていなかったが、技術的に発展性があるように見えた。2つめは私がシンプルなものが好きなことだ。2つのエンドツーエンド・プロトコルを重ねることにはなんら技術的なモチベーションを感じなかった。1個で十分だと考えた」—ルイ・プザン[3]
これらのコンセプトは、後にIPなどでも採用された。
定義
[編集]RFC 1594ではデータグラムは次のように定義されている:
“A self-contained, independent entity of data carrying sufficient information to be routed from the source to the destination computer without reliance on earlier exchanges between this source and destination computer and the transporting network.”
電話などとは違い、2つのコミュニケーションポイント間に一定時間持続する接続が存在しないため、データグラムは以前の通信に依存せず自己完結していなければならない[4]。
データグラムのサービスはよくメール配送サービスに例えられる。利用者は宛先アドレスを指定するだけで、確実に配送される保証は受け取らない。そして配送されたことを確認する手段はない。そのため、データグラムのサービスは信頼できないと言われる。データグラムのサービスは最初に経路を決定することなしにデータグラムを転送することから、データグラムのサービスはコネクションレスであると言われる。また、データグラムが届けられる順番も保証されない。実際、同じグループに属する複数のデータグラムが異なる経路をたどって同じ宛先に届くこともある[要出典]。
構造
[編集]各データグラムは、ヘッダとペイロードの2つの部分から構成される。
ヘッダは以前の通信に依存せず、送信元から送信先に配送するために十分な情報をすべて含んでいる。ヘッダは送信元アドレス、送信先アドレス、そしてタイプを含んでいることもある。ペイロードは送信したいデータのことである。このように、ペイロードに対してヘッダをつける処理のことをカプセル化という。
例
[編集]OSIレイヤー | データグラムの名前 |
---|---|
Layer 4 | データセグメント |
Layer 3 | データパケット |
Layer 2 | フレーム (IEEE 802.3) フレーム (IEEE 802.11) セル (ATM) |
Layer 1 | チップ |
フラグメンテーション
[編集]データグラムが断片化(IPフラグメンテーション)された場合、個々の断片はパケットと呼び、データグラムとは呼ばない[5]。
TCPでは、その断片のことを「セグメント」と呼び、パケットとは呼ばない[6]。これは、信頼できない断片と区別するためと見られる。
脚注
[編集]- ^ Kurose, James F. & Ross, Keith W. (2007), "Computer Networking: A Top-Down Approach" ISBN 0-321-49770-8
- ^ "Postel and Pouzin: 1997 SIGCOMM Award Winners", ACM SIGCOMM web site
- ^ James Pelkey. “Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968-1988”. 2012年8月31日閲覧。
- ^ Tanenbaum, Andrew S.; Wetherall, David J. (2011). Computer Networks, Fifth Edition. p. 59. ISBN 978-0-13-255317-9
- ^ RFC 760, 2.3. Function Description: "… to traverse a network whose maximum packet size is smaller than the size of the datagram."
- ^ RFC 793