簡介
FTP是套用層的協定,它基於傳輸層,為用戶服務,它們負責進行檔案的傳輸。FTP是一個8位的客戶端-伺服器協定,能操作任何類型的檔案而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求數據之間的時間會非常長,並且不時的必需執行一些冗長的登入進程。FTP服務一般運行在20和21兩個連線埠。連線埠20用於在客戶端和伺服器之間傳輸數據流,而連線埠21用於傳輸控制流,並且是命令通向ftp伺服器的進口。當數據通過數據流傳輸時,控制流處於空閒狀態。而當控制流空閒很長時間後,客戶端的防火牆會將其會話置為逾時,這樣當大量數據通過防火牆時,會產生一些問題。此時,雖然檔案可以成功的傳輸,但因為控制會話會被防火牆斷開,傳輸會產生一些錯誤。
工作原理
檔案傳輸協定(FTP)是TCP/IP提供的標準機制,用來將檔案從一個主機複製到另一個主機。FTP使用TCP的服務。網頁瀏覽器
大多數最新的網頁瀏覽器和檔案管理器都能和FTP伺服器建立連線。這使得在FTP上通過一個接口就可以操控遠程檔案,如同操控本地檔案一樣。這個功能通過給定一個FTP的URL實現,形如ftp://<伺服器地址>。是否提供密碼是可選擇的,如果有密碼,則形如ftp:// : @。大部分 網頁瀏覽器要求使用被動FTP模式,然而並不是所有的FTP 伺服器都支持被動模式。網路協定
套用層DNS, FTP, ENRP, HTTP, IMAP, IIRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, Telnet, BitTorrent, DHCP...
傳輸層DCCP, SCTP, TCP, RTP, UDP, IL, RUDP, ...
網路層IPv4, IPv6...
數據鏈路層乙太網, Wi-Fi, 令牌環, MPLS, PPP...
物理層RS-232, EIA-422, RS-449, EIA-485, 10BASE2, 10BASE-T...
FTP和網站
我們都知道,當我們需要往 網站空間上放網站檔案的時候,我們可以採用 WEB和 FTP兩種方法。在這裡,我們建議直接使用FTP進行 數據交換,因為不管是安全性還是快捷性來說,ftp都是很不錯的。那么我們怎么往空間上傳送網站的數據檔案呢,這時,我們就需要一個軟體 FlashFXP或者其他FTP 客戶端。這裡我們以FlashFXP為例,我們去網上下載這個 軟體包並解壓出來,雙擊FlashFXP.exe這個檔案,進入頁面之後,有一個閃電符號的按鈕,這是 連線。單擊或者直接按F8,這時會出來一個對話框,我們只需要輸入網站的URL或者 IP,然後再輸入 用戶名和 密碼就行,這時,我們就可以進行網站數據檔案的傳輸了。
FTP用戶授權
(1)用戶授權要連上 FTP 伺服器(即“登入”),必須要有該 FTP 伺服器授權的帳號,也就是說你只有在有了一個 用戶標識和一個口令後才能登入FTP伺服器,享受FTP伺服器提供的服務。
(2)FTP地址 格式
FTP地址如下: ftp://用戶名:密碼@FTP 伺服器IP或域名:FTP命令連線埠/ 路徑/檔案名稱
上面的參數除FTP 伺服器IP或域名為必要項外,其他都不是必須的。
FTP伺服器
FTP的全稱是File Transfer Protocol(檔案傳輸協定),顧名思義,就是專門用來傳輸檔案的協定。FTP的主要作用,就是讓用戶連線上一個遠程計算機(這些計算機上運行著 FTP伺服器程式)察看遠程計算機有哪些檔案,然後把檔案從遠程計算機上拷到本地計算機,或把本地計算機的檔案送到遠程計算機去。其實 早期在Internet上傳輸檔案,並不是一件容易的事,我們知道 Internet是一個非常複雜的計算機環境,有PC、工作站、MAC、伺服器、大型機等等,而這些計算機可能運行不同的作業系統,有Unix、Dos、 Windows、MacOS等等,各種作業系統之間的檔案交流,需要建立一個統一的檔案傳輸協定,這就是所謂的FTP。雖然基於不同的作業系統有不同的 FTP應用程式,而所有這些應用程式都遵守同一種協定,這樣用戶就可以把自己的檔案傳送給別人,或者從其它的用戶環境中獲得檔案。
與大 多數Internet服務一樣,FTP也是一個客戶機/伺服器系統(C/S)。用戶通過一個支持FTP協定的客戶機程式,連線到遠程主機上的FTP伺服器 程式。用戶通過客戶機程式向伺服器程式發出命令,伺服器程式執行用戶所發出的命令,並將執行的結果返回到客戶機。比如說,用戶發出一條命令,要求伺服器向用戶傳送某一個檔案,伺服器會回響這條命令,將指定檔案送至用戶的機器上。客戶機程式代表用戶接收到這個檔案,將其存放在用戶指定目錄中。FTP客戶程式 有字元界面和圖形界面兩種。字元界面的FTP的命令複雜、繁多。圖形界面的FTP客戶程式,操作上要簡潔方便的多。
在FTP的使用當 中,用戶經常遇到兩個概念:"下載"(Download)和"上載"(Upload)。"下載"檔案就是從遠程主機拷貝檔案至自己的計算機上;"上載"文 件就是將檔案從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程式向(從)遠程主機上載(下載)檔案。
在ftp的使用過程中,必須首先登錄,在遠程主機上獲得相應的許可權以後,方可上傳或下載檔案。也就是說,要想同哪一台計算機傳送檔案,就必須具有哪一台計算機的適當授權。換言之,除非有用戶ID和口令,否則便無法傳送檔案。這種情況違背了Internet的開放性,Internet上的FTP主機何止千 萬,不可能要求每個用戶在每一台主機上都擁有帳號。因此就衍生出了匿名 FTP。
優缺點
優點:1.促進檔案的共享(電腦程式或數據)。
2.鼓勵間接或者隱式的使用遠程計算機。
3.向用戶禁止不同 主機中各種檔案存儲系統的細節。
4.可靠和高效的傳輸數據。
缺點:
1.密碼和檔案內容都使用明文傳輸,可能產生不希望發生的竊聽。
2.因為必須開放一個隨機的連線埠以建立連線,當 防火牆存在時, 客戶端很難過濾處於主動模式下的FTP流量。這個問題通過使用被動模式的FTP得到了很大解決。
3.伺服器可能會被告知連線一個第三方計算機的保留連線埠。
FTP雖然可以被終端用戶直接使用,但是它是設計成被FTP 客戶端程式所控制。
運行FTP服務的許多站點都開放匿名服務,在這種設定下,用戶不需要 帳號就可以登錄 伺服器,默認情況下,匿名用戶的用戶名是:“anonymous”。這個帳號不需要 密碼,雖然通常要求輸入用戶的郵件地址作為認證密碼,但這只是一些細節或者此郵件地址根本不被確定,而是依賴於 FTP伺服器的配置情況。
使用模式
FTP有兩種使用模式:主動和被動。主動模式要求 客戶端和 伺服器端同時打開並且監聽一個連線埠以建立連線。在這種情況下, 客戶端由於安裝了 防火牆會產生一些問題。所以,創立了被動模式。被動模式只要求伺服器端產生一個監聽相應連線埠的進程,這樣就可以繞過 客戶端安裝了 防火牆的問題。一個主動模式的FTP連線建立要遵循以下步驟:
1. 客戶端打開一個隨機的連線埠( 連線埠號大於1024,在這裡,我們稱它為x),同時一個FTP進程連線至伺服器的21號命令連線埠。此時,源連線埠為隨機連線埠x,在 客戶端,遠程連線埠為21,在伺服器。
2.客戶端開始監聽連線埠(x+1),同時向 伺服器傳送一個連線埠命令(通過伺服器的21號命令連線埠),此命令告訴 伺服器客戶端正在監聽的 連線埠號並且已準備好從此連線埠接收數據。這個連線埠就是我們所知的數據連線埠。
3.伺服器打開20號 源連線埠並且建立和客戶端數據連線埠的連線。此時, 源連線埠為20,遠程數據連線埠為(x+1)。
4. 客戶端通過本地的數據連線埠建立一個和伺服器20號連線埠的連線,然後向伺服器傳送一個應答,告訴伺服器它已經建立好了一個連線。
被動模式FTP:
為了解決 伺服器發起到客戶的連線的問題,人們開發了一種不同的FTP連線方式。這就是所謂的被動方式,或者叫做PASV,當 客戶端通知伺服器它處於被動模式時才啟用。
在被動方式FTP中,命令連線和 數據連線都由 客戶端發起,這樣就可以解決從 伺服器到 客戶端的數據連線埠的入方向連線被 防火牆過濾掉的問題。
當開啟一個 FTP連線時, 客戶端打開兩個任意的非特權本地連線埠(N > 1024和N+1)。第一個連線埠連線 伺服器的21連線埠,但與主動方式的FTP不同, 客戶端不會提交PORT命令並允許伺服器來回連它的數據連線埠,而是提交 PASV命令。這樣做的結果是 伺服器會開啟一個任意的非特權連線埠(P > 1024),並傳送PORT P命令給 客戶端。然後 客戶端發起從本地連線埠N+1到 伺服器的連線埠P的連線用來傳送數據。
對於伺服器端的 防火牆來說,必須允許下面的通訊才能支持被動方式的FTP:
1. 從任何大於1024的連線埠到 伺服器的21連線埠 ( 客戶端的初始化連線)
2. 伺服器的21連線埠到任何大於1024的連線埠 (伺服器回響到客戶端的 控制連線埠的連線)
3. 從任何大於1024連線埠到 伺服器的大於1024連線埠 (客戶端初始化 數據連線到伺服器指定的任意連線埠)
4. 伺服器的大於1024連線埠到遠程的大於1024的連線埠(伺服器傳送ACK回響和數據到 客戶端的數據連線埠)