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