日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【FTP】详解

發(fā)布時(shí)間:2024/9/21 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【FTP】详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?FTP協(xié)議及工作原理

1. FTP協(xié)議?

什么是FTP呢?FTP 是 TCP/IP 協(xié)議組中的協(xié)議之一,是英文File Transfer Protocol的縮寫。

該協(xié)議是Internet文件傳送的基礎(chǔ),它由一系列規(guī)格說明文檔組成,目標(biāo)是提高文件的共享性,提供非直接使用遠(yuǎn)程計(jì)算機(jī),使存儲(chǔ)介質(zhì)對(duì)用戶透明 和可靠高效地傳送數(shù)據(jù)。簡(jiǎn)單的說,FTP就是完成兩臺(tái)計(jì)算機(jī)之間的拷貝,從遠(yuǎn)程計(jì)算機(jī)拷貝文件至自己的計(jì)算機(jī)上,稱之為“下載 (download)”文件。若將文件從自己計(jì)算機(jī)中拷貝至遠(yuǎn)程計(jì)算機(jī)上,則稱之為“上載(upload)”文件

在TCP/IP協(xié)議中, 需要兩個(gè)端口,一個(gè)是數(shù)據(jù)端口,一個(gè)是控制端口。

控制端口一般為21,而數(shù)據(jù)端口不一定是20,這和FTP的應(yīng)用模式有關(guān),如果是主動(dòng)模式,應(yīng)該為20,如果為被動(dòng)模式,由服務(wù)器端和客戶端協(xié)商而定。相比于HTTP,FTP協(xié)議要復(fù)雜得多。復(fù)雜的原因,是因?yàn)镕TP協(xié)議要用到兩個(gè)TCP連接,一個(gè)是命令鏈路,用來在FTP客戶端與服務(wù)器之間傳遞命令;另一個(gè)是數(shù)據(jù)鏈路,用來上傳或下載數(shù)據(jù)。

2. FTP服務(wù)器和客戶端

同大多數(shù)Internet服務(wù)一樣,FTP也是一個(gè)客戶/服務(wù)器系統(tǒng)。用戶通過一個(gè)客戶機(jī)程序連接至在遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的服務(wù)器程序。依照 FTP 協(xié)議提供服務(wù),進(jìn)行文件傳送的計(jì)算機(jī)就是 FTP 服務(wù)器,而連接FTP服務(wù)器,遵循FTP協(xié)議與服務(wù)器傳送文件的電腦就是FTP客戶端。用戶要連上 FTP 服務(wù)器,就要用到 FPT 的客戶端軟件,通常 Windows自帶“ftp”命令,這是一個(gè)命令行的 FTP 客戶程序,另外常用的 FTP 客戶程序還有 CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-貓眼等。

3. FTP用戶授權(quán)

(1)用戶授權(quán)

要連上 FTP 服務(wù)器(即“登陸”),必須要有該 FTP 服務(wù)器授權(quán)的帳號(hào),也就是說你只有在有了一個(gè)用戶標(biāo)識(shí)和一個(gè)口令后才能登陸FTP服務(wù)器,享受FTP服務(wù)器提供的服務(wù)。

(2)FTP地址格式

FTP地址如下: ftp://用戶名:密碼@FTP服務(wù)器IP或域名:FTP命令端口/路徑/文件名

上面的參數(shù)除FTP服務(wù)器IP或域名為必要項(xiàng)外,其他都不是必須的。如以下地址都是有效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

(3)匿名FTP

互連網(wǎng)中有很大一部分 FTP 服務(wù)器被稱為“匿名”(Anonymous)FTP 服務(wù)器。這類服務(wù)器的目的是向公眾提供文件拷貝服務(wù),不要求用戶事先在該服務(wù)器進(jìn)行登記注冊(cè),也不用取得FTP服務(wù)器的授權(quán)。Anonymous(匿名文 件傳輸)能夠使用戶與遠(yuǎn)程主機(jī)建立連接并以匿名身份從遠(yuǎn)程主機(jī)上拷貝文件,而不必是該遠(yuǎn)程主機(jī)的注冊(cè)用戶。用戶使用特殊的用戶名“anonymous”登 陸FTP服務(wù),就可訪問遠(yuǎn)程主機(jī)上公開的文件。許多系統(tǒng)要求用戶將Emai1地址作為口令,以便更好地對(duì)訪問進(jìn)行跟綜。匿名FTP一直是Internet 上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機(jī)中存儲(chǔ)著無以計(jì)數(shù)的文件,這些文件包含了各種各樣的信息,數(shù)據(jù)和軟件。人們只要 知道特定信息資源的主機(jī)地址,就可以用匿名FTP登錄獲取所需的信息資料。雖然目前使用WWW環(huán)境已取代匿名FTP成為最主要的信息查詢方式,但是匿名 FTP仍是 Internet上傳輸分發(fā)軟件的一種基本方法。如red hat 、autodesk等公司的匿名站點(diǎn)。

4. FTP的傳輸模式

FTP協(xié)議的任務(wù)是從一臺(tái)計(jì)算機(jī)將文件傳送到另一臺(tái)計(jì)算機(jī),它與這兩臺(tái)計(jì)算機(jī)所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無關(guān)。假設(shè)兩臺(tái) 計(jì)算機(jī)通過ftp協(xié)議對(duì)話,并且能訪問Internet,你可以用ftp命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細(xì)微差別,但是每種協(xié)議基本的命令結(jié) 構(gòu)是相同的。

FTP的傳輸有兩種方式:ASCII傳輸模式和二進(jìn)制數(shù)據(jù)傳輸模式。

1.ASCII傳輸方式:假定用戶正在拷貝的文件包含的簡(jiǎn)單ASCII碼文本,如果在遠(yuǎn)程機(jī)器上運(yùn)行的不是UNIX,當(dāng)文件傳輸時(shí)ftp通常會(huì)自動(dòng) 地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺(tái)計(jì)算機(jī)存儲(chǔ)文本文件的格式。但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募?#xff0c;它們可能是程序, 數(shù)據(jù)庫(kù),字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫(kù)等信息的非打印符)。在拷貝任何非文本文件之前,用 binary 命令告訴ftp逐字拷貝,不要對(duì)這些文件進(jìn)行處理,這也是下面要講的二進(jìn)制傳輸。

2.二進(jìn)制傳輸模式:在二進(jìn)制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對(duì)應(yīng)的。即使目的地機(jī)器上包含位序列的文件是沒意義的。例 如,macintosh以二進(jìn)制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對(duì)方系統(tǒng)上,此文件不能執(zhí)行。如果你在ASCII方式下傳輸二進(jìn)制文件,即使 不需要也仍會(huì)轉(zhuǎn)譯。這會(huì)使傳輸稍微變慢 ,也會(huì)損壞數(shù)據(jù),使文件變得不能用。(在大多數(shù)計(jì)算機(jī)上,ASCII方式一般假設(shè)每一字符的第一有效位無意義,因?yàn)锳SCII字符組合不使用它。如果你傳 輸二進(jìn)制文件,所有的位都是重要的。)如果你知道這兩臺(tái)機(jī)器是同樣的,則二進(jìn)制方式對(duì)文本文件和數(shù)據(jù)文件都是有效的。

5. FTP的工作方式

FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動(dòng)方式),一種是 Passive (也就是PASV,被動(dòng)方式)。 下面介紹一個(gè)這兩種方式的工作原理:

主動(dòng) FTP :
    命令連接:客戶端 >1024 端口 → 服務(wù)器 21 端口
    數(shù)據(jù)連接:客戶端 >1024 端口 ← 服務(wù)器 20 端口

  被動(dòng) FTP :
    命令連接:客戶端 >1024 端口 → 服務(wù)器 21 端口
    數(shù)據(jù)連接:客戶端 >1024 端口 ← 服務(wù)器 >1024 端口

  PORT(主動(dòng))方式的連接過程是:客戶端向服務(wù)器的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一條命令鏈路。 當(dāng)需要傳送數(shù)據(jù)時(shí), 客戶端在命令鏈路上用PORT命令告訴服務(wù)器:“我打開了***X端口,你過來連接我”。于是服務(wù)器從20端口向客戶端的***X端口發(fā)送連接請(qǐng)求,建立 一條數(shù)據(jù)鏈路來傳送數(shù)據(jù)。??

  PASV(被動(dòng))方式的連接過程是:客戶端向服務(wù)器的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一條命令鏈路。 當(dāng)需要傳送數(shù)據(jù)時(shí), 服務(wù)器在命令鏈路上用PASV命令告訴客戶端:“我打開了***X端口,你過來連接我”。于是客戶端向服務(wù)器的***X端口發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù)鏈 路來傳送數(shù)據(jù)。

早先所有客戶端都使用主動(dòng)模式,而且工作的很好,而現(xiàn)在因?yàn)榭蛻舳朔阑饓Φ拇嬖?#xff0c;將會(huì)關(guān)閉一些端口,這樣主動(dòng)模式將會(huì)失敗。在這種情況下就要使用被動(dòng)模式,但是一些端口也可能被服務(wù)器的防火墻封掉。不過因?yàn)閒tp服務(wù)器需要它的ftp服務(wù)連接到一定數(shù)量的客戶端,所以他們總是支持被動(dòng)模式的。這就是我們?yōu)槭裁匆褂帽粍?dòng)模式的原意,為了確保數(shù)據(jù)可以正確的傳輸,使用被動(dòng)模式要明顯優(yōu)于主動(dòng)模式(譯者注:主動(dòng)(PORT)模式建立數(shù)據(jù)傳輸通道是由服務(wù)器端發(fā)起的,服務(wù)器使用20端口連接客戶端的某一個(gè)大于1024的 端口;在被動(dòng)(PASV)模式中,數(shù)據(jù)傳輸?shù)耐ǖ赖慕⑹怯蒄TP客戶端發(fā)起的,他使用一個(gè)大于1024的端口連接服務(wù)器的1024以上的某一個(gè)端口)

主動(dòng)模式傳送數(shù)據(jù)時(shí)是服務(wù)器連接到客戶端的端口;

被動(dòng)模式傳送數(shù)據(jù)是客戶端連接到服務(wù)器的端口。

? ? 主動(dòng)模式需要客戶端必須開放端口給服務(wù)器,很多客戶端都是在防火墻內(nèi),開放端口給FTP服務(wù)器訪問比較困難。

? ? 被動(dòng)模式只需要服務(wù)器端開放端口給客戶端連接就行了。

FTP服務(wù)器一般都支持主動(dòng)和被動(dòng)模式,連接采用何種模式是有FTP客戶端軟件決定。

6FTP被動(dòng)模式的出現(xiàn)原因 

在FTP的歷史中,本來只有主動(dòng)模式的,但是為什么又出現(xiàn)了被動(dòng)模式呢?這又牽涉到另外一個(gè)問題了,

在很久以前(我也不知道多久),地球上還沒有什么共享上網(wǎng)這種技術(shù),但是后來出現(xiàn)了,所以也就有了下面的問題,大家都知道,共享上網(wǎng)就是很 多臺(tái)電腦共享一個(gè)公網(wǎng)IP去使用internet,再打個(gè)比喻吧,某個(gè)局域網(wǎng)共享210.33.25.1這個(gè)公網(wǎng)IP上網(wǎng),當(dāng)一個(gè)內(nèi)網(wǎng)用戶 192.168.0.100去訪問外網(wǎng)的FTP服務(wù)器時(shí),如果采用主動(dòng)模式的話,192.168.0.1告訴了FTP服務(wù)器我需要某個(gè)文件和我打開了x端 口之后,由于共享上網(wǎng)的原因,192.168.0.1在出網(wǎng)關(guān)的時(shí)候自己的IP地址已經(jīng)被翻譯成了210.33.25.1這個(gè)公網(wǎng)IP,所以服務(wù)器端收到 的消息也就是210.33.25.1需要某個(gè)文件并打開了x端口,FTP服務(wù)器就會(huì)往210.33.25.1的x端口傳數(shù)據(jù),這樣當(dāng)然會(huì)連接不成功了,因 為打開x端口的并不是210.33.25.1這個(gè)地址,在這種情況下被動(dòng)模式就有用了,相信大家已經(jīng)能夠理解被動(dòng)模式是怎么個(gè)連接法了吧。

  在主動(dòng)模式中,FTP的兩個(gè)端口是相對(duì)固定的,如果命令端口是x的話,那數(shù)據(jù)端口就是x-1,也就是說默認(rèn)情況下,命令端口是21,數(shù)據(jù)端口就20;你把命令端口改成了123,那么數(shù)據(jù)端口就是122。這樣使用防火墻就很方便了,只要開通這兩個(gè)端口就可以了,但是如果客戶端是共享上網(wǎng)的話那豈不是不能正常使用FTP了,這樣還是不行,一定需要被動(dòng)模式。

  在被動(dòng)模式中就麻煩了些,默認(rèn)情況下命令端口是21,但是數(shù)據(jù)端口是隨機(jī)的

?

windows FTP被動(dòng)模式設(shè)置

windows server 2008服務(wù)器搭建完畢后默認(rèn)為主動(dòng)式 ?

主動(dòng)式有利于服務(wù)器端管理 但是可能會(huì)被客戶端防火墻攔截

被動(dòng)式由于數(shù)據(jù)傳輸由客戶端發(fā)起出?所有不會(huì)被客戶端防火墻攔截 ?但是不利于服務(wù)器管理

IIS中搭建FTP后配置FTP為主動(dòng)模式:

1、雙擊網(wǎng)站(最上面,而不是ftp站點(diǎn)),FTP防火墻

?

填寫端口和IP即可 ? 例如填寫50000-60000,即為允許10000個(gè)被動(dòng)連接?(此時(shí)可能為灰色需要開通防火墻)

如果端口位置為灰色,需執(zhí)行以下命令添加防火墻策略 允許ftp

netsh advf:irewall firewall ?add rule name="FTP Service" action=allow service=ftpsvc protocol=TCP dir=in

netsh advfirewall ? firewall set global StatefulFTP disable

添加完畢再看端口可以輸入數(shù)值和外部連接的IP地址 ?點(diǎn)擊應(yīng)用。

2、而看了下用1025-1034這樣的端口并不行,用抓包也看到被動(dòng)時(shí),服務(wù)器端制定的端口是50492。

而這個(gè)端口是變動(dòng)的,故如果只設(shè)置一個(gè)端口是不行的(50000-50000這樣不行)

?

?

相應(yīng)的服務(wù)器也得在“安全組規(guī)則”里開這些端口。

?

?

FTP客戶端的注意事項(xiàng)

請(qǐng)注意:選擇用PASV方式還是PORT方式登錄FTP服務(wù)器,選擇權(quán)在FTP客戶端,而不是在FTP服務(wù)器。
一、客戶端只有內(nèi)網(wǎng)IP,沒有公網(wǎng)IP
從上面的FTP基礎(chǔ)知識(shí)可知,如果用PORT方式,因?yàn)榭蛻舳藳]有公網(wǎng)IP,FTP將無法連接客戶端建立數(shù)據(jù)鏈路。因此,在這種情況下,客戶端必須要用PASV方式,才能連接FTP服務(wù)器。大部分FTP站長(zhǎng)發(fā)現(xiàn)自己的服務(wù)器有人能登錄上,有人登錄不上,典型的錯(cuò)誤原因就是因?yàn)榭蛻舳藳]有公網(wǎng)IP,但用了IE作為FTP客戶端來登錄(IE默認(rèn)使用PORT方式)。

二、客戶端有公網(wǎng)IP,但安裝了防火墻
如果用PASV方式登錄FTP服務(wù)器,因?yàn)榻?shù)據(jù)鏈路的時(shí)候,是由客戶端向服務(wù)器發(fā)送連接請(qǐng)求,沒有問題。反過來,如果用PORT方式登錄FTP服務(wù)器,因?yàn)榻?shù)據(jù)鏈路的時(shí)候,是由服務(wù)器向客戶端發(fā)送連接請(qǐng)求,此時(shí)連接請(qǐng)求會(huì)被防火墻攔截。如果要用PORT方式登錄FTP服務(wù)器,請(qǐng)?jiān)诜阑饓ι洗蜷_1024以上的高端端口。

?

轉(zhuǎn)載于:https://www.cnblogs.com/peterYong/p/8630542.html

總結(jié)

以上是生活随笔為你收集整理的【FTP】详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。