問題: データで何をする?

ネットワークの視点から見ると、アプリケーションプログラムが互いに送り合うメッセージは単なるバイトの連なりに過ぎない。しかしアプリケーションの視点から見ると、メッセージには様々なデータ ── 整数の配列、映像のフレーム、文章、画像など ── が含まれている。言い換えれば、そういったバイト列には意味がある。本章では、アプリケーションプログラムがやり取りする様々なデータをバイト列に符号化する最も優れた方法は何かという問題を考える。多くの点で、この問題は第 2 章で考えたバイト列を電磁信号に符号化する問題と共通点を持つ。

バイト列を電磁信号に符号化する方法に関する以前の議論を思い出すと、二つの懸念事項が存在していた。一つは送信側が送った信号を受け取った受信側がその信号からメッセージを取り出す方法であり、これはフレーム化問題と呼ばれる。もう一つは符号化処理を可能な限り効率良く行うことである。この二つの懸念事項はアプリケーションデータをネットワークメッセージに符号化するときにも登場する。

送信側が送ったメッセージを受け取った受信側がそのメッセージからデータを取り出すには、両者がメッセージのフォーマットに合意している必要がある。このフォーマットはしばしばプレゼンテーションフォーマット (presentation format)と呼ばれる。例えば送信側が整数の配列を送信するなら、整数の表現 (ビット長、バイトの順序、最上位ビットは最後か最初か、など) と配列の長さを送信側と受信側の両者が理解しておかなければならない。第 7.1 節では、整数、浮動小数点数、文字列、配列、構造体といったコンピューターにおける伝統的なデータの様々な符号化方式を説明する。また、マルチメディアデータに対しても標準的なフォーマットが存在する。例えば映像は Moving Picture Experts Group が作成した MPEG と呼ばれるフォーマットのいずれかで転送されることが多く、静止画像の転送には Joint Photographic Experts Group が作成した JPEG と呼ばれるフォーマットがたいてい使われる。第 7.2 節ではマルチメディアデータの符号化で発生する具体的な問題を議論する。

マルチメディアデータでは表現 (プレゼンテーション) と圧縮 (compression) の両方を考慮する必要がある。音声と映像の転送/保存に使われる有名なフォーマットはこの両方に対処している: 撮影、録音されたものが受信側で正しく解釈できつつも、そのマルチメディアデータがネットワークを圧倒することはない。

圧縮 (一般に符号化) には、1940 年代に情報理論の基礎を打ち立てた Shannon の研究から始まる長い歴史がある。この分野には二つの圧力がある。一方では、メッセージに誤りが加わった場合でも正しいデータを取り出せるようにデータの冗長性を可能な限り増やすことが望ましい。第 2.4 節で解説した誤り検出符号と誤り訂正符号はメッセージに冗長な情報を追加することでこれを行う。しかしもう一方では、符号が可能な限り短くなるようにデータから冗長性を可能な限り取り除くのが望ましい。人間の感覚器と脳が視覚信号および聴覚信号を処理するときの癖を利用することで、マルチメディアデータに様々な圧縮を加えられることが分かっている。例えば周波数が高すぎたり低すぎたりする音を人間の聴覚は捉えることができない。また、視覚が注目するのは主に全体像であり、細かい部分は (特に映像が動いている場合) それほど注目されない。

データ圧縮はネットワークの設計者にとって重要である。その理由は「優れた圧縮があるとネットワークの帯域が空くから」だけではない。例えば、圧縮アルゴリズムの設計は破棄されたデータや遅延したデータにどれだけ耐えられるかを決定するので、リソース割り当ての仕組みやエンドツーエンドプロトコルの設計に影響を及ぼす。また、ビデオ会議が開かれている施設が持つネットワークが固定された帯域を保証できないのなら、ネットワーク条件の変更に適応できる圧縮アルゴリズムが必要とされるだろう。

最後に、プレゼンテーションフォーマットへの変換とデータ圧縮の重要な特徴として、送信側および受信側のホストがメッセージに含まれるデータの全てのバイトを処理しなければならないことがある。このため、プレゼンテーションフォーマット化とデータ圧縮はしばしばデータ操作 (data manipulation) と呼ばれる。これに対して本書でこれまでに見てきたプロトコルの大部分はメッセージの内容を全く見ないので、データ操作とは無縁だった。データ操作を行うには、処理対象のデータを読み、計算を行い、計算結果をメッセージに 1 バイトずつ書き込む必要があるので、データ操作はネットワークのエンドツーエンドスループットに影響を及ぼす。一部のケースでは、データ操作がボトルネックになる場合もある。

広告