ここまでネットワーク層がユーザーに提供する2つのクラスのサービスを見てきたが、以降ではそれらがこの層の内部でどのように動作しているかを見ていくことにする。提供されるサービスの種類に応じて2つの分類が考えられる。コネクションレス・サービスが提供される場合、
パケットはネットワークに対して個別に送られ、個別にルーティング
される。このため、前もって準備を行う必要はない
。ここでのパケットの振る舞いは電報と類似していることからデータグラム(datagram)
と呼ばれ、ネットワークはデータグラム・ネットワーク(datagram network)
と呼ばれる
コネクションレス・サービスはデータグラムサービスと呼ばれる
必ずしもすべてのアプリケーションがコネクションを必要とするわけではない。例えば、SPAMを送る人たちは迷惑メールを多くの受信者に送る。低信頼(確認通知しないことを意味する)
コネクションレス・サービスは、電報に相当するもので、しばしばデータグラム(datagram)サービス
と呼ばれる。電報も送り手に受領確認を返送していない。
コネクションレス・サービスの振る舞いを知るとデータグラムに関して知ることができるかもしれない
コネクション指向サービスに対し、コネクションレス(connectionless)サービスは郵便システムに習っている。ここの
メッセージ(手紙)に完全な宛先アドレスが付けられ、それぞれがシステムの中の中間ノードを経由して、後続のメッセージとは独立に配送
される。文脈によって、メッセージには異なる名前がつけられている。パケット(packet)はネットワーク層のメッセージである。
p51
中間ノードで受信、送信する蓄積交換
中間ノードがメッセージ全体を受信してから次のノードに送信するなら蓄積交換(store-and-forward switcheing)
と呼ばれる。
全部を受信する前に伝送するカットスルー交換
別の方法として、
ノードがメッセージ全体を受信する前に次への伝送を始める
場合は、カットスルー交換(cut-through switching)と呼ばれる。通常、2通のメッセージが同一の宛先が送られれば、先に送ったものが先に届く。しかし、先に送ったものが遅れたため、後から送ったものが先に届く可能性もある。
こっちもデータグラムに関する記述があった
リアルタイム通信においては、
パケットを決められた「間隔」で正確かつ定期的に転送
することが最も重要ですが、データ通信に最適化して開発されたTCPにはパケットの間隔を制御するような仕組みがなく、逆に再送処理など余計なことをして
しまいます。正直言って「じゃまな役立たず」になってしまいました。ここで、音声通信に適したトランスポートプロトコルや、映像通信に適したトランスポートプロトコルを作るという方法もあり得たのですが、インターネットの普及とともに様々なニーズが生まれ、他にもTCPでは適さない通信がいろいろと出てくるであろうと考えると、何十種類ものトランスポートプロトコルが必要になってしまいそうです。
そこで、賢明な(無責任な?)インターネット創始者たちは、
「何もしない」トランスポートプロトコルであるUDP
を作ったのです。
UDPはポート番号によるアプリケーションの識別とチェックサムによるデータ正常性確認という最低限のこと意外は、何もしません
。言い換えると、TCPがデータを「ストリーム」
の状態でアプリケーションから受け取るのに対して、UDPは「データグラム」(データの塊)
を受け取る、という発想の違いがあります。つまり、アプリケーションの責任でデータの「荷造り」までしてもらい、
UDPはデータグラムを目的のコンピュータへ転送するだけ
です。
- データグラムはデータの塊で、目的のコンピュータへ転送するだけのもの
データグラムとストリームの違いは?
アプリケーションの責任でデータの「荷造り」までしてもらい、UDPはデータグラムを目的のコンピュータへ転送するだけです。
先の例で言えば、TCPが「荷造りサービス付の宅急便」だったのに対してUDPは「普通の宅急便」です。荷物をダンボールに詰めるところまではお客さん(アプリケーション)の仕事であり、運送屋さんはダンボールを指定された住所へ届けるだけです。
荷造りとは
(スル)品物を運送できるようにひもをかけたり、包んだりすること。「ガラス食器を慎重に—する」
感想
データグラムとはアプリケーション側に荷造りを任せるデータのことを言う
コネクションレスがUDPと関係があった