rfc959ftp
⑴ 什麼是ftp
我們在使用電腦進行文件傳輸的時候經常會看到FTP這個詞,那麼它具體是什麼意思呢?一起來了解一下吧。
FTP的含義
FTP是文件傳輸協議的英文簡稱,而中文簡稱為文傳協議。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序。
FTP的作用和弊端
FTP是一個8位的客戶端伺服器協議,能操作任何類型的文件而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求數據之間的時間會非常長,並且還必須執行一些冗長的登錄進程。
總的來說,FTP是文件傳輸協議的英文簡稱,是一種客戶端/伺服器協議。用於Internet上的控制文件的雙向傳輸。
⑵ ftp的解讀
、什麼是FTP:文件傳輸協議原理
互聯網文件傳輸協議(File Transfer Protocol ,FTP) 標準是在RFC959說明的。該協議定義了一個從遠程計算機系統和本地計算機系統之間傳輸文件的一個標准。一般來說,傳輸文件的用戶需要先經過認證以後才能登錄網站,然後方能訪問在遠程伺服器的文件。而大多數的FTP伺服器往往提供一個GUEST的公共帳戶來允許沒有遠程伺服器的用戶可以訪問該FTP伺服器。
一個FTP會話通常包括五個軟體元素的交互。
用戶介面 提供了一個用戶介面並使用客戶端協議解釋器的服務
客戶 PI 客戶協議解釋器,其項遠程伺服器協議機發送命令並且驅動客戶數據傳輸過程
伺服器PI 伺服器協議解釋器,響應客戶協議機發出的命令並驅動伺服器端數據傳輸過程
客戶 DTP 客戶數據傳輸過程,其負責完成和伺服器數據傳輸過程及客戶端本地文件系統的通信
服務DTP 伺服器數據傳輸過程,其負責完成和客戶數據傳輸過程及伺服器端文件系統的通信
在RFC 959中,一般使用用戶這個名詞來指代客戶。RFC 959定義了客戶PI和伺服器PI交互的方式和規范。用戶介面與PI和DTP交互的機理都並不是協議標準的一部分。PI和DTP往往通常是在同一個程序模塊中實現的。
在FTP會話中,一共會存在有兩個獨立的網路連接,一個是由兩端的PI使用的,另一個是由兩端的DTP使用的。PI之間的連接一般被稱作控制連接(control connection),DTP之間的連接被稱做數據連接(data connection)
使用TCP服務的控制和數據連接
通常情況下,FTO伺服器監聽埠號21來等待控制連接建立請求。而數據連接埠號的選擇依賴於控制連接上命令。通常是客戶發送一個控制消息來指定客戶監聽並等待伺服器端發送數據連接建立請求的埠號。
對數據傳輸和控制命令傳輸來使用不同的獨立連接有如下優點:兩個連接可以選擇不同的合適服務質量,如:對控制連接來說高需要更小的延遲時間,對數據連接來說需要更大的數據吞吐量;而且可以避免實現數據流中的命令的通明性及逃逸。
當傳輸建立時,總是由客戶端首先發起。然而客戶和伺服器都可能是數據發送者。除了傳輸用戶請求下載文件,數據傳輸過程同樣在客戶端請求列伺服器端目錄結構時建立。
1.命令選擇
當一個傳輸建立時,一般通常需要指定四個方面的屬性:
文件類型
該屬性指定如何將文件的數據匹配成適於傳輸的格式,一共有四種可能的選擇:
ASCII文件類型
在發送端,文件從本地文本文件格式轉換為 NVT ASCII格式,每行結束有一個CR/LF對來標識。 在接收端,再被轉換為本地的文本格式。
這說明了為什麼Unix主機之間傳輸文本文件為何傳輸的數據量要大於文件的實際大小。若傳輸一段端或傳輸兩端都不使用ASCII文本編碼,則是應該由數據傳輸過程來實現本地編碼和NVT ASCII 編碼之間的轉換。
EBCDIC文件類型
類似於ASCII,區別僅僅上使用EBCDIC字元編碼
圖象 (或二進制)文件類型
文件以本地傳輸內容傳輸,在遠端以同本地完全相同的內容存儲。
本地文件系統
用在位元組大小不是8位的環境下。沒位元組位數由發送者指定。
在實際應用中,只有ASCII和圖象格式使用的較多。
格式控制
該屬性是和將文本文件最後傳送到列印設備相關的,其中有多種方式來實現將垂直格式信息編碼到文件中,包括指示一個新頁開始的方式。有如下方式可供選擇:
無須列印格式控制,這是預設值
Telnet列印控制,在telnet協議中定義的控制字元包含在數據流中。.
Fortran列印控制,
該屬性在實際中很少使用。
結構
文件可以擁有內部結構,在傳輸中該結構被保留。由數據傳輸過程來負責在傳輸中的結構及本地結構之間相互匹配,有三種可能性:
文件結構
這實際上意味著文件被看作沒有內部結構的連續的位元組流。
記錄結構
文件是有一系列記錄組成的結構。這只適用於文本文件。
頁面結構
也可以稱做塊結構。每一頁都伴隨一個頁號來傳輸,從而以順序的方式來完成傳輸。
頁面結構很少在實際中遇到。記錄結構也不是很常見。對於文本文件使用ASCII文件類型可以獲得相同的效果。
傳輸模式
該屬性可以取三個不同的值:
流模式
文件的以位元組流的方式傳輸。
塊模式
文件以一個塊連接一個塊的方式傳輸,每個塊的開頭都有一個頭。
壓縮模式
一個簡單的運程長度壓縮編碼被應用,來壓縮連續的相同的位元組。
實際中,一般只有流模式被使用。而壓縮一般通過使用各種其他的工具程序來獲得。
當一次傳輸被建立,客戶端一般指定一個或多個前面說明的屬性。若伺服器端不能支持某個選項,伺服器將用一個錯誤信息來響應客戶端,並不具有協商機制。
FTP提供了充足的命令來使用戶和遠程建立連接並訪問遠程文件系統。
2.命令格式
命令以NVT ASCII串的格式被傳輸。每個命令以三個或四個大寫的NVT ASCII字元開始,後面帶有選項參數和一個CR/LF對來標識命令結束
應答由三個NVT ASCII數字及一個選項消息組成。
一個長的應答也許會有多個消息組成,第一個消息的三個數字後帶有一個破折號,最後的消息不帶有破折號。中間的消息無須攜帶三個數字,但是如果帶了三個數字,則也需要破折號。
下面是所有的命令的列表。帶有星號的命令一般很少使用,所以往往在具體實現中不支持。
String Meaning
ABOR 放棄傳輸
*ACCT 某些系統將帳號和用戶與文件系統相關聯
*ALLO 為即將傳送的文件分配空間。後面攜帶的參數來確定位元組數
*APPE 將文件附加到已經存在的文件後面
CDUP 在遠程系統上將當前目錄切換到上級父目錄
CWD 改變遠程系統的工作目錄
DELE 刪除遠程系統的文件
HELP 讀取伺服器的幫助信息,如:支持的命令的列表
LIST 在一個新建立的數據連接上發送當前工作目錄下的文件名列表
MKD 創建目錄
MODE 指定傳輸模式,可攜帶的參數是:S、B或 C.
NLST 在一個新建立的數據連接上發送一個當前目錄下的「完全」的目錄列表
NOOP 空操作,防止連接斷掉
PASS 提供一個用戶登錄密碼,必須立即跟隨在USER命令後
*PASV 指定伺服器數據傳輸過程監聽等待客戶端的數據連接連接建立請求
PORT 指定客戶端監聽等待伺服器端建立的連接的埠號
PWD 顯示伺服器端的當前工作目錄名
QUIT 退出登錄並終止連接
*REIN 重新初始化,退出登錄但是並不斷開連接,後面必須隨後發出一個新的USER命令
*REST 從伺服器的一個標識處重新開始傳輸
RETR 從遠程系統取回一個文件
RMD 刪除一個目錄
*RNFR 指定要被命名的文件的老的路徑名,隨後必須是一個RNTO命令
*RNTO 指定要被命名的文件的新的路徑名
*SITE 站點特有的伺服器提供的服務
*SMNT 結構載入,提供一個文件系統結構的遠程系統路徑名
*STAT 狀態信息
STOR 上載一個文件到伺服器上,若文件已經存在則覆蓋
*STOU 上載一個文件到伺服器上,不覆蓋已經存在的文件
STRU 指定文件結構,參數可以是F、R或P.
*SYST 報告遠程系統的操作系統類型
TYPE 指定文件類型,參數可以是A、E、I、L只有TYPE A和TYPE I常用
控制連接命令應答有如下形式:
Type Description
1yz 主動初步應答,在發送另一個命令以前等待另一個應答
2yz 主動最後應答,最後一個命令成功結束
3yz 主動中間應答,必須再發送一個命令
4yz 暫時被動應答,要求的動作當時不能完成,但可以重試
5yz 永久被動應答,要求的動作不能完成,不應該重試
"y"數字編碼進一步的信息
Digit Meaning
0 語法錯誤
1 信息
2 連接狀態
3 認證和記帳
4 保留
5 File s文件系統狀態
下面是一些典型的消息:
Number Meaning
125 數據連接打開,傳輸開始
200 命令OK
331 用戶名OK 需要輸入密碼
425 不能打開數據連接
452 錯誤寫文件
500 語法錯誤-不可識別的命
具體的詳細情況可以參見RFC
⑶ FTP是什麼的縮寫,到底指什麼意思
FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為「文傳協議」。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。
FTP是一個8位的客戶端-伺服器協議,能操作任何類型的文件而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求數據之間的時間,會非常長;並且不時的必須執行一些冗長的登錄進程。
文件傳輸協議的原始規范於1971年4月16日發布為RFC 114。直到1980年,FTP運行在TCP/ IP的前身NCP上。該協議後來被TCP / IP版本,RFC 765(1980年6月)和RFC 959(1985年10月)(當前規范)所取代。
RFC 959提出了若干標准修改,例如RFC 1579(1994年2月)啟用防火牆FTP(被動模式),RFC 2228(1997年6月)提出安全擴展,RFC 2428(1998年9月)增加了對IPv6的支持,並定義了一種新型的被動模式。
(3)rfc959ftp擴展閱讀
與大多數Internet服務一樣,FTP也是一個客戶機/伺服器系統。用戶通過一個支持FTP協議的客戶機程序,連接到在遠程主機上的FTP伺服器程序。用戶通過客戶機程序向伺服器程序發出命令,伺服器程序執行用戶所發出的命令,並將執行的結果返回到客戶機。
比如說,用戶發出一條命令,要求伺服器向用戶傳送某一個文件的一份拷貝,伺服器會響應這條命令,將指定文件送至用戶的機器上。客戶機程序代表用戶接收到這個文件,將其存放在用戶目錄中。
大多數最新的網頁瀏覽器和文件管理器都能和FTP伺服器創建連接。這使得在FTP上通過一個介面就可以操控遠程文件,如同操控本地文件一樣。
這個功能通過給定一個FTP的URL實現,形如ftp://<伺服器地址>(例如,ftp://ftp.gimp.org )。是否提供密碼是可選擇的,如果有密碼,則形如ftp://<login>:<password>@<ftpserveraddress>。大部分網頁瀏覽器要求使用被動FTP模式,然而並不是所有的FTP伺服器都支持被動模式。
⑷ ftp的背景知識
FTP是文件傳輸協議(File Transfer Protocol)的簡稱,RFC959中對該協議作了具體說明。
FTP的目標是:提高文件的共享性;提供非直接使用遠程計算機的方法(通過程序);使存儲介質對用戶透明(屏蔽了不同主機上文件系統的差異);可靠高效地傳送數據。
FTP命令
DOS command窗口中敲ftp後回車,在ftp命令提示符後敲?回車,可以列出ftp支持的所有命令。具體用法就不在這里敘述了(網上都可以查到,拷貝粘貼一大堆很沒勁),在使用中可以慢慢體會。
FTP匿名訪問
用戶選擇匿名訪問時不需要輸入用戶名和密碼,系統視用戶名為anonymous。對於這個特殊的匿名用戶帳號,目前大多數站點都明確要求使用電子郵件地址作為匿名用戶密碼。提供電子郵件地址,有助於讓站點的擁有者了解到是哪些人在使用他們的服務。(原文參見RFC1635 How to Use Anonymous FTP)
請注意,anonymous用戶通常不會被允許向檔案站點上傳文件,只允許下載。
FTP傳輸模式
這個有必要說一下。FTP傳輸模式分為PASV模式與PORT模式兩種(默認為PASV模式)。
FTP是僅基於TCP的服務,不支持UDP。與其他TCP服務不同的是,FTP使用2個埠,一個數據埠和一個命令埠(或叫做控制埠)。通常來說,這兩個埠分別是21(命令埠)和20(數據埠)。但根據FTP工作方式(傳輸模式)的不同,數據埠並不總是20埠。下面分別闡述:
主動傳輸模式(PORT模式)
當FTP的控制連接建立,客戶提出目錄列表、傳輸文件時,客戶端發出PORT命令與伺服器進行協商,FTP伺服器使用一個標准埠20作為伺服器端的數據連接埠,與客戶建立數據連接。埠20隻用於連接源地址是伺服器端的情況,並且埠20沒有監聽進程來監聽客戶請求。 在主動傳輸模式下,FTP的數據連接和控制連接方向相反,由伺服器向客戶端發起一個用於數據傳輸的連接。客戶端的連接埠由伺服器端和客戶端通過協商確定。主動傳輸模式下,FTP伺服器使用20埠與客戶端的高位隨機埠進行連接,並傳輸數據,客戶端只是處於接收狀態。
主動FTP對FTP伺服器的管理有利,但對客戶端的管理不利。因為FTP伺服器企圖與客戶端的高位隨機埠建立連接,而這個埠很有可能被客戶端的防火牆阻塞掉。 為了解決這個伺服器發起到客戶端的連接問題,人們開發了一種不同的FTP連接方式,這就是所謂的被動方式,或者叫做PASV方式。當客戶端通知伺服器它處於被動模式時才啟用。
被動傳輸模式(PASV模式)
當FTP的控制連接建立,客戶提出目錄列表、傳輸文件時,客戶端發送PASV命令使伺服器處於被動傳輸模式,FTP伺服器等待客戶與其聯系。FTP伺服器在非20埠的其它數據傳輸埠上監聽客戶請求。 在被動傳輸模式下,FTP的數據連接和控制連接方向一致,由客戶端向伺服器發起一個用於數據傳輸的連接。客戶端的連接埠是發起該數據連接請求時使用的埠。當FTP客戶在防火牆之外訪問FTP伺服器時,需要使用被動傳輸模式。被動傳輸模式下,FTP伺服器打開一個高位隨機埠等待客戶端對其進行連接,並傳輸數據,伺服器並不參與數據的主動傳輸,只是被動接受。
被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利。因為客戶端要與伺服器端建立兩個連接,其中一個連接要連到伺服器端的一個高位隨機埠,而這個埠很有可能被伺服器端的防火牆阻塞掉。
目前默認都採用PASV方式(除非伺服器不支持)。現在的FTP伺服器大多也都支持被動FTP,因為管理員需要他們的伺服器有最多的客戶連接。通過為FTP伺服器指定一個有限的埠范圍可以減小伺服器高位埠的暴露,不在這個范圍的任何埠會被伺服器的防火牆阻塞,這樣,雖然這沒有消除所有針對伺服器的危害,但它畢竟大大減少了風險。
在WWW泛濫的時代,大多數web瀏覽器(可用作FTP客戶端)在訪問ftp://這樣的URL時也都是默認支持被動模式的(在瀏覽器的 "Internet 選項" 中可看到使用被動FTP的相關設置)。
FTP數據分析與測試
如果需要分析FTP過程中的一些狀態及數據,可以使用Ethereal工具抓包,獲取經過網卡的數據。前提是:FTP伺服器IP不為本機IP,否則,數據不經過網卡。
⑸ FTP是什麼意思
是文件傳輸協議(File Transfer Protocol,FTP),是用於在網路上進行文件傳輸的一套標准協議,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應用層, 使用 TCP 傳輸而不是 UDP, 客戶在和伺服器建立連接前要經過一個「三次握手」的過程, 保證客戶與伺服器之間的連接是可靠的, 而且是面向連接, 為數據傳輸提供可靠保證。
⑹ FTP該如何實現斷點續傳
客戶端的實現步驟如下:
一、下載:
1、向伺服器發送「REST + 本地文件長度」命令,告訴伺服器,客戶端要斷點下載了。這時伺服器還不知道客戶端要下載哪個文件;
要實現FTP的斷點續傳,FTP伺服器必須支持REST指令,這條指令在FTP協議文本RFC959中就已經定義了,不過它不是FTP伺服器必須支持的指令。一般,你可以在下載前使用REST 100命令進行實驗,如果伺服器正常執行了這條命令,說明該伺服器支持FTP斷點續傳。REST後面跟的數表示下載文件的起始位置,而REST 0表示從文件最開始處下載。REST命令本身並不執行下載功能,你仍需要使用RETR命令執行下載工作。
2、向伺服器發送「RETR + 文件名」命令,通知伺服器要下載的文件名,這時伺服器開始定位文件指針讀文件並發送數據。
3、客戶端定位本地文件指針(文件末尾);
4、兩端的准備工作都做完了以後,客戶端創建socket,以被動或非被動方式建立數據通道,循環調用recv接收數據並追加入本地文件;
二、上傳:
1、獲取伺服器上和本地要上傳文件的同名文件大小;
2、向伺服器發送「APPE + 文件名」,通知伺服器,接下來從數據通道發送給你的數據要附加到這個文件末尾。
3、定位本地文件指針(和FTP上文件大小相同的位置)
4、從文件指針處讀數據並發送。
代碼里將斷點上傳和斷點下載放到同一個函數(MoveFile)里,通過get參數說明是上傳還是下載。
⑺ linux下的 FTP 與windows的FTP 有什麼區別
我是Linux
C程序員,精通網路開發,
我來告訴你這兩個的關系。
FTP是一種數據傳輸協議,在RFC959中定義比較完整,任意語言,任意平台,只要按著協議
編寫程序就可以得到FTP,
這樣就意味著,無論是Windows,Linux,UNIX,
Solaris,還是其他什麼系統,還是直接裸機,只要實現了RFC959定義的過程,都是FTP。
FTP是個C/S的程序,無論
是哪個系統,只要雙方能夠正確解析FTP流和正確發送FTP數據流就OK了。在Linux和Windows上FTP沒有什麼差別。。都是RFC的一種表現方式而已。。