Passa al contenuto principale

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].