Explicación para la implementación del protocolo SCP en la biblioteca JSch

Estoy contemplando un ejemplo del uso de la biblioteca JSch que se puede encontrar aquí:
http://www.jcraft.com/jsch/examples/ScpFrom.java.html

No puedo entender varios patrones de código de este ejemplo. Aquí están:

¿Hay alguna razón para preferir SCP sobre SFTP, que se puede ejecutar con la misma biblioteca?

¿Por qué corremos?scp -f <remote file> en host remoto en lugar de ejecutarse simplementescp source_file_path destination_file_path? ¿Por qué la ejecución en host remoto es mejor?

Al comienzo de la transferencia hay una línea.

while(true){
int c=checkAck(in);
if(c!='C'){
    break;
}
...

cual es el significado de este mágicoC ¿letra? Por quéC?

¿Por qué enviar esta señal todo el tiempo?

// send '\0'
buf[0]=0; out.write(buf, 0, 1); out.flush();

¿Cómo puede leer esto el tamaño del archivo?

long filesize=0L;
while(true){
    if(in.read(buf, 0, 1)<0){
        // error
        break; 
    }
    if(buf[0]==' ')break;
    filesize=filesize*10L+(long)(buf[0]-'0'); //What is this??
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta