リモートコールフレームワークに関する記事の「フィルター(最大50%までスクロールダウン)」の章では、2つの圧縮方法について説明しています。
- ZLibステートレス圧縮
- ZLibステートフル圧縮
それらの違いは何ですか?それはZLibに関連していますか、それともこれらの一般的な圧縮方法ですか?
検索中に、ステートフルおよびステートレスのWebサービスしか見つかりませんでした。属性は、圧縮方法を説明するためのステートレス/フルではありませんか?
リモートコールフレームワークに関する記事の「フィルター(最大50%までスクロールダウン)」の章では、2つの圧縮方法について説明しています。
それらの違いは何ですか?それはZLibに関連していますか、それともこれらの一般的な圧縮方法ですか?
検索中に、ステートフルおよびステートレスのWebサービスしか見つかりませんでした。属性は、圧縮方法を説明するためのステートレス/フルではありませんか?
Transport Layer Security Protocol Compression Methodsから:
TLS で使用される圧縮方法は、ステートフル (圧縮されたすべてのレコードを通じてコンプレッサーがその状態を維持する) またはステートレス (コンプレッサーが各レコードを個別に圧縮する) のいずれかですが、TLS 内でステートレス圧縮方法を使用する利点はほとんど知られていないようです。
一部の圧縮方法には、パケット ペイロードの圧縮および解凍時に履歴情報を維持する機能があります。圧縮履歴を使用すると、パケットごとの
圧縮と比較して、ストリームでより高い圧縮率を実現できますが
、パケット間で履歴を維持することは、別のパケットに含まれるデータを完全に解凍するために必要なデータがパケットに含まれている可能性があることを意味します。したがって、履歴の維持には、信頼できるリンクと順序付けられたパケット配信の両方が必要です。TLS および下位層のプロトコルは、信頼性の高い順序付けられたパケット配信を提供するため、圧縮方法でサポートされている場合、圧縮履歴情報を維持および利用することができます。
一般に、ステートレスは過去のイベントの記憶を持たないプロセスを表し、ステートフルはそのような記憶を持っている (そしてそれを使用して意思決定を行う) プロセスを表します。
圧縮では、ステートレスとは、以前の入力に依存せずに、データのチャンクが何であれ、圧縮することを意味します。高速ですが、通常は圧縮が少なくなります。ステートフル圧縮は、以前のデータを調べて現在のデータを圧縮する方法を決定します。速度は遅くなりますが、圧縮率は大幅に向上します。
Zlib は適応型の圧縮アルゴリズムです。すべての圧縮アルゴリズムは、処理するデータが完全にランダムではないため、機能します。代わりに、それらの入力データは悪用できる不均一な分布を持っています。簡単な例として英語のテキストを取り上げます。手紙e
は手紙よりもはるかに一般的ですq
。Zlib はこれを検出し、レターのビット数を減らしますe
。
ここで、大量の短いテキスト メッセージを送信し、それらがすべて英語であることがわかっている場合は、Zlib ステートフル圧縮を使用する必要があります。e
すべてのメッセージで文字の低ビット表現を維持します。しかし、中国語、日本語、フランス語などのメッセージが混在している場合、ステートフル圧縮はもはやそれほどスマートではありません。e
日本語のテキストには文字がほとんどありません。ステートレス圧縮では、どの文字が一般的かをメッセージごとにチェックします。ZLib ステートレス圧縮のよく知られた例は PNG ファイル形式で、2 つの異なる画像間で状態を保持しません。