Diferencia entre FTP / FTPS / SFTP: conexión configurable a cualquiera de ellos

Tengo un requisito como la necesidad de crear una aplicación C # que cargue un archivo de Excel en el servidor "FTP / SFTP" según la configuración ingresada en elapp.config archivo (usando "ftp \ ftps \ sftp").

Soy nuevo en estos protocolos, tengo tantas dudas.

¿Cuál es la diferencia entre FTP y SFTP server?¿Es posible acceder al servidor FTP utilizando métodos de conexión SFTP y viceversa (guía para usar la biblioteca Rebex para conectarse a SFTP)?¿Cómo puede cambiar el siguiente método de carga FTP a FTPS?

El código está abajo:

string PureFileName = new FileInfo(fileName).Name;
string uploadUrl = String.Format("ftp://{0}/{1}", ftpurl, PureFileName);
FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create(uploadUrl);
req.Proxy = null;
req.Method = WebRequestMethods.Ftp.UploadFile;
req.Credentials = new NetworkCredential(user, pass);
req.UseBinary = true;
req.UsePassive = true;
byte[] data = File.ReadAllBytes(fileName);
req.ContentLength = data.Length;
Stream stream = req.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
FtpWebResponse res = (FtpWebResponse)req.GetResponse(); 

Es como cambiarurl de FTP a FTPS?

string uploadUrl = String.Format("ftps://{0}/{1}", ftpurl, PureFileName);

Respuestas a la pregunta(4)

Su respuesta a la pregunta