Atitit ftp原理与解决方案
?
?
?
?
Atitit ftp原理與解決方案
?
?
?
?
?
?
Deodeo sh shmayama ..search ftp..
?
1. http和ftp都只是通信協(xié)議,就是只管傳輸那一塊的,那為什么不能使用ftp來顯示網(wǎng)頁??1
1.1. 原則是是可以,瀏覽器下載從http和ftp下載是一樣的效果,然后本地渲染顯示html即可。。1
1.2. 最主要原因是性能原因(小文件http效率更高)1
1.3. ftp設(shè)計復(fù)雜度高1
1.4. 此外3.與防火墻工作不協(xié)調(diào)2
2. HTTP和FTP的區(qū)別2
2.1. 二、復(fù)雜點兒2
2.1.1. 1.FTP2
3. ftp在傳輸小文件時候,效率較低3
?
1.?http和ftp都只是通信協(xié)議,就是只管傳輸那一塊的,那為什么不能使用ftp來顯示網(wǎng)頁??
1.1.?原則是是可以,瀏覽器下載從http和ftp下載是一樣的效果,然后本地渲染顯示html即可。。
最主要的區(qū)別是ftp協(xié)議比http協(xié)議復(fù)雜,因為ftp要面臨多種文檔以及體積比較大,所以協(xié)議控制比較復(fù)雜。。
而網(wǎng)頁,往往體積較小,格式單一。。所以使用了專門發(fā)明了http協(xié)議來做這個事情。轉(zhuǎn)用協(xié)議當然要比通用的性能高,速度快,但是適用領(lǐng)域小。。
?
1.2.?最主要原因是性能原因(小文件http效率更高)
1.3.?ftp設(shè)計復(fù)雜度高
FTP和HTTP處于OSI同一層?。但是,FTP在開始握手和登陸較為復(fù)雜,一旦開始傳輸效率明顯比HTTP高。FTP的設(shè)計思想在于分開的控制連接和傳輸連接,這和HTTP完全不同。
1.4.?此外3.與防火墻工作不協(xié)調(diào)
在文件傳輸協(xié)議(FTP)誕生在網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)和防火墻之前,那時的網(wǎng)絡(luò)還不存在惡意攻擊。今天大多數(shù)最終用戶的IPv4地址已不可路由,這是因為防火墻的使用和IPv4地址的短缺。
2.?HTTP和FTP的區(qū)別
?
2.1.?二、復(fù)雜點兒
2.1.1.?1.FTP
2.1.1.1.?(1)FTP比HTTP復(fù)雜
FTP和HTTP一樣都是Internet上廣泛使用的協(xié)議,用來在兩臺計算機之間互相傳送文件。相比于HTTP,FTP協(xié)議要復(fù)雜得多。復(fù)雜的原因,是因為FTP協(xié)議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與服務(wù)器之間傳遞命令;另一個是數(shù)據(jù)鏈路,用來上傳或下載數(shù)據(jù)。
2.1.1.2.?(2)FTP協(xié)議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
PORT(主動)方式的連接過程是:客戶端向服務(wù)器的FTP端口(默認是21)發(fā)送連接請求,服務(wù)器接受連接,建立一條命令鏈路。當需要傳送數(shù)據(jù)時,客戶端在命令鏈上用PORT命令告訴服務(wù)器:“我打開了XXXX端口,你過來連接我”。于是服務(wù)器從20端口向客戶端的XXXX端口發(fā)送連接請求,建立一條數(shù)據(jù)鏈路來傳送數(shù)據(jù)。
PASV(被動)方式的連接過程是:客戶端向服務(wù)器的FTP端口(默認是21)發(fā)送連接請求,服務(wù)器接受連接,建立一條命令鏈路。當需要傳送數(shù)據(jù)時,服務(wù)器在命令鏈上用PASV命令告訴客戶端:“我打開了XXXX端口,你過來連接我”。于是客戶端向服務(wù)器的XXXX端口發(fā)送連接請求,建立一條數(shù)據(jù)鏈路來傳送數(shù)據(jù)。
從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數(shù)據(jù)鏈路的建立方法就完全不同。而FTP的復(fù)雜性就在于此。
?
3.?ftp在傳輸小文件時候,效率較低
.FTP協(xié)議效率低下
從FTP服務(wù)器上檢索一個文件,包含繁復(fù)的交換握手步驟:
客戶端建立到FTP服務(wù)器端控制端口的TCP?Socket鏈接,并等待TCP握手完成
客戶端等待服務(wù)器端發(fā)送回執(zhí)
客戶端向服務(wù)器端發(fā)送用戶名并等待響應(yīng)
客戶端向服務(wù)器端發(fā)送密碼并等待響應(yīng)
客戶端向服務(wù)器端發(fā)送SYST命令并等待響應(yīng)
客戶端向服務(wù)器端發(fā)送TYPE?I命令并等待響應(yīng)
如果用戶需要在服務(wù)器端切換目錄,客戶端仍然發(fā)送命令并等待響應(yīng)
主動模式下,客戶端需要發(fā)送PORT命令到服務(wù)器端,然后等待響應(yīng)(被動模式與主動模式相反)
建立數(shù)據(jù)傳輸鏈接(需要經(jīng)過三次握手,建立一條TCP?Socket連接)
通過鏈接傳輸數(shù)據(jù)
客戶端等待服務(wù)器端從控制連接發(fā)送2xx指令,以確保數(shù)據(jù)傳輸成功
客戶端發(fā)送QUIT命令,并等待服務(wù)器響應(yīng)
同樣的情形,我們來看看HTTP協(xié)議:
HTTP客戶端向HTTP服務(wù)器端建立一條TCP?Socket連接
HTTP客戶端向HTTP服務(wù)器端發(fā)送GET命令,包含URL、HTTP協(xié)議版本、虛擬主機名等等,并等待響應(yīng)
HTTP服務(wù)器端的響應(yīng)包含了所有想要的數(shù)據(jù),完成!
傳輸一個文件,FTP需要往復(fù)10次,而HTTP只需要2次!
3.1.?傳輸協(xié)議
編輯
FTP是一個8位的客戶端-服務(wù)器協(xié)議,能操作任何類型的文件而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求數(shù)據(jù)之間的時間,會非常長;并且不時的必須執(zhí)行一些冗長的登陸進程
?
?
4.?支持模式??FTP支持兩種模式:Standard (PORT方式,主動方式),Passive (PASV,被動方式)。
?
編輯
FTP支持兩種模式:Standard (PORT方式,主動方式),Passive (PASV,被動方式)。
Port模式
FTP?客戶端首先和服務(wù)器的TCP 21端口建立連接,用來發(fā)送命令,客戶端需要接收數(shù)據(jù)的時候在這個通道上發(fā)送PORT命令。PORT命令包含了客戶端用什么端口接收數(shù)據(jù)。在傳送數(shù)據(jù)的時候,服務(wù)器端通過自己的TCP 20端口連接至客戶端的指定端口發(fā)送數(shù)據(jù)。FTP server必須和客戶端建立一個新的連接用來傳送數(shù)據(jù)。
Passive模式
建立控制通道和Standard模式類似,但建立連接后發(fā)送Pasv命令。服務(wù)器收到Pasv命令后,打開一個臨時端口(端口號大于1023小于65535)并且通知客戶端在這個端口上傳送數(shù)據(jù)的請求,客戶端連接FTP服務(wù)器此端口,然后FTP服務(wù)器將通過這個端口傳送數(shù)據(jù)。
很多防火墻在設(shè)置的時候都是不允許接受外部發(fā)起的連接的,所以許多位于防火墻后或內(nèi)網(wǎng)的FTP服務(wù)器不支持PASV模式,因為客戶端無法穿過防火墻打開FTP服務(wù)器的高端端口;而許多內(nèi)網(wǎng)的客戶端不能用PORT模式登陸FTP服務(wù)器,因為從服務(wù)器的TCP 20無法和內(nèi)部網(wǎng)絡(luò)的客戶端建立一個新的連接,造成無法工作
?
參考資料
HTTP和FTP的區(qū)別 - 蘋果園 - 博客頻道 - CSDN.NET.html
文件傳輸協(xié)議(FTP)必將消亡 - 開源中國社區(qū).html
?
作者::?綽號:老哇的爪子?(?全名::Attilax?Akbar?Al?Rapanui?阿提拉克斯?阿克巴?阿爾?拉帕努伊?)?
漢字名:艾提拉(艾龍),???EMAIL:1466519819@qq.com
轉(zhuǎn)載請注明來源:?http://www.cnblogs.com/attilax/
Atiend
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/attilax/p/5954698.html
總結(jié)
以上是生活随笔為你收集整理的Atitit ftp原理与解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看博客模板的css代码
- 下一篇: 谭浩强C语言程序设计 学习辅导练习题