FTP�(xié)議是File Transfer Protocol(文件傳輸協(xié)議)的英文簡�。它是用于在�(wǎng)�(luò)上進行文件傳輸?shù)囊惶讟藴蕝f(xié)議,屬于�(wǎng)�(luò)�(xié)議組的應(yīng)用層,同時它也是一個應(yīng)用程序。用戶可以通過它把自己的PC機與世界各地所有運行FTP�(xié)議的服務(wù)器相�,訪問服�(wù)器上的大量程序和信息�
起初� FTP并不是應(yīng)用于IP�(wǎng)�(luò)上的�(xié)�,而是ARPANEt�(wǎng)�(luò)中計算機間的文件傳輸�(xié)議, ARPANET是美國國防部組建的老網(wǎng)�(luò),于1960-1980年使�。在那時� FTP的主要功能是在主機間高速可靠地傳輸文件。目前FTP仍然保持其可靠性,即使在今�,它還允許文件遠程存�。這使得用戶可以在某個系�(tǒng)上工作,而將 文件存貯在別的系�(tǒng)。例�,如果某用戶運行Web服務(wù)�,需要從遠程主機上取得HTML文件和CGI程序在本機上工作,他需要從遠程存儲站點獲取文件(� 程站點也需安裝Web服務(wù)�)。當用戶完成工作�,可使用FTP將文件傳回到Web服務(wù)�。采用這種方法,用戶無需使用Telnet登錄到遠程主機進行� �,這樣就使Web服務(wù)器的更新工作變得如此的輕��
FTP是TCP/IP的一種具體應(yīng)�,它工作在OSI模型的第七層,TCP模型的第四層上,即應(yīng)用層,使用TCP 傳輸而不是UDP,這樣FTP客戶在和服務(wù)器建立連接前就要經(jīng)過一個被廣為熟知�"三次握手"的過�,它帶來的意義在于客戶與服務(wù)器之間的連接是可靠的� 而且是面向連接,為�(shù)�(jù)的傳輸提供了可靠的保��
FTP有兩個過程:一個是控制連接,一個是�(shù)�(jù)傳輸�
FTP�(xié)議不像HTTP�(xié)議一樣需要一個端口作為連接(默認時HTTP端口�80,F(xiàn)TP端口� 21)。FTP�(xié)議需要兩個端�,一個端口是作為控制連接端口,也就是FTP�21端口,用于發(fā)送指令給服務(wù)器以及等待服�(wù)器響�(yīng);另外一個端口用于數(shù)�(jù)傳輸端口,端口號�20(僅用PORT模式�,是用建立數(shù)�(jù)傳輸通道�,主要作用是從客戶向服務(wù)器發(fā)送一個文�,從服務(wù)器向客戶�(fā)送一個文件,從服�(wù)器向客戶�(fā)送文件或目錄列表�
FTP�(xié)議的主要作用就是讓用戶連接上一個遠程計算機(這些計算機上運行著FTP服務(wù)器程序)察看遠程計算機有哪些文件,然后把文件從遠程計算機上拷到本地計算機,或把本地計算機的文件送到遠程計算機去�
FTP�(xié)議可以實�(xiàn)以下目標�
1.可靠和高效的傳輸�(shù)�(jù)
2.鼓勵間接或者隱式的使用遠程計算�
3.促進文件的共享(計算機程序或數(shù)�(jù)�
4.向用戶屏蔽不同主機中各種文件存儲系統(tǒng)(Filesystem)的細節(jié)
FTP�(xié)議的傳輸有兩種方式:ASCII傳輸模式和二進制�(shù)�(jù)傳輸模式�
1.ASCII傳輸方式
假定用戶正在拷貝的文件包含的簡單ASCII碼文�,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地�(diào)整文件的�(nèi)容以便于把文件解釋成另外那臺計算機存儲文本文件的格式�
但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚�?,它們可能是程序�?shù)�(jù)�,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印字符�。在拷貝任何非文本文件之�,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸�
2.二進制傳輸模式
在二進制傳輸中,保存文件的位�,以便原始和拷貝的是逐位一一對應(yīng)的。即使目的地機器上包含位序列的文件是沒意義的。例�,macintosh以二進制方式傳送可�(zhí)行文件到Windows系統(tǒng),在對方系統(tǒng)�,此文件不能�(zhí)行�
如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會�(zhuǎn)�。這會使傳輸稍微變� ,也會損壞數(shù)�(jù),使文件變得不能�。(在大多數(shù)計算機上,ASCII方式一般假�(shè)每一字符的有效位無意義,因為ASCII字符組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩臺機器是同樣的,則二進制方式對文本文件和�(shù)�(jù)文件都是有效��
FTP支持兩種工作方式:一種方式叫做Standard (也就� PORT方式,主動方�),一種是 Passive (也就是PASV,被動方�)�
Standard模式FTP的客戶端�(fā)送PORT命令到FTP服務(wù)�。Standard模式FTP客戶端首先和FTP服務(wù)器的TCP 21端口建立連接,通過這個通道�(fā)送命�,客戶端需要接收數(shù)�(jù)的時候在這個通道上發(fā)送PORT命令� PORT命令包含了客戶端用什么端口接收數(shù)�(jù)。在傳送數(shù)�(jù)的時�,服�(wù)器端通過自己的TCP 20端口連接至客戶端的指定端口發(fā)送數(shù)�(jù)� FTP server必須和客戶端建立一個新的連接用來傳送數(shù)�(jù)�
Passive模式FTP的客戶端�(fā)送PASV命令到FTPServer。Passive模式在建立控制通道的時候和Standard模式類似,但建立連接后發(fā)送的不是Port命令,而是Pasv命令。FTP服務(wù)器收到Pasv命令�,隨機打開一個臨時端口(也叫自由端口,端口號大于1023小于65535)并且通知客戶端在這個端口上傳送數(shù)�(jù)的請求,客戶端連接FTP服務(wù)器此端口,然后FTP服務(wù)器將通過這個端口進行�(shù)�(jù)的傳�,這個時候FTP server不再需要建立一個新的和客戶端之間的連接�