文件傳輸協(xié)議:FTP
典型的FTP會話中,用戶坐在一臺本地主機(jī)前面武福,向一臺遠(yuǎn)程主機(jī)傳輸/接收文件覆旱,為了使用戶能夠訪問他的遠(yuǎn)程賬戶,用戶必須提供一個(gè)用戶標(biāo)識和口令。
HTTP和FTP都是文件傳輸協(xié)議韩容,并且有很多的共同特點(diǎn)绪爸,然而這兩個(gè)應(yīng)用層協(xié)議也有一些重要的區(qū)別,之中最顯著的就是FTP使用了兩個(gè)并行的TCP連接來傳輸文件宙攻,一個(gè)是控制連接,一個(gè)是數(shù)據(jù)連接介褥∽颍控制連接用于在兩臺主機(jī)之間傳輸控制信息,如用戶標(biāo)識柔滔,口令溢陪,一些其他命令等;數(shù)據(jù)連接用于發(fā)發(fā)送實(shí)際文件睛廊。因此形真,我們稱FTP的控制信息是帶外傳送的,而HTTP協(xié)議是在傳輸文件的同一個(gè)TCP連接中發(fā)送請求和響應(yīng)行首部的超全,因此咆霜,HTTP也可以說是帶內(nèi)發(fā)送控制信息的。
用戶主機(jī)與遠(yuǎn)程主機(jī)開始一個(gè)FTP會話時(shí)嘶朱,F(xiàn)TP客戶端首先在服務(wù)器21號端口與服務(wù)器端發(fā)起一個(gè)用于控制的TCP連接蛾坯。當(dāng)FTP的服務(wù)器端從該連接上接收到一個(gè)文件傳輸命令后(無論是向還是來自遠(yuǎn)程主機(jī)),就發(fā)起一個(gè)到客戶端的TCP數(shù)據(jù)連接疏遏。FTP在該數(shù)據(jù)連接上準(zhǔn)確的傳送一個(gè)文件脉课,然后關(guān)閉該連接,在同一個(gè)會話期間财异,如果用戶還需要傳輸另一個(gè)文件倘零,F(xiàn)TP則打開另一個(gè)新的數(shù)據(jù)連接。因此戳寸,對于FTP傳輸而言呈驶,控制連接貫穿了整個(gè)會話,但是會話期間的每一次新的文件傳輸都需要建立一個(gè)新的數(shù)據(jù)連接庆揩。
FTP服務(wù)器必須在整個(gè)會話期間保留用戶的狀態(tài)俐东,而對每個(gè)進(jìn)行中的用戶會話的狀態(tài)信息進(jìn)行追蹤大大限制了FTP同時(shí)維持的會話總數(shù)。
FTP命令與回答
FTP命令和回答都是以7比特的ASCII格式在控制連接上傳送的订晌,每個(gè)命令由4個(gè)大寫的ASCII字符組成(有些具有可選參數(shù))虏辫,常見命令如下:
- USER username
- PASS password
- LIST :用于請求服務(wù)器傳送回當(dāng)前遠(yuǎn)程目錄中的所有文件列表(文件列表是新的數(shù)據(jù)連接傳送的);
- RETR filename : 用于從遠(yuǎn)程主機(jī)當(dāng)前目錄檢索(即get)文件锈拨;
- STOR filename : 用于遠(yuǎn)程主機(jī)當(dāng)前目錄存放文件砌庄;
每個(gè)命令都對應(yīng)著一個(gè)Fong服務(wù)器發(fā)向客戶的回答,回答是一個(gè)3未數(shù)字加上可選信息,常見的回答如下: - 331 Username OK, password required
- 125 Data connection already open; transfer starting
- 425 Can't open data connection
- 452 Error writing file