FTP傳輸有兩種模式:ASCII傳輸模式和二進制數據傳輸模式。
1.ASCII傳輸模式:假設用戶正在復制的文件包含簡單的ASCII代碼文本,如果遠程機器沒有運行UNIX,ftp通常會在文件傳輸時自動調整文件的內容,以便將文件解釋為存儲在另壹臺計算機上的文本文件的格式。
然而,經常出現的情況是,用戶正在傳輸的文件不包含文本文件,而可能是程序、數據庫、字處理文件或壓縮文件(雖然字處理文件包含的大部分是文本,包括指示頁面大小、字體和其他信息的非打印字符)。在復制任何非文本文件之前,用binary命令告訴ftp逐字復制,不要處理這些文件,這也是下面要討論的二進制傳輸。
2.二進制傳輸模式:在二進制傳輸中,保存文件的位序,使原文件和復制文件壹壹對應。即使包含目標機器上的位序列的文件是無意義的。例如,macintosh以二進制模式向Windows系統發送壹個可執行文件,但是這個文件不能在另壹個系統上執行。
如果以ASCII模式傳輸二進制文件,即使不需要,仍然會進行翻譯。這樣會稍微減慢傳輸速度,也會損壞數據,使文件無法使用。(在大多數計算機上,ASCII壹般假設每個字符的第壹個有效位是無意義的,因為ASCII字符組合不使用它。如果妳傳輸壹個二進制文件,所有的位都是重要的。如果您知道兩臺機器是相同的,那麽二進制模式對文本文件和數據文件都有效。
5.FTP如何工作
FTP支持兩種模式,壹種叫標準(即端口模式,主動模式),壹種叫被動(即PASV,被動模式)。標準模式FTP的客戶端向FTP服務器發送PORT命令。被動FTP客戶端向FTP服務器發送PASV命令。
以下是這兩種方法的工作原理:
端口模式FTP客戶端首先與FTP服務器的TCP 21端口建立連接,通過該通道發送命令。當客戶端需要接收數據時,它在這個通道上發送端口命令。PORT命令包含客戶端用來接收數據的端口。傳輸數據時,服務器通過自己的TCP 20端口連接到客戶端的指定端口發送數據。FTP服務器必須與客戶端建立新的連接來傳輸數據。
被動模式在建立控制通道時類似於標準模式,但它在建立連接後發送Pasv命令而不是Port命令。FTP服務器收到Pasv命令後,隨機打開壹個高端端口(端口號大於1024),通知客戶端在該端口上傳輸數據的請求。客戶端連接到FTP服務器的這個端口,然後FTP服務器會通過這個端口傳輸數據。此時,FTP服務器不再需要與客戶端建立新的連接。
很多防火墻在設置的時候是不允許接受外部連接的,所以很多位於防火墻或者內網後面的FTP服務器都不支持PASV模式,因為客戶端無法通過防火墻打開FTP服務器的高端端口;但是內網很多客戶端無法以端口模式登錄FTP服務器,因為來自服務器的TCP 20無法與內網客戶端建立新的連接,導致無法工作。