6.2. Compression (圧縮)
6.2. Compression (圧縮)
圧縮がネゴシエートされている場合, payload フィールド (それのみ) はネゴシエートされたアルゴリズムを使用して圧縮される。packet_length フィールドと mac は圧縮されたペイロードから計算される。暗号化は圧縮後に行われる。
圧縮は, 方法に応じてステートフルであってもよい (MAY)。圧縮は各方向で独立していなければならず (MUST), 実装は各方向でアルゴリズムを独立して選択できるようにしなければならない (MUST)。ただし実際には, 両方向で同じ圧縮方法を使用することが推奨される (RECOMMENDED)。
現在定義されている圧縮方法は次のとおりである:
none REQUIRED 圧縮なし
zlib OPTIONAL ZLIB (LZ77) 圧縮
"zlib" 圧縮は [RFC1950] と [RFC1951] で説明されている。圧縮コンテキストは各鍵交換後に初期化され, 各パケットの終わりに部分フラッシュのみが実行されて, あるパケットから次のパケットに渡される。部分フラッシュとは, 現在の圧縮ブロックが終了し, すべてのデータが出力されることを意味する。現在のブロックが格納ブロックでない場合, 現在のブロックの後に 1 つ以上の空のブロックが追加され, 現在のブロックのブロック終了コードの開始からパケットペイロードの終わりまで少なくとも 8 ビットあることが保証される。
[SSH-ARCH] と [SSH-NUMBERS] で指定されているように追加の方法を定義してもよい。