6.2. Compression (压缩)
6.2. Compression (压缩)
如果已协商压缩, 则 payload 字段 (且仅此字段) 将使用协商的算法进行压缩.packet_length 字段和 mac 将从压缩后的有效载荷计算.加密将在压缩之后进行.
压缩可以是有状态的, 具体取决于方法.压缩必须对每个方向独立, 并且实现必须允许对每个方向独立选择算法.然而在实践中, 建议两个方向使用相同的压缩方法.
当前定义了以下压缩方法:
none REQUIRED 无压缩
zlib OPTIONAL ZLIB (LZ77) 压缩
"zlib" 压缩在 [RFC1950] 和 [RFC1951] 中描述.压缩上下文在每次密钥交换后初始化, 并从一个数据包传递到下一个数据包, 每个数据包结束时仅执行部分刷新.部分刷新意味着当前压缩块结束, 所有数据都将输出.如果当前块不是存储块, 则在当前块之后添加一个或多个空块, 以确保从当前块的块结束代码开始到数据包有效载荷结束至少有 8 位.
可以按照 [SSH-ARCH] 和 [SSH-NUMBERS] 中的规定定义其他方法.