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