FTP(File Transfer Protocol)的縮寫(xiě),即文件傳輸協(xié)議,
細(xì)說(shuō)FTP技術(shù)
。其是TCP/IP協(xié)議族中的一種具體應(yīng)用,它工作在OSI模型的第七層,即應(yīng)用層上,其使用TCP協(xié)議傳輸,即FTP傳輸?shù)乃形募际峭ㄟ^(guò)三次握手實(shí)現(xiàn),也就是說(shuō)當(dāng)客戶(hù)端與服務(wù)器端之間的數(shù)據(jù)包傳輸,一旦出現(xiàn)丟包現(xiàn)象,會(huì)重新傳輸,以保證數(shù)據(jù)的可靠。FTP協(xié)議要使用兩個(gè)TCP連接傳送數(shù)據(jù),一個(gè)是命令連接,用來(lái)在FTP客戶(hù)端與服務(wù)器之間傳遞命令;另一個(gè)是數(shù)據(jù)連接,用來(lái)上傳或下載數(shù)據(jù)。這就直接導(dǎo)致FTP需要2個(gè)端口,一個(gè)端口用于控制連接,即21端口,發(fā)送指令給服務(wù)器以及等待服務(wù)器響應(yīng);另一個(gè)端口是數(shù)據(jù)傳輸端口,端口號(hào)為20,是用來(lái)建立數(shù)據(jù)傳輸通道。FTP的連接模式有兩種,PORT(主動(dòng)模式)和PASV(被動(dòng)模式),主動(dòng)模式的連接過(guò)程是:客戶(hù)端動(dòng)態(tài)的選擇一個(gè)端口(這個(gè)端口號(hào)一定是1024以上的,因?yàn)?024以前的端口都已經(jīng)預(yù)先被定義好)向服務(wù)器端的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一個(gè)命令連接,電腦資料
《細(xì)說(shuō)FTP技術(shù)》(http://www.lotusphilosophies.com)。當(dāng)需要傳送數(shù)據(jù)時(shí)或者列出服務(wù)器的文件列表時(shí)(通常使用ls或dir命令),客戶(hù)端通過(guò)命令連接告訴服務(wù)器(使用PORT命令):我已經(jīng)打開(kāi)了XX端口,請(qǐng)你過(guò)來(lái)連接。于是服務(wù)器使用20端口向客戶(hù)端的XX端口發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù)連接來(lái)傳送數(shù)據(jù)。被動(dòng)模式:客戶(hù)端首先使用與主動(dòng)連接模式相同的方法與服務(wù)器建立命令連接。當(dāng)需要傳送數(shù)據(jù)時(shí),客戶(hù)端通過(guò)命令連接告訴服務(wù)器(使用PASV命令)我要連接你的XX端口,請(qǐng)問(wèn)是否空閑,如果恰好該端口空閑,服務(wù)器會(huì)告訴客戶(hù)端:你請(qǐng)求的端口空閑,可以建立連接(ACK確認(rèn)信息),否則服務(wù)器會(huì)說(shuō)該端口已經(jīng)占用,請(qǐng)換個(gè)端口(UNACK信息)。如果客戶(hù)端得到的是空閑的提示,就會(huì)利用該端口建立連接,否則就換個(gè)端口重新嘗試,這也就是所謂的連接建立的協(xié)商過(guò)程。區(qū)分主動(dòng)模式和被動(dòng)模式的主要目的是:并不是所有的FTP服務(wù)都支持這兩種連接模式,例如:微軟自帶的FTP命令客戶(hù)端就不支持被動(dòng)模式,如果設(shè)置錯(cuò)了客戶(hù)將無(wú)法連接。