ftp協議

  • FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱爲“文傳協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。用戶可以通過它把自己的PC機與世界各地所有運行FTP協議的服務器相連,訪問服務器上的大量程序和信息。FTP的主要作用,就是讓用戶連接上一個遠程計算機(這些計算機上運行着FTP服務器程序)察看遠程計算機有哪些文件,然後把文件從遠程計算機上拷到本地計算機,或把本地計算機的文件送到遠程計算機去。
    工作原理

    舉例說明

      以下載文件爲例,當你啓動FTP從遠程計算機拷貝文件時實際上啓動了兩個程序:一個本地機上的FTP客戶程序,它向FTP服務器提出拷貝文件的請求。另一個是啓動在遠程計算機的上的FTP服務器程序,它響應你的請求把你指定的文件傳送到你的計算機中。FTP採用“客戶機/服務器”方式,用戶端要在自己的本地計算機上安裝FTP客戶程序。FTP客戶程序有字符界面和圖形界面兩種。字符界面的FTP的命令複雜、繁多。圖形界面的FTP客戶程序,操作上要簡潔方便的多。

    文件傳輸協議

      簡單地說,支持FTP協議的服務器就是FTP服務器,下面介紹一下什麼是FTP協議。(文件傳輸協議)

     

      一般來說,用互聯網的首要目的就是實現信息共享,文件傳輸是信息共享非常重要的一個內容之一。Internet上早期實現傳輸文件,並不是一件容易的事,我們知道 Internet是一個非常複雜的計算機環境,有PC,有工作站,有MAC,有大型機,而連接在Internet上的計算機有上千萬臺,並且這些計算機可能運行不同的操作系統,有運行Unix的服務器,也有運行Dos、Windows的PC機和運行MacOS的蘋果機等等,而各種操作系統之間的文件交流問題,需要建立一個統一的文件傳輸協議,這就是所謂的FTP。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議,這樣用戶就可以把自己的文件傳送給別人,或者從其它的用戶環境中獲得文件。

    服務器系統

      與大多數Internet服務一樣,FTP也是一個客戶機/服務器系統。用戶通過一個支持FTP協議的客戶機程序,連接到在遠程主機上的FTP服務器程序。用戶通過客戶機程序向服務器程序發出命令,服務器程序執行用戶所發出的命令,並將執行的結果返回到客戶機。比如說,用戶發出一條命令,要求服務器向用戶傳送某一個文件的一份拷貝,服務器會響應這條命令,將指定文件送至用戶的機器上。客戶機程序代表用戶接收到這個文件,將其存放在用戶目錄中。

     

      在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己的計算機上;"上傳"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上傳(下載)文件。

     

      使用FTP時必須首先登錄,在遠程主機上獲得相應的權限以後,方可下載或上傳文件。也就是說,要想同哪一臺計算機傳送文件,就必須具有哪一臺計算機的適當授權。換言之,除非有用戶ID和口令,否則便無法傳送文件。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可能要求每個用戶在每一臺主機上都擁有帳號。匿名FTP就是爲解決這個問題而產生的。

     

      匿名FTP是這樣一種機制,用戶可通過它連接到遠程主機上,並從其下載文件,而無需成爲其註冊用戶。系統管理員建立了一個特殊的用戶ID,名爲anonymous, Internet上的任何人在任何地方都可使用該用戶ID。

     

      通過FTP程序連接匿名FTP主機的方式同連接普通FTP主機的方式差不多,只是在要求提供用戶標識ID時必須輸入anonymous,該用戶ID的口令可以是任意的字符串。習慣上,用自己的E-mail地址作爲口令,使系統維護程序能夠記錄下來誰在存取這些文件。

     

      值得注意的是,匿名FTP不適用於所有Internet主機,它只適用於那些提供了這項服務的主機。

     

      當遠程主機提供匿名FTP服務時,會指定某些目錄向公衆開放,允許匿名存取。系統中的其餘目錄則處於隱匿狀態。作爲一種安全措施,大多數匿名FTP主機都允許用戶從其下載文件,而不允許用戶向其上傳文件,也就是說,用戶可將匿名FTP主機上的所有文件全部拷貝到自己的機器上,但不能將自己機器上的任何一個文件拷貝至匿名FTP主機上。即使有些匿名FTP主機確實允許用戶上傳文件,用戶也只能將文件上傳至某一指定上傳目錄中。隨後,系統管理員會去檢查這些文件,他會將這些文件移至另一個公共下載目錄中,供其他用戶下載,利用這種方式,遠程主機的用戶得到了保護,避免了有人上傳有問題的文件,如帶病毒的文件。

     

      作爲一個Internet用戶,可通過FTP在任何兩臺Internet主機之間拷貝文件。但是,實際上大多數人只有一個Internet帳戶,FTP主要用於下載公共文件,例如共享軟件、各公司技術支持文件等。 Internet上有成千上萬臺匿名FTP主機,這些主機上存放着數不清的文件,供用戶免費拷貝。實際上,幾乎所有類型的信息,所有類型的計算機程序都可以在Internet上找到。這是Internet吸引我們的重要原因之一。

    匿名ftp

      匿名FTP使用戶有機會存取到世界上最大的信息庫,這個信息庫是日積月累起來的,並且還在不斷增長,永不關閉,涉及到幾乎所有主題。而且,這一切是免費的。

     

      匿名FTP是Internet網上發佈軟件的常用方法。Internet之所以能延續到今天,是因爲人們使用通過標準協議提供標準服務的程序。像這樣的程序,有許多就是通過匿名FTP發佈的,任何人都可以存取它們。

     

      Internet中的有數目巨大的匿名FTP主機以及更多的文件,那麼到底怎樣才能知道某一特定文件位於哪個匿名FTP主機上的那個目錄中呢?這正是Archie服務器所要完成的工作。Archie將自動在FTP主機中進行搜索,構造一個包含全部文件目錄信息的數據庫,使你可以直接找到所需文件的位置信息。

     
    FTP的用戶分類及權限歸屬

    Real帳戶

      這類用戶是指在FTP服務上擁有帳號。當這類用戶登錄FTP服務器的時候,其默認的主目錄就是其帳號命名的目錄。但是,其還可以變更到其他目錄中去。如系統的主目錄等等。

    Guest用戶

      在FTP服務器中,我們往往會給不同的部門或者某個特定的用戶設置一個帳戶。但是,這個賬戶有個特點,就是其只能夠訪問自己的主目錄。服務器通過這種方式來保障FTP服務上其他文件的安全性。這類帳戶,在Vsftpd軟件中就叫做Guest用戶。擁有這類用戶的帳戶,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的文件。

    Anonymous(匿名)用戶

      這也是我們通常所說的匿名訪問。這類用戶是指在FTP服務器中沒有指定帳戶,但是其仍然可以進行匿名訪問某些公開的資源。

     

      在組建FTP服務器的時候,我們就需要根據用戶的類型,對用戶進行歸類。默認情況下,Vsftpd服務器會把建立的所有帳戶都歸屬爲Real用戶。但是,這往往不符合企業安全的需要。因爲這類用戶不僅可以訪問自己的主目錄,而且,還可以訪問其他用戶的目錄。這就給其他用戶所在的空間 帶來一定的安全隱患。所以,企業要根據實際情況,修改用戶所在的類別。[1]

     

     
    FTP客戶端

      ftp客戶端。體積可以說是最小的了,只有330K,免費中文版不需要漢化和破解的緣故吧。功能也非常強大,應有盡有。可以支持多線程上傳;還支持直接上傳壓縮包後在空間上直接解壓。

     

      8uftp是非常精闢的ftp客戶端。目前體積最小的FTP客戶端工具。

     

      終身免費中文版,非漢化版,非破解版。

     

      涵蓋其它FTP工具功能

     

      獨家支持多線程上傳,使上傳速度更快更穩定。

     

      同時支持直接上傳壓縮包,可在空間上直接解壓。也可以在空間上壓縮後直接下載壓縮包。

     

      8uftp 2.6 升級功能

     

      1.增加遠程ftp目錄的複製URL功能

     

      2.增加遠程ftp目錄和本地目錄對比的工具

     

  • What is FTP 
     FTP是另一個常見的應用程序,屬於網絡協議組的應用層,用於文件傳輸的 I n t e r n e t標準。與Te l n e t類似,F T P最早的設計是用於兩臺不同的主機,這兩個主機可能運行在不同的操作系統下、使用不同的文件結構、並可能使用不同字符集。

  • FTP協議介紹
     FTP與一般應用不同,它採用兩個 T C P連接來傳輸一個文件。

1) 控制連接以通常的客戶服務器方式建立。服務器以被動方式打開衆所周知的用於F T P的端口(21) ,等待客戶的連接。客戶則以主動方式打開 T C P端口2 1,來建立連接。控制連接始終等待客戶與服務器之間的通信。該連接將命令從客戶傳給服務器,並傳回服務器的應答。由於命令通常是由用戶鍵入的,所以 I P對控制連接的服務類型就是“最大限度地減小遲延” 。

2) 每當一個文件在客戶與服務器之間傳輸時,就創建一個數據連接。 (其他時間也可以創建,後面我們將說到) 。由於該連接用於傳輸目的,所以I P對數據連接的服務特點就是“最大限度提高吞吐量” 。數據連接有以下三大用途:從客戶向服務器發送一個文件、從服務器向客戶發送一個文件、從服務器向客戶發送文件或目錄列表。

       上圖描述了客戶與服務器以及它們之間的連接情況。從圖中可以看出,交互式用戶通常不處理在控制連接中轉換的命令和應答。這些細節均由兩個協議解釋器來完成。標有“用戶接口”的方框功能是按用戶所需提供各種交互界面(全屏幕菜單選擇,逐行輸入命令,等等) ,並把它們轉換成在控制連接上發送的 F T P命令。類似地,從控制連接上傳回的服務器應答也被轉換成用戶所需的交互格式。從圖中還可以看出,正是這兩個協議解釋器根據需要激活文件傳送功能。

  • FTP協議的details

       FTP有兩種使用模式:主動和被動。主動模式要求客戶端和服務器端同時打開並且監聽一個端口以建立連接。在這種情況下,客戶端由於安裝了防火牆會產生一些問題。所以,一般選擇被動模式。被動模式只要求服務器端產生一個監聽相應端口的進程,這樣就可以繞過客戶端安裝了防火牆的問題。

      一般來講,控制連接一直保持到客戶-服務器連接的全過程,但數據連接可以根據需要隨時開啓和結束。而通用的傳輸方式( U n i x環境下唯一的傳輸方式)是流方式,並且文件結尾是以關閉數據連接爲標誌。這意味着對每一個文件傳輸或目錄列表來說都要建立一個全新的數據連接。一個典型的主動方式的過程如下:

1) 客戶端打開一個隨機的端口(端口號大於1024,在這裏,我們稱它爲x),同時一個FTP進程連接至服務器的21號命令端口。此時,源端口爲客戶端隨機端口x,遠程端口爲服務器21。正由於是客戶發出命令要求建立數據連接,所以數據連接是在客戶的控制下建立的。

2) 客戶通常在客戶端主機上爲所在數據連接端選擇一個臨時端口號。客戶從該端口發佈一個被動的打開。

3) 客戶使用PORT命令從控制連接上把端口號(數據連接)發向服務器。

4) 服務器在控制連接上接收端口號,並向客戶端主機上的端口發佈一個主動的打開。服務器數據連接端一直使用端口20



爲了跟了解FTP的工作機制,啓用wireshark進行抓包得到如下的結果:

       圖中亮起的一行是本機37875端口向服務器的ftp-data(20)端口發送結束數據傳輸連接的【FIN,ACK】請求(在前面幾行還可以見到連接同步請求SYN)。

       控制連接的兩個端口號分別是40938和ftp(21)。

       此外,在百度百科中看見貌似啓用數據連接時用的是控制連接的隨機端口號+1,雖然在《TCP/IP詳解》中所舉例子都是符合這一說法,但是其在文中詳細說明的時候並沒有這樣表述。而且從抓包實驗中也可以看到,37875與40938貌似沒有服從這種+1的關係。

  • FTP主被動連接(PORT和PASV )

       主動連接 PORT和被動連接 PASV 方式 他們的區別就是在連接上服務器之後創建數據通道的時候:

  1. PORT 模式是建立從服務器高端口連到客戶端20端口數據連接PASV 模式是建立客戶高端口連到服務器返回的數據端口的數據連接PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器從20端口向客戶端的空閒端口發送連接請求,建立一條數據鏈路來傳送數據。
  2. PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端向服務器的空閒端口發送連接請求,建立一條數據鏈路來傳送數據。
  • FTP的IPv6擴展(EPRT和EPSV)

      FTP僅僅提供了建立在IPv4上進行數據通信的能力,它基於網絡地址是32位這一假設。比如原來的PORT命令格式如下PORT n1 ,n2 ,n3 ,n4 ,n5 ,n6 那麼有客戶端I P地址(n1 .n2 .n3 .n4)和端口(n5×2 5 6 +n6)。但是,當IPv6出現以後,地址就比32位長許多了。原來對FTP進行的擴展在多協議環境中有時會失敗。針對IPv6對FTP再次進行擴展,兩個FTP命令PORT和PASV通過擴展後,我們稱它們爲EPRT和EPSV。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章