關于FTP傳輸協(xié)議的應用詳解
FTP的目標:
1)促進程序、數(shù)據(jù)文件按的共享;
2)鼓勵使用遠程計算機;
3)使用戶不必面對不同主機上不同文件系統(tǒng)的差異;
4)對數(shù)據(jù)進行高效可靠的傳輸
FTP的作用:
就是讓用戶連接上一個遠程計算機,察看遠程計算機有哪些文件,然后把文件從遠程計算機山拷貝到本地計算機,或把
本地計算機的文件送到遠程計算機去。
FTP的術語:
1)控制連接:
用戶PI與服務器PI喲很難過來交換命令和響應的信息路徑。
2)數(shù)據(jù)連接:
用規(guī)定的模式和類型進行數(shù)據(jù)傳輸?shù)娜p向連接。傳輸?shù)臄?shù)據(jù)可能是文件的一部分、整個文件或一些文件。傳輸路徑、
可能是服務器DTP與用戶DTP之間或服務器DTP之間。
3)DTP:
數(shù)據(jù)傳輸過程,用來建立并管理數(shù)據(jù)連接。DTP可以是被動或主動。
4)PI:
協(xié)議解析器。用戶和服務器用來解析協(xié)議,他們的具體實現(xiàn)分別稱為用戶PI和服務器PI。
5)服務器DTP:
數(shù)據(jù)傳輸過程,在通常的“主動”狀態(tài)下是用“監(jiān)聽”的數(shù)據(jù)端口建立數(shù)據(jù)連接。它建立傳輸和存儲參數(shù),并在服務器端
PI的命令下傳輸數(shù)據(jù)。服務器端DTP也可以用于“被動”模式,而不是主動在數(shù)據(jù)端口建立連接。
6)服務器PI:
服務器PI在L端口“監(jiān)聽”用戶協(xié)議解析器的連接請求并建立控制連接。它從用戶PI接收標準的FTP命令,發(fā)送響應,并管理服務器DTP;
7)用戶DTP:
數(shù)據(jù)傳輸過程在數(shù)據(jù)端口“監(jiān)聽”服務器FTP過程的連接。如果兩個服務器通過它來傳輸數(shù)據(jù)。
8)用戶PI:
用戶協(xié)議解析器用U端口建立服務器FTP過程的控制連接,并在文件傳輸時管理用戶DTP。
FTP模型:
上圖模型中,控制連接由用戶PI發(fā)起。首先用戶由用戶PI產(chǎn)生標準FTP命令通過控制連接傳輸?shù)椒掌鬟^程。標準響應由服務器
端PI通過數(shù)據(jù)連接發(fā)送到用戶PI發(fā)送到用戶PI作為命令的響應。
FTP命令制定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作種類。用戶DTP則應在制定的數(shù)據(jù)接口“監(jiān)聽”,服務器用相應的參數(shù)發(fā)起數(shù)據(jù)連接并
傳送數(shù)據(jù)。而數(shù)據(jù)接口主機不一定必須與發(fā)送FTP命令的主機一致,但用戶或用戶FTP過程要保證指定的端口處在“監(jiān)聽”下。
數(shù)據(jù)傳輸功能:
文件只能通過數(shù)據(jù)連接傳輸。控制連接用來發(fā)送操作命令以及相應的命令響應。
4.1 數(shù)據(jù)類型:
1) ASCII 類型:
缺省類型,必須被所有FTP實現(xiàn)支持。主要用來傳輸文本文件,除非主機雙方認為EBCDIC類型方便。
2) EBCDIC 類型:
這種類型用來在使用EBCDIC編碼的主機間高效的傳輸。
3) 圖像類項:
數(shù)據(jù)以8位連續(xù)字節(jié)傳輸。接收端必須講數(shù)據(jù)儲存為連續(xù)位。
目的:為了高效的存儲和檢索文件,以及傳輸二進制文件。
4)本地類型:
數(shù)據(jù)以參數(shù)Byte size指定的邏輯字節(jié)長度傳輸。字節(jié)長度必須是十進制整數(shù),并且沒有缺省值。
5)格式控制:
ASCII和EBCDIC 類型也支持第二個可選的參數(shù)。這代表了一種縱向的文件格式控制。
6)非打印
一般被用在處理或存儲。
7)TELNET格式控制:
8)CARRIAGECONTROL
數(shù)據(jù)結構:
由于表示文件類型不同,F(xiàn)TP允許文件具有指定的結構.具有三種結構:
1)文件結構:
如果沒有使用結構命令,我呢就愛你結構就默認使用。
在文件結構中沒有內部結構,文件被當作連續(xù)的字節(jié)流。
2)記錄結構:
在記錄結構中,問價由連續(xù)的記錄組成。
3)頁結構:
為了傳輸不連續(xù)的文件,F(xiàn)TP定義了頁結構。
建立數(shù)據(jù)連接:
傳輸數(shù)據(jù)的過程包括在指定端口建立數(shù)據(jù)連接選擇傳輸參數(shù)。用戶和服務器DTP 都有缺省的端口號。
用戶過程缺省的數(shù)據(jù)端口與控制連接端口相同(也就是,端口U)。服務器過程的默認端口與控制連接的端口相鄰(也就是L-1)。
傳輸字節(jié)長度是8 位字節(jié)長。這個字節(jié)長度只與實際傳輸數(shù)據(jù)有關;而與主機文件系統(tǒng)
的數(shù)據(jù)表示無關。
被動數(shù)據(jù)傳輸過程(可能是用戶DTP 或另一服務器DTP)應該在發(fā)送FTP 請求命令之前“監(jiān)聽”在數(shù)據(jù)端口。
FTP 請求命令決定了數(shù)據(jù)傳輸方向。服務器在接到傳輸請求后將建立到指定端口的連接。當連接建立后,
數(shù)據(jù)將在兩端DTP 間傳輸,同時服務器PI 向用戶PI 發(fā)送確認回復。
每個FTP 實現(xiàn)必須支持使用缺省的數(shù)據(jù)端口,只有用戶PI 可以使用變化的非缺省端口。
用戶可能會用PORT 命令指定一個其他的數(shù)據(jù)端口。用戶可能想將文件下載到TAC 行
式打印機或者從第三方主機下載。后種情況下,用戶PI 同時建立到兩服務器PI 的控制連接。
一個服務器(用FTP 命令)等待連接,另一個服務器建立連接。用戶PI 給一個服務器PI發(fā)送PORT 命令指示另一服務器的數(shù)據(jù)端口。
最后,向兩端發(fā)送合適的傳輸命令。
傳輸模式:
1)流模式:
數(shù)據(jù)以字節(jié)流傳輸。對表示類型沒有限制;
2)快模式
文件以連續(xù)的帶有數(shù)據(jù)頭的數(shù)據(jù)塊來傳輸。數(shù)據(jù)頭包括一個計數(shù)域和描述碼。計數(shù)域指示了數(shù)據(jù)塊整個長度,由此可以計算出下一個
數(shù)據(jù)塊的開始位置。描述碼定義了文件最后一塊,記錄最后塊,重開始標記或懷疑數(shù)據(jù)。
3)壓縮模式
此模式下,有三種信息要發(fā)送:常規(guī)數(shù)據(jù),以字節(jié)串發(fā)送;壓縮數(shù)據(jù),包括復本或填充;控制信息,以兩字節(jié)的轉移字符傳送。
文件傳送功能:
從用戶PI 到服務器PI 的傳輸通道是通過一個從用戶到標準服務器端口的TCP 連接建
立的。用戶PI 負責發(fā)送FTP 命令并解析接收到的響應;服務器PI 解析命令,發(fā)送響應以
及控制DTP 建立數(shù)據(jù)連接并傳送數(shù)據(jù)。如果數(shù)據(jù)傳輸(被動傳輸過程)的另一端是用戶DTP,
則用戶DTP 由用戶FTP 主機的內部協(xié)議控制;如果另一端是另一個服務器DTP,則這個服
務器DTP 由用戶PI 通過發(fā)送命令來控制。
FTP 命令:
1)訪問控制命令:
用戶名:USER
密碼: PASS
賬戶: ACCT
改變工作目錄: CWD
返回上層目錄: CDUP
結構裝備: SMNT
重新初始化: REIN
注銷: QUIT
2)傳輸參數(shù)命令:
數(shù)據(jù)端口:PORT
被動: PASV
表示類型:TYPE
文件結構:STRU
F- 文件
R- 記錄結構
P-頁結構
傳輸模式:MODE
S-流
B-塊
C-壓縮
3)FTP服務命令:
獲得:RETR
保存:STOR
唯一保存:STOU
追加:APPE
分配:ALLO
重新開始:REST
重命名開始:RNFR
重命名為:RNTO
放棄:ABOR
刪除:DELE
刪除目錄:RMD
新建目錄:MKD
打印工作目錄:PWD
列表:LIST
名字列表:NLST
站點參數(shù):SITE
系統(tǒng):SYST
狀態(tài):STAT
幫助:HELP
空操作:NOOP
FTP響應:
FTP 響應由3 位數(shù)字組成(以3 個數(shù)字字符傳遞)后面跟著一些文本。3 位數(shù)字的每一位都有特定的意義。允許用戶進程將復雜的響應簡化。
第一位數(shù)字標識了響應是好,壞或者未完成。
1)響應的第一位數(shù)字可能有以下五個值:
1yz,預備狀態(tài)
2yz,完成狀態(tài)
3yz,中間狀態(tài)
4yz,暫時拒絕狀態(tài)
5yz,永久拒絕狀態(tài)
2)下面為第二位數(shù)字的功能:
x0z 語法- 這種響應指出了語法錯誤。給出的命令不存在、沒有被實現(xiàn)、或多余。
x1z 信息- 對于請求信息的響應,比如對狀態(tài)或幫助的請求。
x2z 連接- 關于控制連接和數(shù)據(jù)連接的響應。
x3z 身份驗證和帳戶- 對登陸過程和帳戶處理的響應。
x4z 目前還未使用。
x5z 文件系統(tǒng)- 請求傳輸時服務器文件系統(tǒng)的狀態(tài)或其他文件系統(tǒng)動作狀態(tài)。
3)第三位數(shù)字為第二位數(shù)字指定的狀態(tài)提供了更詳細的意義。
最小實現(xiàn):
為了讓FTP 能夠不出錯誤的工作,服務器必需具備以下最小實現(xiàn):
類型- ASCII 非打印
模式- 流模式
結構- 文件結構,記錄結構
命令- USER, QUIT, PORT,TYPE, MODE, STRU,相應的默認值,RETR, STOR,NOOP.
傳輸參數(shù)的默認值為:
類型- ASCII 非打印
模式- 流模式
結構- 文件結構
所有主機必需接受上面這些標準的默認值。




















