6.2. Compression (Compressione)
6.2. Compression (Compressione)
Se la compressione è stata negoziata, il campo payload (e solo esso) sarà compresso utilizzando l'algoritmo negoziato. Il campo packet_length e mac saranno calcolati dal payload compresso. La crittografia sarà eseguita dopo la compressione.
La compressione PUÒ essere con stato, a seconda del metodo. La compressione DEVE essere indipendente per ogni direzione, e le implementazioni DEVONO consentire la scelta indipendente dell'algoritmo per ogni direzione. In pratica tuttavia, è RACCOMANDATO che il metodo di compressione sia lo stesso in entrambe le direzioni.
I metodi di compressione attualmente definiti sono i seguenti:
none REQUIRED nessuna compressione
zlib OPTIONAL compressione ZLIB (LZ77)
La compressione "zlib" è descritta in [RFC1950] e in [RFC1951]. Il contesto di compressione viene inizializzato dopo ogni scambio di chiavi e viene passato da un pacchetto al successivo, con solo uno scarico parziale eseguito alla fine di ogni pacchetto. Uno scarico parziale significa che il blocco compresso corrente viene terminato e tutti i dati verranno emessi. Se il blocco corrente non è un blocco memorizzato, uno o più blocchi vuoti vengono aggiunti dopo il blocco corrente per garantire che ci siano almeno 8 bit, contando dall'inizio del codice di fine blocco del blocco corrente alla fine del payload del pacchetto.
Metodi aggiuntivi possono essere definiti come specificato in [SSH-ARCH] e [SSH-NUMBERS].