FTP文件傳輸協議兩種模式-主動模式和被動模式


http://blog.csdn.net/xwdpepsi/article/details/9269787

TCP/IP協議中,FTP標准命令TCP端口號為21,Port方式數據端口為20。FTP協議的任務是從一台計算機將文件傳送到另一台計算機,它與這兩台計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系統無關。假設兩台計算機通過ftp協議對話,並且能訪問Internet, 你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。
 

  FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。

 

  1.ASCII傳輸方式:假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那台計算機存儲文本文件的格式。

 

  但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,數據庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印字符)。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。

 

  2.二進制傳輸模式:在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。

 

  如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多數計算機上,ASCII方式一般假設每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩台機器是同樣的,則二進制方式對文本文件和數據文件都是有效的。

 

  5. FTP的工作方式

 

  FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP服務器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。

 

  下面介紹一個這兩種方式的工作原理:

 

  Port模式FTP 客戶端首先和FTP服務器的TCP 21端口建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什么端口接收數據。在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。

 

  Passive模式在建立控制通道的時候和Standard模式類似,但建立連接后發送的不是Port命令,而是Pasv命令。FTP服務器收到Pasv命令后,隨機打開一個臨時端口(也叫自由端口,端口號大於1023小於65535)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然后FTP服務器將通過這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。

 

  很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆后或內網的FTP服務器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP服務器的高端端口;而許多內網的客戶端不能用PORT模式登陸FTP服務器,因為從服務器的TCP 20無法和內部網絡的客戶端建立一個新的連接,造成無法工作。

 

  FTP軟件可以更好的幫助你管理FTP目錄 提供更系統的工具

 

  FTP工具推薦使用 cuteftp

 

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

 

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

 

  客戶端打開一個隨機的端口(端口號大於1024,在這里,我們稱它為x),同時一個FTP進程連接至服務器的21號命令端口。此時,源端口為隨機端口x,在客戶端,遠程端口為21,在服務器。

 

  客戶端開始監聽端口(x+1),同時向服務器發送一個端口命令(通過服務器的21號命令端口),此命令告訴服務器客戶端正在監聽的端口號並且已准備好從此端口接收數據。這個端口就是我們所知的數據端口。

 

  服務器打開20號源端口並且建立和客戶端數據端口的連接。此時,源端口為20,遠程數據端口為(x+1)。

 

  客戶端通過本地的數據端口建立一個和服務器20號端口的連接,然后向服務器發送一個應答,告訴服務器它已經建立好了一個連接。

FTP有兩種使用模式:主動和被動。主動模式要求客戶端和服務器端同時打開並且監聽一個端口以建立連接。在這種情況下,客戶端由於安裝了防火牆會產生一些問題。所以,創立了被動模式。被動模式只要求服務器端產生一個監聽相應端口的進程,這樣就可以繞過客戶端安裝了防火牆的問題。 [4]
一個主動模式的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響應和數據到客戶端的數據端口)

編輯本段協議結構

命令
描述
ABOR
中斷數據連接程序
ACCT <account>
系統特權帳號
ALLO <bytes>
為服務器上的文件存儲器分配字節
APPE <filename>
添加文件到服務器同名文件
CDUP <dir path>
改變服務器上的父目錄
CWD <dir path>
改變服務器上的工作目錄
DELE <filename>
刪除服務器上的指定文件
HELP <command>
返回指定命令信息
LIST <name>
如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode>
傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory>
在服務器上建立指定目錄
NLST <directory>
列出指定目錄內容
NOOP
無動作,除了來自服務器上的承認
PASS <password>
系統登錄密碼
PASV
請求服務器等待數據連接
PORT <address>
IP 地址和兩字節的端口 ID
PWD
顯示當前工作目錄
QUIT
從 FTP 服務器上退出登錄
REIN
重新初始化登錄狀態連接
REST <offset>
由特定偏移量重啟文件傳遞
RETR <filename>
從服務器上找回(復制)文件
RMD <directory>
在服務器上刪除指定目錄
RNFR <old path>
對舊路徑重命名
RNTO <new path>
對新路徑重命名
SITE <params>
由服務器提供的站點特殊參數
SMNT <pathname>
掛載指定文件結構
STAT <directory>
在當前程序或目錄上返回信息
STOR <filename>
儲存(復制)文件到服務器上
STOU <filename>
儲存文件到服務器名稱上
STRU <type>
數據結構(F=文件,R=記錄,P=頁面)
SYST
返回服務器使用的操作系統
TYPE <data type>
數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>>
系統登錄的用戶名
標准 FTP 信息如下
響應代碼
解釋說明
110
新文件指示器上的重啟標記
120
服務器准備就緒的時間(分鍾數)
125
打開數據連接,開始傳輸
150
打開連接
200
成功
202
命令沒有執行
211
系統狀態回復
212
目錄狀態回復
213
文件狀態回復
214
幫助信息回復
215
系統類型回復
220
服務就緒
221
退出網絡
225
打開數據連接
226
結束數據連接
227
進入被動模式(IP 地址、ID 端口)
230
登錄因特網
250
文件行為完成
257
路徑名建立
331
要求密碼
332
要求帳號
350
文件行為暫停
421
服務關閉
425
無法打開數據連接
426
結束連接
450
文件不可用
451
遇到本地錯誤
452
磁盤空間不足
500
無效命令
501
錯誤參數
502
命令沒有執行
503
錯誤指令序列
504
無效命令參數
530
未登錄網絡
532
存儲文件需要帳號
550
文件不可用
551
不知道的頁類型
552
超過存儲分配
553
文件名不允許


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM