FTP的連接一般是有兩個(gè)連接的,一個(gè)是客戶程和服務(wù)器傳輸命令的,另一個(gè)是數(shù)據(jù)傳送的連接。FTP服務(wù)程序一般會(huì)支持兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode),我先說說這兩種不同模式連接方式的分別。
先假設(shè)客戶端為C,服務(wù)端為S。
Port模式:
當(dāng)客戶端C向服務(wù)端S連接后,使用的是Port模式,那么客戶端C會(huì)發(fā)送一條命令告訴服務(wù)端S(客戶端C在本地打開了一個(gè)端口N在等著你進(jìn)行數(shù)據(jù)連接),當(dāng)服務(wù)端S收到這個(gè)Port命令后就會(huì)向客戶端打開的那個(gè)端口N進(jìn)行連接,這種數(shù)據(jù)連接就生成了。
Pasv模式:
當(dāng)客戶端C向服務(wù)端S連接后,服務(wù)端S會(huì)發(fā)信息給客戶端C,這個(gè)信息是(服務(wù)端S在本地打開了一個(gè)端口M,你現(xiàn)在去連接我吧),當(dāng)客戶端C收到這個(gè)信息后,就可以向服務(wù)端S的M端口進(jìn)行連接,連接成功后,數(shù)據(jù)連接也建立了。
從上面的解釋中,大家可以看到兩種模式主要的不同是數(shù)據(jù)連接建立的不同,對于Port模式,是客戶端C在本地打開一個(gè)端口等服務(wù)端S去連接建立數(shù)據(jù)連接;而Pasv模式就是服務(wù)端S打開一個(gè)端口等待客戶端C去建立一個(gè)數(shù)據(jù)連接。
我需要把傳送模式設(shè)置成PASV mode嗎?
如果您連接到INTERNET的方式如下圖,你需要設(shè)置成為PASV mode模式傳送
從上圖中我們可以看出,路由上有兩個(gè)ip一個(gè)是內(nèi)網(wǎng)ip(也就是你的網(wǎng)關(guān)地址)另外一個(gè)是外網(wǎng)IP,你所有LAN中的計(jì)算機(jī)都是共享這個(gè)218.63.1.5訪問INTERNET的(中間通過了192.168.1.1這個(gè)網(wǎng)關(guān)),讓我們來看一個(gè)連接的詳細(xì)過程,以便您更進(jìn)一步了解為什么需要設(shè)置成為PASV mode 傳送:
當(dāng)您通過下載工具或使用瀏覽器下載影片的時(shí)候就開始連接FTP服務(wù)器, 當(dāng)FTP服務(wù)收到你的連接請求后發(fā)送應(yīng)答信息給客戶并開始等待用戶的認(rèn)證信息——>認(rèn)證通過后開始建立數(shù)據(jù)連接如果你不是設(shè)置成為pasv模式,那么客戶段(下載工具)會(huì)在本地計(jì)算機(jī)開一個(gè)數(shù)據(jù)端口,然后發(fā)送一條“命令”給FTP服務(wù)段,“我已打開了n端口你現(xiàn)在可以連接我”,那么FTP服務(wù)器段就開始連接你ip地址的N端口,(但是連接是失敗的)因?yàn)槟闶峭ㄟ^192.168.1.1 這個(gè)網(wǎng)關(guān)(你的路由設(shè)備)訪問internet的ftp服務(wù)段他實(shí)際上是同你的外網(wǎng)地址為218.63.1.5的路由設(shè)備連接,根本就連接不上你下載工具中打開的端口,例如你使用的是 192.168.1.2 這個(gè)客戶機(jī),F(xiàn)TP服務(wù)段此時(shí)無法同你計(jì)算機(jī)(192.168.1.2)監(jiān)聽端口N連接上,所以此時(shí)你會(huì)看到服務(wù)器反饋的錯(cuò)誤信息,提示你192.168.1.2打開的端口無法連接之類的,信息此時(shí)你就需要把傳送模式設(shè)置成為PASV模式,而如果你使用的是PASV模式那么當(dāng)你ftp通過認(rèn)證后,客戶段首先向服務(wù)器發(fā)送一條PASV命令,服務(wù)段接受到命令后打開一個(gè)端口并告訴客戶段“我已打開了一個(gè)端口,你此時(shí)可以來連接了”客戶段(下載工具)接受到信息后,就去連接服務(wù)段已經(jīng)打開了的端口,從而完成數(shù)據(jù)連接,所有ftp下載的數(shù)據(jù)流都將通過這個(gè)端口傳送。
|