Diferença entre FTP / FTPS / SFTP - Conexão configurável para qualquer um deles

Eu tenho um requisito, como a necessidade de criar um aplicativo C # que carregue um arquivo do Excel no servidor "FTP / SFTP" com base nas configurações inseridas noapp.config arquivo (usando "ftp \ ftps \ sftp").

Eu sou novo nesses protocolos, com tantas dúvidas.

Qual é a diferença entre o servidor FTP e SFTP?É possível acessar o servidor FTP usando os métodos de conexão SFTP e vice-versa (guiado para usar a biblioteca Rebex para conectar-se ao SFTP)?Como alterar o seguinte método de upload de FTP para FTPS

O código está abaixo:

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(); 

É como mudarurl de FTP para FTPS?

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