FTP协议学习总结
文件傳輸協議(FTP)必將消亡
文件傳輸協議(FTP)在RFC 959中定義,于1985年10月發布。文件傳輸協議(FTP)被設計成為一個跨平臺的、簡單且易于實現的協議。
文件傳輸協議(FTP)有一個漫長的演化史,是互聯網上最重要的應用之一,但時至今日,卻已江河日下。本文作者從各方面列舉了一些
文件傳輸協議(FTP)為人詬病的缺點。
1.數據傳輸模式不合理
不考慮文件自身的內容,一味使用ASCII模式傳輸數據是不合理的。文件傳輸協議(FTP)應該具有自動檢測功能,當然用戶也可以進行
自定義。
雖然現在許多Linux和Windows客戶端已經支持自動傳輸模式,但多達數代的UNIX和Windows客戶端都默認使用ASCII傳輸模式,這種傳輸
模式甚至會造成文件損壞。
2.工作方式設計不合理
文件傳輸協議(FTP)可以在主動模式(PORT)或被動模式(PASV)下工作,這決定了數據鏈接建立的方式。
在主動模式下,客戶端首先向服務器端發送IP地址和端口號,然后等待服務器端建立TCP鏈接。在被動模式下,客戶端同樣首先建立到服
務器的鏈接,但服務器端會開啟一個端口(1024到5000之間),等待客戶端傳輸數據。
文件傳輸協議(FTP)中最讓人不可思議的是,客戶端會偵聽服務器端!
3.與防火墻工作不協調
在文件傳輸協議(FTP)誕生在網絡地址轉換(NAT)和防火墻之前,那時的網絡還不存在惡意攻擊。今天大多數最終用戶的IPv4地址已
不可路由,這是因為防火墻的使用和IPv4地址的短缺。
這對FTP意味著什么呢?這意味著如果FTP客戶端IP地址不可路由,或者位于防火墻之后,那么就只能使用被動傳輸模式進行數據傳輸。
如果服務器端的IP地址也不可路由,或者位于防火墻之后呢?FTP將無法進行數據傳輸!
現在,許多防火墻適用于NAT環境,可以使用一些特殊的技巧(hacks)允許FTP在防火墻之后正常工作。當然,這需要對防火墻進行配置
。
4.密碼安全策略不完善
在互聯網早期,文件傳輸協議(FTP)并沒有對密碼安全作出規定。在FTP客戶端和服務器端,數據以明文的形式傳輸,任何對通訊路徑
上的路由具有控制能力的人,都可以通過嗅探獲取你的密碼和數據。
我們當然可以使用SSL封裝FTP,但FTP是通過建立多次鏈接進行數據傳輸的,我們即便是保護了密碼安全,也很難保護數據傳輸的安全性
。
自文件傳輸協議(FTP)發布以來,安全的數據傳輸也經歷了長足發展,推薦使用SCP取代FTP進行文件傳輸。
5.FTP協議效率低下
從FTP服務器上檢索一個文件,包含繁復的交換握手步驟:
客戶端建立到FTP服務器端控制端口的TCP Socket鏈接,并等待TCP握手完成
客戶端等待服務器端發送回執
客戶端向服務器端發送用戶名并等待響應
客戶端向服務器端發送密碼并等待響應
客戶端向服務器端發送SYST命令并等待響應
客戶端向服務器端發送TYPE I命令并等待響應
如果用戶需要在服務器端切換目錄,客戶端仍然發送命令并等待響應
主動模式下,客戶端需要發送PORT命令到服務器端,然后等待響應(被動模式與主動模式相反)
建立數據傳輸鏈接(需要經過三次握手,建立一條TCP Socket連接)
通過鏈接傳輸數據
客戶端等待服務器端從控制連接發送2xx指令,以確保數據傳輸成功
客戶端發送QUIT命令,并等待服務器響應
同樣的情形,我們來看看HTTP協議:
HTTP客戶端向HTTP服務器端建立一條TCP Socket連接
HTTP客戶端向HTTP服務器端發送GET命令,包含URL、HTTP協議版本、虛擬主機名等等,并等待響應
HTTP服務器端的響應包含了所有想要的數據,完成!
傳輸一個文件,FTP需要往復10次,而HTTP只需要2次!如果傳輸多個文件,FTP可以省略發送用戶名和密碼的步驟,而HTTP則可以使用固
定的套接字(Socket),在相同的TCP連接中傳輸文件。
綜上所述,雖然文件傳輸協議(FTP)曾經顯赫一時,但現在已經過時了,它是一個既不不安全,也不不友好,而且效率低下的協議,勢
必被取而代之。
========
FTP協議詳解
FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用于Internet上的控制文件的雙向傳輸。
同時,它也是一個應用程序(Application)。用戶可以通過它把自己的PC機與世界各地所有運行FTP協議的服務器相連,訪問服務器上
的大量程序和信息。FTP的主要作用,就是讓用戶連接上一個遠程計算機(這些計算機上運行著FTP服務器程序)察看遠程計算機有哪些
文件,然后把文件從遠程計算機上拷到本地計算機,或把本地計算機的文件送到遠程計算機去。
工作原理
舉例說明
以下載文件為例,當你啟動FTP從遠程計算機拷貝文件時實際上啟動了兩個程序:一個本地機上的FTP客戶程序,它向FTP服務器提出
拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務器程序,它響應你的請求把你指定的文件傳送到你的計算機中。FTP采用“
客戶機/服務器”方式,用戶端要在自己的本地計算機上安裝FTP客戶程序。FTP客戶程序有字符界面和圖形界面兩種。字符界面的FTP的
命令復雜、繁多。圖形界面的FTP客戶程序,操作上要簡潔方便的多。
文件傳輸協議
簡單地說,支持FTP協議的服務器就是FTP服務器,下面介紹一下什么是FTP協議。(文件傳輸協議)
?
一般來說,用互聯網的首要目的就是實現信息共享,文件傳輸是信息共享非常重要的一個內容之一。Internet上早期實現傳輸文件
,并不是一件容易的事,我們知道 Internet是一個非常復雜的計算機環境,有PC,有工作站,有MAC,有大型機,而連接在Internet上
的計算機有上千萬臺,并且這些計算機可能運行不同的操作系統,有運行Unix的服務器,也有運行Dos、Windows的PC機和運行MacOS的蘋
果機等等,而各種操作系統之間的文件交流問題,需要建立一個統一的文件傳輸協議,這就是所謂的FTP。基于不同的操作系統有不同的
FTP應用程序,而所有這些應用程序都遵守同一種協議,這樣用戶就可以把自己的文件傳送給別人,或者從其它的用戶環境中獲得文件。
服務器系統
與大多數Internet服務一樣,FTP也是一個客戶機/服務器系統。用戶通過一個支持FTP協議的客戶機程序,連接到在遠程主機上的
FTP服務器程序。用戶通過客戶機程序向服務器程序發出命令,服務器程序執行用戶所發出的命令,并將執行的結果返回到客戶機。比如
說,用戶發出一條命令,要求服務器向用戶傳送某一個文件的一份拷貝,服務器會響應這條命令,將指定文件送至用戶的機器上。客戶
機程序代表用戶接收到這個文件,將其存放在用戶目錄中。
?
在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己
的計算機上;"上傳"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程
主機上傳(下載)文件。
?
使用FTP時必須首先登錄,在遠程主機上獲得相應的權限以后,方可下載或上傳文件。也就是說,要想同哪一臺計算機傳送文件,就
必須具有哪一臺計算機的適當授權。換言之,除非有用戶ID和口令,否則便無法傳送文件。這種情況違背了Internet的開放性,
Internet上的FTP主機何止千萬,不可能要求每個用戶在每一臺主機上都擁有帳號。匿名FTP就是為解決這個問題而產生的。
?
匿名FTP是這樣一種機制,用戶可通過它連接到遠程主機上,并從其下載文件,而無需成為其注冊用戶。系統管理員建立了一個特殊
的用戶ID,名為anonymous, Internet上的任何人在任何地方都可使用該用戶ID。
?
通過FTP程序連接匿名FTP主機的方式同連接普通FTP主機的方式差不多,只是在要求提供用戶標識ID時必須輸入anonymous,該用戶
ID的口令可以是任意的字符串。習慣上,用自己的E-mail地址作為口令,使系統維護程序能夠記錄下來誰在存取這些文件。
?
值得注意的是,匿名FTP不適用于所有Internet主機,它只適用于那些提供了這項服務的主機。
?
當遠程主機提供匿名FTP服務時,會指定某些目錄向公眾開放,允許匿名存取。系統中的其余目錄則處于隱匿狀態。作為一種安全措
施,大多數匿名FTP主機都允許用戶從其下載文件,而不允許用戶向其上傳文件,也就是說,用戶可將匿名FTP主機上的所有文件全部拷
貝到自己的機器上,但不能將自己機器上的任何一個文件拷貝至匿名FTP主機上。即使有些匿名FTP主機確實允許用戶上傳文件,用戶也
只能將文件上傳至某一指定上傳目錄中。隨后,系統管理員會去檢查這些文件,他會將這些文件移至另一個公共下載目錄中,供其他用
戶下載,利用這種方式,遠程主機的用戶得到了保護,避免了有人上傳有問題的文件,如帶病毒的文件。
?
作為一個Internet用戶,可通過FTP在任何兩臺Internet主機之間拷貝文件。但是,實際上大多數人只有一個Internet帳戶,FTP主
要用于下載公共文件,例如共享軟件、各公司技術支持文件等。 Internet上有成千上萬臺匿名FTP主機,這些主機上存放著數不清的文
件,供用戶免費拷貝。實際上,幾乎所有類型的信息,所有類型的計算機程序都可以在Internet上找到。這是Internet吸引我們的重要
原因之一。
匿名ftp
匿名FTP使用戶有機會存取到世界上最大的信息庫,這個信息庫是日積月累起來的,并且還在不斷增長,永不關閉,涉及到幾乎所有
主題。而且,這一切是免費的。
?
匿名FTP是Internet網上發布軟件的常用方法。Internet之所以能延續到今天,是因為人們使用通過標準協議提供標準服務的程序。
像這樣的程序,有許多就是通過匿名FTP發布的,任何人都可以存取它們。
?
Internet中的有數目巨大的匿名FTP主機以及更多的文件,那么到底怎樣才能知道某一特定文件位于哪個匿名FTP主機上的那個目錄
中呢?這正是Archie服務器所要完成的工作。Archie將自動在FTP主機中進行搜索,構造一個包含全部文件目錄信息的數據庫,使你可以
直接找到所需文件的位置信息。
?
FTP的用戶分類及權限歸屬
Real帳戶
這類用戶是指在FTP服務上擁有帳號。當這類用戶登錄FTP服務器的時候,其默認的主目錄就是其帳號命名的目錄。但是,其還可以
變更到其他目錄中去。如系統的主目錄等等。
Guest用戶
在FTP服務器中,我們往往會給不同的部門或者某個特定的用戶設置一個帳戶。但是,這個賬戶有個特點,就是其只能夠訪問自己的
主目錄。服務器通過這種方式來保障FTP服務上其他文件的安全性。這類帳戶,在Vsftpd軟件中就叫做Guest用戶。擁有這類用戶的帳戶
,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的文件。
Anonymous(匿名)用戶
這也是我們通常所說的匿名訪問。這類用戶是指在FTP服務器中沒有指定帳戶,但是其仍然可以進行匿名訪問某些公開的資源。
?
在組建FTP服務器的時候,我們就需要根據用戶的類型,對用戶進行歸類。默認情況下,Vsftpd服務器會把建立的所有帳戶都歸屬為
Real用戶。但是,這往往不符合企業安全的需要。因為這類用戶不僅可以訪問自己的主目錄,而且,還可以訪問其他用戶的目錄。這就
給其他用戶所在的空間 帶來一定的安全隱患。所以,企業要根據實際情況,修改用戶所在的類別。[1]
?
FTP客戶端
ftp客戶端。體積可以說是最小的了,只有330K,免費中文版不需要漢化和破解的緣故吧。功能也非常強大,應有盡有。可以支持多
線程上傳;還支持直接上傳壓縮包后在空間上直接解壓。
?
8uftp是非常精辟的ftp客戶端。目前體積最小的FTP客戶端工具。
?
終身免費中文版,非漢化版,非破解版。
?
涵蓋其它FTP工具功能
?
獨家支持多線程上傳,使上傳速度更快更穩定。
?
同時支持直接上傳壓縮包,可在空間上直接解壓。也可以在空間上壓縮后直接下載壓縮包。
?
8uftp 2.6 升級功能
?
1.增加遠程ftp目錄的復制URL功能
?
2.增加遠程ftp目錄和本地目錄對比的工具
?
通過FTP傳輸文件的一般步驟
命令提示
需要進行遠程文件傳輸的計算機必須安裝和運行ftp客戶程序。在windows操作系統的安裝過程中,通常都安裝了tcp/ip協議軟件,
其中就包含了ftp客戶程序。但是該程序是字符界面而不是圖形界面,這就必須以命令提示符的方式進行操作,很不方便。
?
啟動ftp客戶程序工作的另一途徑是使用ie瀏覽器,用戶只需要在ie地址欄中輸入如下格式的url地址:ftp://[用戶名:口令@]ftp
服務器域名[:端口號]
?
(在CMD命令行下也可以用上述方法連接,通過put命令和get命令達到上傳和下載的目的,通過ls命令列出目錄,除了上述方法外還
可以在cmd下輸入ftp回車,然后輸入open IP來建立一個連接,此方法還適用于linux下連接ftp服務器)
?
通過ie瀏覽器啟動ftp的方法盡管可以使用,但是速度較慢,還會將密碼暴露在ie瀏覽器中而不安全。因此一般都安裝并運行專門的
ftp客戶程序。
?
1.在本地電腦上登陸到國際互聯網.
?
2.搜索有文件共享主機或者個人電腦(一般有專門的FTP服務器網站上公布的,上面有進入該主機或個人電腦的名稱,口令和路徑).
?
3.當與遠程主機或者對方的個人電腦建立連接后,用對方提供的用戶名和口令登陸到該主機或對方的個人電腦.
?
4.在遠程主機或對方的個人電腦登陸成功后,就可以上傳你想跟別人分享的東西或者下載別人授權共享的東西(這里的東西是指能放
到電腦里去又能在顯示屏上看到的東西).
?
5.完成工作后關閉FTP下載軟件,切斷連接.
?
為了實現文件傳輸,用戶還要運行專門的文件傳輸程序,比如網際快車就有這方面的功能,其它還有很多專門的FTP傳輸軟件,FlashFxp
為其中的杰出軟件。有興趣的網友可以試試其他的軟件,如LeapFTP總歸各有各的特色.
FTP協議
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協議
FTP(File Transfer Protocol,文件傳輸協議) 是 TCP/IP 協議組中的協議之一。FTP協議包括兩個組成部分,其一為FTP服務器,其二為FTP客戶端。其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位于FTP服務器上的資源。在開發網站的時候,
通常利用FTP協議把網頁或程序傳到Web服務器上。此外,由于FTP傳輸效率非常高,在網絡上傳輸大的文件時,一般也采用該協議。
默認情況下FTP協議使用TCP端口中的 20和21這兩個端口,其中20用于傳輸數據,21用于傳輸控制信息。但是,是否使用20作為傳輸數據
的端口與FTP使用的傳輸模式有關,如果采用主動模式,那么數據傳輸端口就是20;如果采用被動模式,則具體最終使用哪個端口要服務
器端和客戶端協商決定。
??? FTP協議
??? File Transfer Protocol
服務器
同大多數Internet服務一樣,FTP也是一個客戶/服務器系統。用戶通過一個客戶機程序連接至在遠程計算機上運行的服務器程序。依照
FTP 協議提供服務,進行文件傳送的計算機就是 FTP服務器,而連接FTP服務器,遵循FTP協議與服務器傳送文件的電腦就是FTP客戶端。
用戶要連上FTP 服務器,就要用到 FTP 的客戶端軟件,通常 Windows自帶“ftp”命令,這是一個命令行的 FTP客戶程序,另外常用的
FTP 客戶程序還有FileZilla、 CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-貓眼等。
工作方式
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命令后,隨機打開
一個高端端口(端口號大于1024)并且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然后FTP服務器將通過
這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
很多防火墻在設置的時候都是不允許接受外部發起的連接的,所以許多位于防火墻后或內網的FTP服務器不支持PASV模式,因為客戶端無
法穿過防火墻打開FTP服務器的高端端口;而許多內網的客戶端不能用PORT模式登陸FTP服務器,因為從服務器的TCP 20無法和內部網絡
的客戶端建立一個新的連接,造成無法工作。
FXP
FXP說簡單點就是一個FTP客戶端控制兩個FTP服務器,在兩個FTP服務器之間傳送文件。FXP的全稱為File Exchange Protocol――文件交
換協議,可以認為FXP本身其實就是FTP的一個子集,因為FXP方式實際上就是利用了FTP服務器的Proxy命令,不過它的前提條件是FTP服
務器要支持PASV,且支持FXP方式。
FXP傳送時,文件并不下載至本地,本地只是發送控制命令,故FXP傳送時的速度只與兩個FTP服務器之間的網絡速度有關,而與本地速度
無關。因FXP方式本地只發送命令,故在開始傳送后,只要本地不發送停止的命令,就算是本地關機了,FXP仍在傳送,直至一個文件傳
送完成或文件傳送出錯后,FTP服務器等待本地發送命令時,才會因不能接收到命令而終止FXP傳送。
因為上述的原因,FXP傳送出錯時,本地的用戶進程還留在FTP服務器中,并沒有退出,如此時再次連接FTP服務器,可能會因用戶線程超
過允許,FTP服務器提示客戶已登陸并拒絕客戶端的連接,直至服務器中的傀儡進程因超時或其他原因被FTP服務器殺死后,才能再次連
接FTP服務器。
成功FXP有兩個必要條件:①兩個FTP服務器均支持FXP;②兩個FTP服務器均支持PASV方式。但并不是說滿足這兩個條件的FTP服務器均經
本地操作成功FXP,這還與本地與FTP服務器的網絡狀況有關。故有時會出現同樣兩個FTP,別人可以FXP,而你不可以的情況。
用戶授權
授權
要連上 FTP 服務器(即“登陸”),必須要有該 FTP 服務器授權的帳號,也就是說你只有在有了一個用戶標識和一個口令后才能登陸
FTP服務器,享受FTP服務器提供的服務。
地址格式
FTP地址如下:
ftp://用戶名:密碼@FTP服務器IP或域名:FTP命令端口/路徑/文件名
上面的參數除FTP服務器IP或域名為必要項外,其他都不是必須的。如以下地址都是有效FTP地址:
ftp://foolish.6600.org
ftp://list:list@foolish.6600.org
ftp://list:list@foolish.6600.org:2003
ftp://list:list@foolish.6600.org:2003/soft/list.txt
匿名
互連網中有很大一部分 FTP 服務器被稱為“匿名”(Anonymous)FTP 服務器。這類服務器的目的是向公眾提供文件拷貝服務,不要求
用戶事先在該服務器進行登記注冊,也不用取得FTP服務器的授權。
Anonymous(匿名文件傳輸)能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用
戶使用特殊的用戶名“anonymous”登陸FTP服務,就可訪問遠程主機上公開的文件。許多系統要求用戶將Email地址作為口令,以便更好
地對訪問進行跟綜。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機中存儲著無以計數的文
件,這些文件包含了各種各樣的信息,數據和軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登錄獲取所需的信息資料
。雖然目前使用WWW環境已取代匿名FTP成為最主要的信息查詢方式,但是匿名FTP仍是 Internet上傳輸分發軟件的一種基本方法。如red
hat 、autodesk等公司的匿名站點。
傳輸模式
FTP協議的任務是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系
統無關。假設兩臺計算機通過ftp協議對話,并且能訪問Internet,
你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。
FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。
ASCII傳輸模式
假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的是不同的操作系統,當文件傳輸時ftp通常會自動地調整文
件的內容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件
,它們可能是程序,數據庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息
的非打印字符)。
在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。
二進制傳輸模式
在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,
macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。
如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多
數計算機上,ASCII方式一般假設每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果你傳輸二進制文件,所有的位都是
重要的。)如果你知道這兩臺機器是同樣的,則二進制方式對文本文件和數據文件都是有效的。
========
FTP協議(指令集)收藏
FTP協議采用一系列簡單的協議來完成文件傳輸的各種任務,在發送命令的時候,總是在命令的最后加上一個回車換行符,在VB中可以用
“vbcrlf”來實現,vc中以“\r\n”表示。以下的命令是從Postel和Reynolds所著的RFC 929修改而來,如果讀者想查看詳細內容,可以
參見英文版RFC 929。注意以下出現地標志符CRLF表示的是回車符號,即相當于VC中的“\r\n”。
1.? ABOT(Abort,中止)命令
說明:告訴服務器中止上一次FTP服務命令及所有相關的數據傳輸。
用法:ABOR﹝CRLF﹞
參數:無。
例子:
SendData "ABOR" + “\r\n”
注釋:中止命命令可以請求“特殊操作”以強行引起服務器的重視(詳情請參看RFC959)。如果上一次命令已經完成(包括數據傳輸)
,就不會導致任何操作。服務器不會關閉控制連接,但必須關閉數據連接。
服務器在接收到此命令時可能處于兩種狀態下:(1)FTP服務命令已經完成,(2)FTP服務命令尚在處理中。
在第一種狀態下,服務器關閉數據連接(如果它是打開的)并響應以226應答,表示已成功執行了中止命令。
在第二種狀態下,服務器中止正處理中的FTP服務并關閉數據連接,返回426應答,表示該服務請求被異常終止。然后服務器發送226應答
,表示成功執行了中止命令。
l???????? 225? 數據連接打開,沒有正在進行的傳輸
l???????? 226? 關閉數據連接,請求的文件操作成功。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 226? 連接關閉,傳輸終止。
l???????? 500? 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
2.? ACCT(Account,帳號)命令
說明:指定用戶的帳號信息。這條命令只能在發送PASS命令并接收到332代碼之后發送。
用法:ACCT
參數:Account是用戶的帳號,訪問某些服務時可能另外需要它。
例子:
SendData "ACCTN322s"? + “\r\n
注釋:當登錄需要帳號信息時,一條成功的PASS命令的響應是應答代碼332。反之,如果登錄不需要帳號信息,成功的PASS命令的應答是
230;如果在對話中后來發出的命令需要帳號信息,服務器會返回332或532應答,這分別取決于它是保存(在接收ACCT命令期間)還是丟
棄此命令。
返回值(粗體表示成功):
l???????? 202? 命令還沒有被實現,在此站點上是多余的。
l???????? 230? 用戶已登錄,請繼續。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 503? 命令的順序不對。
l???????? 530? 無法登錄。
3.? ALLO(Allocate,分配)命令
說明:發送文件前在服務器上分配X個字節
用法:ALLO]
參數:NumberBytes是一個整數,代表為該文件保留的內存字節數(使用邏輯字節大小計算)。MaxSize是在使用記錄或頁數據結構時可
選的最大記錄或頁大小。
例子:
SendData "ALLO 3000 128"? + “\r\n
注釋:一些要保留足夠內存以容納將要傳輸的新文件的服務,會請求這條命令。對于用記錄或頁結構發送的文件來說,最大記錄或頁大
小(以邏輯字節計)也可能是必需的;它以這條命令的第二個參數字段中的十進制整數表示。這第二個參數是可選的,但在出現時應該
與第一個參數三個ASCII字符P分隔開。這條命令后跟一條STORe或APPEnd命令。那些不要求事先聲明最大文件大小的服務器應該把ALLO命
令視為NOOP(不操作),而那些只關心最大記錄或頁大小的服務器應該受第一個參數的值,然后忽略它。
返回值(粗體表示成功):
l???????? 200? 命令成功。
l???????? 202? 命令還沒有被實現,在此站點上是多余的。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將被關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤
l???????? 501? 參數或變元中有語法錯誤
l???????? 504? 命令中還沒有實現該參數
l???????? 530? 無法登錄。
4.? APPE(Append with create,附加和創建)命令
說明:讓服務器準備接收一個文件并指示它把這些數據附加到指定的文件名,如果指定的文件尚未存在,就創建它。
用法:APPE
參數:FileName是服務器站點上一個完全合格的路徑和文件名。
例子:
SendData "APPE" & szFileName? + “\r\n
返回值如下(粗體表示成功)。
l???????? 110? 重新啟動標記應答。
在此情況下,文本是精確的,而且不會留給特殊的實現處理;它必須讀取:
MARK yyyy=mmmm
其中yyyy是用戶進程的數據流標記,mmmm是服務器上的相應標記(請注意標記和“=”之間的空格)。
l???????? 125? 數據連接已打開,傳輸啟動。
l???????? 150? 文件狀態沒問題,準備打開數據進行連接。
l???????? 226? 關閉數據連接,請求的文件操作已成功。
l???????? 250? 請求的文件操作沒問題,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 425? 無法打開數據連接。
l???????? 426? 連接關閉;傳輸中止。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l???????? 451? 請求的操作被中止,處理中發生本地錯誤。
l???????? 452? 請求的操作無法執行,系統的存儲空間不足。
l???????? 500? 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
l???????? 532? 文件的存儲需要帳號。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
l???????? 551? 請求的操作被中止,未知的頁類型。
l???????? 552? 請求的文件操作被中止,超過了分配的存儲單元(對當前目錄或數據集而言)。
l???????? 553? 請求的操作無法執行,不允許的文件名。
5.? CDUP(Change to Parent Directory,變為父目錄)命令
說明:把當前目錄改為遠程文件系統的根目錄,無需改變登錄、帳號信息或傳輸參數。
用法:CDUP
參數:無。
例子:
SendData "CDUP"? + “\r\n
注釋:CDUP目錄可改為父目錄。MS-DOS中的等效命令是cd\。創建這條命令是為了適應FTP的不同操作系統。
返回值如下(粗體表示成功):
l???????? 250? 請求的文件操作正常進行,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
6.? CWD(Change Working Directory,改變工作目錄)命令
說明:把當前目錄改為遠程文件系統的指定路徑,而無需改變登錄、帳號信息或傳輸參數。
用法:CWD
參數:Path是遠程系統上的一個工作目錄。
例子:
SendData "CWD/pub/cgvb/uploads"? + “\r\n
返回值如下(粗體表示成功):
l???????? 250? 請求的文件操作正常進行,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
7.? DELE(Delete,刪除)命令
說明:刪除服務器站點上在路徑名中指定的文件。
用法DELE
參數:FileName是服務器站點上一個完全合格的路徑和文件名。
例子:
SendData "DELE temp.fil" + “\r\n
注釋:如果期望有額外的保護級別(例如選項"確實要刪除此文件嗎?"),這應該由客戶軟件提供。
返回值如下(粗體表示成功):
l???????? 250? 請求的文件操作正常進行,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
8.? HELP(Help,幫助)命令
說明:讓服務器通過到客戶的控制連接發送有關其實現狀態的幫助信息。
用法:HELP[]
參數:Topic是一個可選的命令,或是請求哪條命令有關文本的其他參數。
例子:
SendData "HELP" + “\r\n
注釋:HELP可以帶一個參數(例如任何命令的名稱),以在響應中返回更具體的信息。應答為類型211或214。建議在輸入USER命令前允
許使用HELP命令。服務器可以使用這個應答來指定站點相關的參數,例如在對HELP SITE的響應中。
返回值如下(粗體表示成功):
l???????? 211? 系統狀態,或系統的幫助應答。
l???????? 214? 幫助消息。
描述如何使用服務器或某條不常用的具體命令的方法。這個應答只對用戶有用,因為幫助消息沒有標準的格式。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
9.? LIST(List,列表)命令
說明:讓服務器給客戶發送一份列表。
用法:LIST[]
參數:PathName是服務器系統上的一個有效路徑和文件規范。
例子:
SendData "LIST pub/*.*" + “\r\n
注釋:如果路徑名指定的是一個目錄或其他文件組,服務器傳送一份位于指定目錄中的文件的列表。如果路徑名指定的是一個文件,那
么服務應該發送此文件的當前信息。空變元則暗指用戶的當前工作目錄或默認目標。數據將在類型ASCII或類型EBCDIC中通過數據連接傳
送(用戶必須確保ASII或EBCDIC的類型適當)。
因為系統與系統之間的文件信息可能有很大差別,所以這項信息要在程序中自動使用可能很困難,但對用戶來說會很有用。
返回值如下(粗體表示成功):
l???????? 125? 數據連接已打開,傳輸啟動。
l???????? 150? 文件狀態沒問題,準備打開數據連接。
l???????? 226? 關閉數據連接,請求的文件操作已成功。
l???????? 250? 請求的文件操作正常進行,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 425? 無法打開數據連接。
l???????? 426? 連接關閉,傳輸中止。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l???????? 451? 請求的操作被中止,處理中發生本地錯誤。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
10.? MKD(Make Directory ,創建目錄)命令
說明:創建一個在路徑名中指定的目錄(如果是絕對路徑名)或當前工作目錄的子目錄(如果是相對路徑名)。
用法:MKD
參數:Path是服務器端上的一個有效路徑。
例子:
SendData "MKD /users/johnsmith" + “\r\n
返回值如下(粗體表示成功):
l???????? 257? “PATHNAME”已創建。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
11.? MODE(Transfer Mode,傳輸模式)命令
說明:指定傳輸模式。
用法:STRU
參數:Mode是如下ASCII值的其中之一:
S——Stream(流,默認值)
B——Block(塊)
C——Compressed(經過壓縮)
例子:
SendData "STRU B" + “\r\n
返回值如下(粗體表示成功):
l???????? 200? 命令成功。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 504? 命令中還沒有實現該參數。
l???????? 530? 無法登錄。
?
12.? NLST(Name List,名稱列表)命令
說明:讓服務器給客戶發送一份目錄列表。
用法:NLST[]
參數:PathName是服務器系統上的一個有效路徑和文件規范。
例子:
SendData "NLST /pub/cgvB" + “\r\n
注釋:路徑名應該指定一個目錄或其他由系統指定的文件組描述符,空變元則暗指當前目錄。服務器將返回一個文件名稱的流,除此之
外沒有其他信息。數據將以ASCII或EBCDIC類型通過數據連接傳送,其中的有效路徑名字符串由或分隔(用戶必須確保類型正確)。
NLST希望返回的信息可被程序用來進一步地自動處理這些文件。例如,在一個“斷點續傳”功能的實現中。
返回值如下(粗體表示成功):
l???????? 125? 數據連接已打開,傳輸啟動。
l???????? 150? 文件狀態正常,準備打開數據連接。
l???????? 226? 關閉數據連接,請求的文件操作已成功。
l???????? 250? 請求的文件操作正常進行,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 425? 無法打開數據連接。
l???????? 426? 連接關閉,傳輸中止。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l???????? 451? 請求的操作被中止,處理中發生本地錯誤。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
13.? NOOP(NOOP,無操作)命令
說明:這是一條不進行操作的命令,即它什么都不做。
用法:NOOP
參數:無。
例子:
SendData "NOOP" + “\r\n
注釋:NOOP不會影響任何參數或以前輸入的命令。除了讓服務器發送一條OK應答外,它不指定任何操作。
返回值如下(粗體表示成功):
l???????? 200? 命令成功。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。
14.? PASS(Password,密碼)命令
說明:向遠程系統發送用戶的密碼,該命令在USER命令后使用。
用法:PASS
參數:Password是由USER命令指定的已注冊用戶密碼。
例子:
SendData "PASS mypassworD" + “\r\n
注釋:在連接到一臺FTP服務器的端口21并接收到一個由代碼220打頭的行,表示服務器已準備好你向它發USER和PASS命令,以登錄進此
FTP服務器之后,緊跟著發送USER命令。
PASS命令應該緊跟著USER命令。
如果你在此FTP服務器上有帳號,就可以指定自己的用戶名和密碼。如果想匿名登錄,可以指定用戶名為“Anonymous”,而用自己的電
子郵件地址當密碼。
返回值如下(粗體表示成功):
l???????? 202? 命令還沒有被實現,在此站點上是多余的。
l???????? 230? 用戶已登錄,請繼續。
l???????? 332? 登錄需要帳號(請參看ACCT命令)。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 530? 無法登錄。
15.? PASV(Passive,被動的)命令
說明:告訴服務器在一個非標準端口上收聽數據連接。
用法:PASV
參數:這條命令請求server-DTP(服務器數據傳送規約)“收聽”某個數據端口(該端口不是它的默認數據端口),并等待一個連接而
不是在收到傳輸命令時初始化一個連接。對這條命令的響應包括主機地址和此服務器正在收聽的端口地址。
例子:
SendData "PASV" + “\r\n
返回值如下(粗體表示成功):
l???????? 227? 輸入被動模式(h1,h2,h3,h4,p1,p2)。
返回值包括一個在數據連接中使用的數據端口的HOST-PORT規約。此參數是一個32位Internet主機地地址和一個16位TCP端口地的拼接。
這個地址信息被拆分為8位的字段,并且每個字段的值是作為一個十進制數傳輸的(在字符串意義上)。H1是Internet主機地址的高位字
節,p1是端口地址的高位字節。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 503? 無法登錄。
16.? PORT(Data? Port,數據端口)命令
說明:為數據連接指定一個IP地址和本地端口。
用法:PORT
參數:Socket是數據連接中要使用的數據端口的一個HOST-PORT規約。用戶和服務器都有默認的數據端口,在正常情況下不需要這條命令
和對它的應答。如果使用了這條命令,則參數是一個32個Internet主機地址和一個16位TCP端口地的拼接。這個地址信息被拆分為8位的
字段,并且每個字段的值是作為一個十制數傳輸的(在字符串意義上)。各個字段用逗號分隔開。一條端口命令可以是這樣:
PORT h1,h2,h3,p1,p2
其中H1是Internet主機地址的高位字節,P1是本地端口的高位字節。
例子:
SendData "PORT 199,199,199,0,33,1" + “\r\n
返回值如下(粗體表示成功):
l???????? 200? 命令成功。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 530? 無法登錄。
17.? PWD(Print Working Directory,打印工作目錄) 命令
說明:在應答中返回當前工作目錄的名稱。
用法:PWD
參數:無
例子:
SendData "PWD" + “\r\n
返回值如下(粗體表示成功):
l???????? 257? “PATHNAME”已創建
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
18.? QUIT(Logout,注銷)命令
說明:終止連接。
用法:QUIT
參數:無。
例子:
SendData "QUTI" + “\r\n
注釋:QUIT將終止此USER,如果沒有正在進行的文件傳送,服務器將關閉控制連接。如果文件傳送正在進行,該連接仍然打開直至結果
呼響應,然后服務器將其關閉。如果用戶進程正在為幾個USER傳送文件,不想關閉后再逐個重新打開連接,那么應該使用REIN命令代替
QUIT。
控制連接的意外關閉會導致服導器采取有效的中止(ABORT)和注銷(QUIT)操作。
返回值如下(粗體表示成功):
l???????? 221? 服務正在關閉控制連接。
l???????? 500? 語法錯誤,無法識別命令。
19.? REIN(Reinitialize,重新初始化) 命令
說明:終止一個用戶。
用法:REIN
參數:無。
例子:
SendData "REIN" + “\r\n
注釋:除了允許完成正在進行的傳送之外,REIN將刷新所有的I/O和帳號信息。所有參數都被復位到默認設置,控制連接仍然打開。這和
用戶在剛剛打開控制連接時的狀態是一樣的。如果后來想要登錄,在發送USER命令之前送一條REIN命令。
返回值如下(粗體表示成功):
l???????? 120? 服務將在nnn分鐘后準備好。
l???????? 220? 服務已為新用戶準備好。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 502? 命令還沒有被實現。
20.? REST(Restart,重新啟動)命令
說明:標識出文件內的數據點,將從這個點開始繼續傳送文件。
用法:REST
參數:Marker代表文件傳送將要由此重新啟動的服務器標記。
例子:
SendData "REST 244" + “\r\n
注釋:REST不會引起文件傳送,而只是跳到文件中指定的數據檢驗點上。RSET后緊跟著適當的FTP服務命令,該命令才會引起文件的繼續
傳送。
返回值如下(粗體表示成功):
l???????? 無響應即表示成功。
l???????? 350? 請求的文件操作在等待更進一步的信息。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
21.? RETR(Retrieve,檢索)命令
說明:這條命令讓服務器給客戶傳送一份在路徑名中指定的文件的副本。這不會影響該文件在服務器站點上的狀態和內容。
用法:RETR
參數:FileName是服務器站點上一個完全合格的路徑和文件名。
例子:
SendData "RETR /pub/cgvb/misc/somefile.zip" + “\r\n
返回值如下(粗體表示成功):
l???????? 110? 重新啟動標記應答。
在此情況下,文體是精確的,而且不會留給特定的實現處理;它必須讀取:
MARK yyyy=mmmm
其中yyyy是用戶進程的數據流標記,mmmm是服務器上的相應標記(請注意標記和“=”之間的空格)。
l???????? 125? 數據連接已打開,傳輸啟動。
l???????? 150? 文件狀態沒問題,準備打開數據連接。
l???????? 226? 關閉數據連接,請求的文件操作已成功。
l???????? 250? 請求的文件操作正常進行,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 425? 無法打開數據連接。
l???????? 426? 連接關閉,傳輸中止。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如,文件正忙)。
l???????? 451? 請求的操作被中止,處理中發生本地錯誤。
l???????? 500? 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 504? 命令中還沒有實現該參數。
l???????? 530? 無法登錄。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
22.? RMD(Remove Directory,刪除目錄)命令
說明:刪除一個在路徑名中指定的目錄(如果是絕對路徑名)或當前工作目錄的子目錄(如果是相對路徑名)。
用法:RMD
參數:Path是服務器端上一個完全合格的路徑。
例子:
SeddData "RMD /users/johnsmith" + “\r\n
返回值(粗體表示成功):
l???????? 250? 請求的文件操作沒問題,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
l???????? 550? 請求的操作無法執行;文件不可用(例如,找不到文件,無訪問權)。
23.? RNFR(Rename From,把…重命名)命令
說明:文件重命名進程的前一半。指定要重命名的文件的舊路徑和文件名。
用法:RNFR
參數:FileName是服務器站點上一個完全有效的路徑和文件名。
例子:
SendData "RNFR source.zip" + “\r\n
RNFR后面必須緊跟著一條指定新路徑和文件名的"Rename to"命令(RNTO)。
返回值如下(粗體表示成功):
l???????? 無響應即表示成功
l???????? 350? 請求的文件操作在等待更進一步的信息。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
24.? RNTO(Rename TO,重命名為)命令
說明:文件重命名進程的后一半。指定要重命名的文件的新路徑和文件名。
用法:RNTO
參數:FileName是服務器站點上的一個有效文件名。
例子:
SendData "RNTO destination.ziP" + “\r\n
注釋:RNTO前面必須是一條"Rename from"命令(RNFR)。RNER和RNTO合在一起才能重命名服務器上的一個文件。
返回值如下(粗體表示成功):
l???????? 250? 請求的文件操作正常進行,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 503? 命令的順序不對。
l???????? 530? 無法登錄。
l???????? 532? 文件的存儲需要帳號。
l???????? 553? 請求的操作無法執行,不允許的文件名。
25.? SITE(Site Parameters,站點參數)命令
說明:服務器使用SITE提供了某些服務特性,這些服務特性在系統中對文件傳達而言是必要的,但又不是足夠通用的可以包括到協議中
作為命令的那些服務特性。這些服務的本質和他們的語法規范可以陳述在對HELPSITE命令的應答中。
用法:SITE
參數:String可以是任何串參數。
例子:
SendData "SITE chmod 646 mylifle.ziP" + “\r\n
注釋:舉例來說,使用如下語法,你就可以使用SITE來改變一個文件的權限屬性。
SITE CHMOD
返回值如下(粗體表示成功):
l???????? 200? 命令成功。
l???????? 202? 命令還沒有被實現,在此站點上是多余的。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變無中有語法錯誤。
l???????? 530? 無法登錄。
26.? SMNT(Structure Mount,結構裝配)命令
說明:允許用戶裝配另一個文件系統的數據結構而無需改變登錄、帳號信息或傳輸參數。
用法:SMNT
參數:Path是另一個文件數據系統的路徑。
例子:
SendData "SMNT/users/johnsmith"&vbCrlf
返回值如下(粗體表示成功):
l???????? 202? 命令還沒有被實現,在此站點上是多余的。
l???????? 250? 請求的文件操作沒問題,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
27.? STAT(Status,狀態)命令
說明:使一個狀態響應以應答的形式通過控制連接發送出去
用法:STAT[]
參數:PathName是服務器上的一個有效路徑。
例子:
SendData "STAT /users/johnsmith/mylilE" + “\r\n
注釋:STAT可以在文件傳輸(連同Telnet? IP和Synch信號一起——請參看RFC959的FTP Commands部分)期間發送,在此情況下服務器將
響應操作中的進程狀態,或者在兩次文件傳輸之間發送。在后一種情況下,這條命令可以帶一參數字段。如果指定了一個完整的路徑名
,STAT將類似于LIST命令,除了它的數據是通過控制連接傳送的之外。如果指定的是一個局部路徑,服務器將在響應中給出一份與指定
項相關聯的文件名或屬性列表。如果不指定參數,服務器將返回有關此服務器FTP進程的常規狀態信息,這其中包括當前所有傳輸參數的
值和連接狀態。
返回值如下(粗體表示成功):
l???????? 211? 系統狀態,或系統的幫助應答。
l???????? 212? 目錄狀態。
l???????? 213? 文件狀態。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l???????? 500? 語法錯誤,無法識命令。這其中包括包令行過長類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
l???????? 530? 無法登錄。
28.? STOR(Store,保存)命令
說明:讓服務器接收一個來自數據連接的文件。
用法:STOR
參數:FileName是服務器站點上一個完全合格的路徑和文件名。
例子:
SendData "STOR newfile.zip" + “\r\n
注釋:Store命令讓服務器接收通過數據連接傳輸而來的數據,并把數據存為務器站點上的文件。如果在路徑名中指定的文件已經在服務
站點上存在,則此文件的內容將被傳輸過來的數據所替代。如果在路徑名中指定的文件尚未存在,將創建一個新文件。
返回值如下(值體表示成功):
l???????? 110? 重新啟動標記應答
在此情況下,文本是精確的,而且不會留給特殊的實現處理,它必須讀取:
MARK yyyy=mmmm
其中yyyy是用戶進程的數據流標記,mmmm是服務器上的相應相標記(請注意標記和“=”之間的空格)。
l???????? 125? 數據連接已打開,傳輸啟動。
l???????? 150? 文件狀態一切正常,準備打開數據連接。
l???????? 226? 關閉數據連接,請求的文件操作已成功。
l???????? 250? 請求的文件操作正常進行,已完成。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 425? 無法打開數據連接。
l???????? 426? 連接關閉,傳輸中止。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如文件正忙)
l???????? 451? 請求的操作被中止,處理中發生本地錯誤。
l???????? 452? 請求的操作無法執行,系統的存儲空間不足。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 504? 命令中還沒有實現該參數。
l???????? 530? 無法登錄。
l???????? 532? 文件的存儲需要帳號。
l???????? 550? 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
l???????? 551? 請求的操作被中止,未知的頁類型。
l???????? 552? 請求的文件操作被子中止,超過了分配的存儲單元(對當前目錄或數據集而言)。
l???????? 553? 請求的操作無法執行,不允許的文件名。
29.? STOU(Store Unique,存為唯一)命令
說明:讓服務器準備接收一個文件,并指示服務器把這個文件用唯一的名稱保存到目的目錄中。
用法:STOU
參數:無。
例子:
SendData "STOU"&vbCrlf
注釋:Store Unique命令和STOR所做的工作是基本一樣的,只是前者在當前目錄下生成的文件是以一個該目錄中唯一的名稱來創建的。
250 Transfer Started響應中必須包括這個生成的名稱。
返回值如下(粗體表示成功):
l???????? 110? 重新啟動標記應答
在此情況下,文本是精確的,而且不會留給特殊的實現處理,它必須讀取:
MARKyyyy=mmmm
其中yyyy是用戶進程的數據流標記,mmmm是服務器上的相應標記(請注意標記和“=”之間的空格)。
l???????? 125? 數據連接已打開,傳輸啟動。
l???????? 150? 文件狀態正常,準備打開數據連接。
l???????? 226? 關閉數據連接,請求的文件操作已成功。
l???????? 250? 請求的文件操作沒問題,已完成(該行中包括一個唯一的文件名)。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l???????? 425? 無法打開數據連接。
l???????? 426? 連接關閉,傳輸中止。
l???????? 450? 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l???????? 451? 請求的操作被中止,處理中發生本地錯誤。
l???????? 452? 請求的操作無法執行,系統的存儲空間不足。
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 504? 命令中還沒有實現該參數。
l???????? 530? 無法登錄。
l???????? 532? 文件的存儲需要帳號。
l???????? 550? 請求的操作無法執行,文件不可(例如找不到文件,無訪問權)。
l???????? 551? 請求的操作作被中止,未知的頁類型。
l???????? 552? 請求的文件操作被中止,超過了分配的存儲單元(對當前目錄或數據集而言)。
l???????? 553請求的操作無法執行,存在不允許的文件名。
30.? STRU(File Structure,文件結構)命令
說明:指定傳達數據的結構類型。
用法:STRU
參數:StructureType是如下ASCII字符的其中之一:
F——文件結構(默認值)
R——記錄結構
P——頁結構
有關使用非文件結構的信息請參看RFC959。
例子:
SendData "STRUR" + “\r\n
返回值如下(粗體表示成功):
l???????? 200? 命令成功。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 504? 命令中還沒有實現該參數。
l???????? 530? 無法登錄。
31.? SYST(System,系統)命令
說明:SYST用于查明服務器上操作系統的類型。
用法SYST
例子:
SendData "SYST" + “\r\n
注釋:按照推測,應答中的第一個單詞是在Assigned Numbers文檔[4]的當前版本中列出的某一個系統名稱。但是,并不一定都能成功,
新的系統每時每刻都在涌現。而公開的文檔也許能跟上趟,也許不能。
返回值如下(粗體表示成功):
l?????????????????? 215?? NAME系統類型。NAME是來自Assigned Numbers文檔中的一個正式的系統名稱。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 502? 命令還沒有被實現。
32.? TYPE(Representation Type,表達類型)命令
說明:確定數據的傳輸方式。
用法:TYPE
參數:Data type Code是一個(或幾個)ASCII字符,它標識出一種數據表達類型。
例子:
‘—設置二進制模式
SendData "type I" + “\r\n
注釋:最典型的情況就是使用TYPE命令在ASCII或二進制模式(Image,圖像)之間切換。發送和接收任何類型的文件時都可以使用圖像
類型。ASCII類型只在傳送文本時使用。
有幾種類型要用到第二個參數。第一個參數由一個單獨的ASCII字符表示,ASCII和EBCDIC的第二個Format參數也是如此;本地字節的第
二個參數則是一個表示Byte大小的十進制整數。兩個參數之間用(Space,即空格,ASCII代碼為32)分隔開。
給類型分配如下代碼:
A——ASCII*
E——EBCDIC*
I——Image(圖像,傳送二進制文件時用它)。
L——Local byte? Byte size(本地字節,字節大小)
-------------------------------------
*——A和E類型的第二個Parameter要用到如下三個的其中一個:
N——Nonprint(非打印)
T——Telnet format effector(Telnet格式控制符)
C——Carriage Control(ASA)托架控制(美國國家標準)。
默認的表達類型是ASCII Nonprint。如果Format參數發生改變,后來只是第一個參數發生了改變,Format將隨即返回到默認的Nonprint
。
返回值如下(粗體表示成功):
l???????? 200? 命令成功。
l???????? 421? 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 504? 命令中還沒有實現該參數。
l???????? 530? 無法登錄。
命令:USER(User Name,用戶名稱)
說明:指定遠程系統上的用戶名稱。和PASS命令一起使用來登錄。
用法:USER
參數:UserName是FTP系統上已經注冊的用戶名稱。
例子:
?
SendData "USER johns" + “\r\n
?
注釋:在連接到一臺FTP服務器的端口并接收到一個由代碼220開頭的行,表示服務器已經準備好用戶向它發送USER和PASS命令以登錄進
此FTP服務器之后,緊跟著發送USER命令。
PASS命令應該緊跟著USER命令。
如果在此FTP服務器上有帳號,就可以指定自己的用戶名和密碼。如果想匿名登錄,可以指定用戶名為“Anonymous”,而用自己的電子
郵件地址當密碼。
在會話期間,可以隨時發送USER和PASS命令,把控制權交給一個新用戶。
返回值如下(粗體表示成功)
l???????? 230? 用戶已經登錄。
l???????? 331? 用戶名正常,需要密碼。
l???????? 332? 登錄需要帳號。
l???????? 421? 服務不可用,關閉控制連接
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答
l???????? 500? 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l???????? 501? 參數或變元中有語法錯誤。
l???????? 530? 無法登錄。
以上為大部分的FTP命令,如果想進行FTP高級編程,就必須掌握這些具體的FTP命令。
?
http://blog.csdn.net/code09/archive/2009/03/10/3975223.aspx
========
FTP協議的基本概念
從三個方面進行講述:基本概念,工作原理和傳輸模式。
網絡中的數據傳輸時一個復雜的過程,完成一個簡單的數據傳輸,其實經過了很多道協議的規范和作用。那么現在我們就來介紹一下FTP
協議,這個遠程文件傳輸協議。
1. 什么是FTP協議
FTP協議(File Transfer Protocol)即遠程文件傳輸協議,是一個用于簡化IP網絡上系統之間文件傳送的協議,FTP是TCP/IP的一種具
體應用,它工作在OSI模型的第7層,TCP模型的第四層上,即應用層,使用TCP傳輸而不是UDP,FTP建立的就是一個可靠的連接。采用FTP
協議可使 Internet用戶高效地從網上的FTP服務器下載大信息量的數據文件,將遠程主機上的文件拷貝到自己的計算機上。以達到資源
共享和傳遞信息的目的。由于FTP的使用使得Internet上出現大量為用戶提供的下載服。Internet成為了一個巨型的軟件倉庫。
2. FTP工作原理
FTP有兩個過程一個是控制連接,一個是數據傳輸。FTP協議不像HTTP協議一樣需要一個端口作為連接(默認時HTTP端口是80,FTP端口是
21)。FTP協議需要兩個端口,一個端口是作為控制連接端口,也就是FTP的21端口,用于發送指令給服務器以及等待服務器響應;另外
一個端口用于數據傳輸端口,端口號為20(僅用PORT模式),是用建立數據傳輸通道的,主要作用是從客戶向服務器發送一個文件,從
服務器向客戶發送一個文件,從服務器向客戶發送文件或目錄列表。
3. FTP的傳輸模式
FTP協議的任務是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系
統無關。假設兩臺計算機通過ftp協議對話,并且能訪問Internet, 你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差
別,但是每種協議基本的命令結構是相同的。
FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。
ASCII傳輸方式假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調
整文件的內容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本
文件,它們可能是程序,數據庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等
信息的非打印字符)。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二
進制傳輸。
二進制傳輸模式在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意
義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。如果你在ASCII方式下傳輸二進
制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多數計算機上,ASCII方式一般假
設每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩臺機
器是同樣的,則二進制方式對文本文件和數據文件都是有效的。
========
實驗 FTP協議分析
一、實驗目的
分析FTP報文格式和FTP協議工作過程。
二、實驗內容
試驗主要分析FTP報文格式和FTP協議的工作過程。
三、實驗環境和分組
l???????? 三層交換機2臺,標準網線4根,console線4條,計算機4臺;
l???????? 每4名同學為一組,其中每2名同學作為一個小組,每小組共同配置1臺交換機。
四、實驗組網
五、實驗步驟
步驟 1 按照圖5-9 所示連接各個試驗設備正確配置PCA和PCB的IP地址。交換機的配置命令如下:
<Quidway>system
[Quidway]vlan 2
[Quidway-vlan 2]port e 0/1
[Quidway-vlan 2]port e 0/2??????????? //在交換機上建立Vlan2并加入E0/1、E0/2端口
[Quidway-vlan 2]inter vlan 2????? ?
[Quidway-Vlan-interface2]ip address 192.168.1.10 255.255.255.0? //配置Vlan2的IP地址
步驟 2 將交換機配置成FTP服務器,以便使用Ethereal截獲報文。配置命令如下:
[Quidway]ftp server enable????? //將交換機的FTP服務打開
?% Start FTP server
[Quidway]local-user user_a????? //添加用戶user_a
?New local user added
[Quidway-user-user_a]pass simple abc???? //設定登錄密碼 abc
[Quidway-user-user_a]service-type ftp???? //設定服務類型
步驟 3 在每臺計算機上運行Ethereal,開始監測。
步驟 4 單擊“開始/運行”,在“運行”框中輸入cmd命令,打開命令行窗口。
步驟 5 在命令行窗口中,登錄FTP服務器,根據步驟2中的配置信息輸入用戶名和密碼。參考命令如下:
C:/>ftp???????????????????? //打開FTP
ftp> open 192.168.1.10??????? // 登錄服務器
User(192.168.1.10:none)):user_a?????? //輸入用戶名
Password:?????????????????????? //輸入用戶密碼,密碼不顯示
如果在超級終端上出現如下內容:
%Sep 25 20:01:54 2003 Quidway FTPS/5/USERIN:Slot=1;User user_a(192.168.1.22)login succeeded
證明登錄成功。
步驟 6 在命令行窗口中,查看FTP服務器文件夾中的內容。命令:
//執行上面命令后。看到了多少文件?填入試驗報告中。
ftp>dir
答:以下為輸出結果:從中可以看到有2個文件。
200 Port command okay.
150 Opening ASCII mode data connection for *.
-rwxrwxrwx?? 1 noone??? nogroup?? 3483804 Nov 22? 2003 S3526-S3526FM-S3526FS-VRP
310-0012.app
-rwxrwxrwx?? 1 noone??? nogroup???????? 4 Dec 27 15:15 snmpboots
226 Transfer complete.
ftp: 160 bytes received in 0.00Seconds 160000.00Kbytes/sec.
步驟 7 在命令行窗口中,退出FTP程序。命令:
ftp> quit
這時,在超級終端上出現如下內容:
?%Sep 25 20:03:48 2003 Quidway FTPS/5/USEROUT:Slot=1;User user_a(192.168.1.22)left
證明用戶user_a已經退出。
步驟 8 停止Ethereal截獲報文,分析已經截獲的報文。
(1)?????????????? 將截獲的報文命名為FTP-學號,并上傳到FTP服務器的“網絡試驗/應用層試驗”目錄下。
(2)?????????????? 分析FTP報文的格式。指出在截獲的報文中含有用戶名的報文序號,以及含有密碼信息的報文。
答:在截獲的報文中含有用戶名的報文序號為137,含有密碼信息的報文序號為140。
(3)?????????????? 對截獲的報文進行綜合分析,觀察FTP協議的工作過程,分析控制連接和數據連接是如何工作的。
答:先是FTP 服務器準備完畢,用戶輸入用戶名和密碼后等待服務器回應。回應后,服務器允許用戶登陸進行數據操作。之后用戶退出
服務器,服務器關閉。
六、實驗總結
??????? 通過本次試驗,我初步分析了FTP報文格式和FTP協議的工作過程。在通過FTP協議進行數據傳輸時,必須先建立控制連接,再建
立數據連接,明白了其中的過程。
思考:ftp是屬于應用層的協議,它用到的是哪個端口?網絡層給它提供了什么樣的服務?(協議是水平的,服務是垂直的)。你能從你
捕獲到的數據包中分析出tcp建立鏈接、釋放鏈接的過程嗎?
========
總結