FTP
一、兩種傳輸方式
ASCII傳輸方式
假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那台計算機存儲文本文件的格式。
但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,數據庫,字處理文件或者壓縮文件。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝。
二進制傳輸方式
在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。
如在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會損壞數據。(ASCII方式一般假設每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果傳輸二進制文件,所有的位都是重要的。)
二、兩種工作模式
主動模式(PORT)
1.FTP 客戶端首先和服務器的TCP 21端口建立連接,用來發送命令;
2.客戶端需要接收數據的時候在這個通道上給服務器發送PORT命令。PORT命令包含了客戶端用來接收數據的端口號;
3.在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。(FTP server必須和客戶端建立一個新的連接用來傳送數據。)
被動模式(PASV)
1.FTP 客戶端首先和服務器的TCP 21端口建立連接,用來發送命令(建立控制通道和Standard模式類似);
2.建立連接后發送Pasv命令。
3.服務器收到Pasv命令后,打開一個臨時端口(端口號大於1023小於65535)並且通知客戶端在這個端口上傳送數據的請求;
4.客戶端連接FTP服務器此端口,然后FTP服務器將通過這個端口傳送數據。
簡而言之,主動模式的FTP是指服務器主動連接客戶端的數據端口,被動模式的FTP是指服務器被動地等待客戶端連接自己的數據端口。
被動模式的FTP通常用在處於防火牆之后的FTP客戶端訪問外界FTP服務器的情況,因為在這種情況下,防火牆通常配置為不允許外界訪問防火牆之后主機,而只允許由防火牆之后的主機發起的連接請求通過。因此,在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作。(相反,客戶端訪問處於防火牆之后的FTP服務器則要用到主動模式)
FTPS與SFTP的對比
1.都是為ftp連接加密,協議非常相似。
2.FTPS是借助ssl協議加密,SFTP是借助ssh加密。ssl是為http/smtp等加密設計的,ssh是為telnet/ftp等加密、建立傳輸通道而設計的。
3.其實ssh建立傳輸通道就是為了加密和傳輸,而且這個通道是可以用來遠程登錄。
4.如果只說它們的功能,通俗的講,ssh就像鋪管子,ssl就像打包裹,鋪管子和打包裹都會使數據安全,都是一個制作密鑰的過程,而因為ssh是一個管子所以它很適合ftp的安全傳輸。
簡單的講:sftp協議是ssh中的一條獨立的協議,利用sftp服務器就可以傳輸數據。
而ftps是ftp-over-ssl的意思,即ftp借助ssl協議加密傳輸,不但要用ftp服務器還要用ssl協議加密。(如果是ftp-over-ssh,就是完全不同於sftp的傳輸方式了,就是利用ftp服務器和ssh協議加密傳輸數據。 )
