天天看點

什麼是linux的ftp

 FTP(File Transfer Protocol, FTP)是TCP/IP網絡上兩台計算機傳送檔案的協定,FTP是在TCP/IP網絡和INTERNET上最早使用的協定之一,

它屬于網絡協定組的應用層。FTP客戶機可以給伺服器發出指令來下載下傳檔案,上載檔案,建立或改變伺服器上的目錄。

 概述:

    FTP是應用層的協定,它基于傳輸層,為使用者服務,它們負責進行檔案的傳輸。FTP是一個8位的用戶端-伺服器協定,能操作任何類型的檔案而不需要進一步處理,就像MIME或Unencode一樣。但是,FTP有着極高的延時,這意味着,從開始請求到第一次接收需求資料之間的時間會非常長,并且不時的必需執行一些冗長的登陸程序。

FTP服務一般運作在20和21兩個端口。端口20用于在用戶端和伺服器之間傳輸資料流,而端口21用于傳輸控制流,并且是指令通向ftp伺服器的進口。當資料通過資料流傳輸時,控制流處于空閑狀态。而當控制流空閑很長時間後,用戶端的防火牆會将其會話置為逾時,這樣當大量資料通過防火牆時,會産生一些問題。此時,雖然檔案可以成功的傳輸,但因為控制會話會被防火牆斷開,傳輸會産生一些錯誤。

主動和被動模式

     FTP有兩種使用模式:主動和被動。主動模式要求用戶端和伺服器端同時打開并且監聽一個端口以建立連接配接。在這種情況下,用戶端由于安裝了防火牆會産生一些問題。是以,創立了被動模式。被動模式隻要求伺服器端産生一個監聽相應端口的程序,這樣就可以繞過用戶端安裝了防火牆的問題。

一個主動模式的FTP連接配接建立要遵循以下步驟:

1.用戶端打開一個随機的端口(端口号大于1024,在這裡,我們稱它為x),同時一個FTP程序連接配接至伺服器的21号指令端口。此時,源端口為随機端口x,在用戶端,遠端端口為21,在伺服器。

2.用戶端開始監聽端口(x+1),同時向伺服器發送一個端口指令(通過伺服器的21号指令端口),此指令告訴伺服器用戶端正在監聽的端口号并且已準備好從此端口接收資料。這個端口就是我們所知的資料端口。

3.伺服器打開20号源端口并且建立和用戶端資料端口的連接配接。此時,源端口為20,遠端資料端口為(x+1)。

4.用戶端通過本地的資料端口建立一個和伺服器20号端口的連接配接,然後向伺服器發送一個應答,告訴伺服器它已經建立好了一個連接配接。

被動模式FTP:

為了解決伺服器發起到客戶的連接配接的問題,人們開發了一種不同的FTP連接配接方式。這就是所謂的被動方式,或者叫做PASV,當用戶端通知伺服器它處于被動模式時才啟用。

在被動方式FTP中,指令連接配接和資料連接配接都由用戶端發起,這樣就可以解決從伺服器到用戶端的資料端口的入方向連接配接被防火牆過濾掉的問題。

當開啟一個 FTP連接配接時,用戶端打開兩個任意的非特權本地端口(N > 1024和N+1)。第一個端口連接配接伺服器的21端口,但與主動方式的FTP不同,用戶端不會送出PORT指令并允許伺服器來回連它的資料端口,而是送出 PASV指令。這樣做的結果是伺服器會開啟一個任意的非特權端口(P > 1024),并發送PORT P指令給用戶端。然後用戶端發起從本地端口N+1到伺服器的端口P的連接配接用來傳送資料。

對于伺服器端的防火牆來說,必須允許下面的通訊才能支援被動方式的FTP:

1. 從任何大于1024的端口到伺服器的21端口 (用戶端的初始化連接配接)

2. 伺服器的21端口到任何大于1024的端口 (伺服器響應到用戶端的控制端口的連接配接)

3. 從任何大于1024端口到伺服器的大于1024端口 (用戶端初始化資料連接配接到伺服器指定的任意端口)

4. 伺服器的大于1024端口到遠端的大于1024的端口(伺服器發送ACK響應和資料到用戶端的資料端口)

繼續閱讀