2008年7月12日 星期六

FTP工作時的二種連接模式

FTP中的兩種工作方式 :

防火牆有很多種,其中有一些會禁止那些不是從內部網路IP發出的連接請求。而ftp協議是個很老的東東,沒有考慮這個問題。可以這樣簡單描述一般ftp的工作原理:
client對server發出請求:「嗨,我的xxPort正等著你傳送資料呢,sever聽到這個請求,就會建立一個連接,指向這個Port,並且開始傳送資料。這就回到了我們的問題,如果發出請求的client在防火牆的後面,而這個防火牆禁止外部IP建立連接,那麼當然server(在外部)不能建立與client的連接。
所以,過了幾年,人們修改了ftp協議以應付這種情況。這就是passive mode,工作原理如下:client向server發出passive命令,server回答說:「資料在xxPort等你,自己來拿。」 而這回則由client建立指向server的連接,從而取得資料。這就避免了防火牆的限制。

  FTP是一種文件傳輸協議,它支持兩種模式,一種方式叫做Standard (也就是 Active,主動方式),一種是 Passive (也就是PASV,被
動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP server。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。

接著下面,介紹一個ftp,這兩種方式的工作原理:
  Standard模式FTP 客戶端首先和FTP Server的TCP 21Port建立連接,通過這個通道發送命令,客戶端需要接收資料的時候在這
個通道上發送PORT命令。 PORT命令包含了客戶端用什麼Port接收資料。在傳送資料的時候,服務器端通過自己的TCP 20Port發
送資料。 FTP server必須和客戶端建立一個新的連接用來傳送資料。
  Passive模式在建立控制通道的時候和Standard模式類似,當客戶端通過這個通道發送PASV 命令的時候,FTP server開啟一個
位於1024和5000之間的隨機Port並且通知客戶端在這個Port上傳送資料的請求,然後FTP server 將通過這個Port進行資料的傳送,
這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
  現在的FTP軟體裡面包括在IE5以上的版本裡面也已經支持這兩種模式了。一般一些FTP客戶端的軟體就比較好設置了,一
般都有一個PASV的選項,比如CuteFTP,傳輸的方式都有Standard和PASV的選項,可以自己進行選擇;另外在IE裡面如果要設
置成PASV模式的話可以選中工具-Internet選項-進階-為FTP站點啟用資料夾視圖,否則就採用Standard模式。
  很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以FTP的Standard模式在許多時候在內部網路的機器通過防
火牆出去的時候受到了限制,因為從服務器的TCP 20無法和內部網路的客戶端建立一個新的連接,造成無法工作。當然也可以
設置成功,首先要建立一條規則就是允許內部的IP連接外部的IP的21Port;第二條就是禁止外部IP的TCP 20Port連接內部IP的
<1024的Port,這條是為了防止外部連接內部的一般Port;第三條驗證ACK是否等於1,這個的原理就參見TCP建立連接的三次握
手吧。所以如果安全的配置的話非常困難,這個時候就想起來了PASV模式,因為不用建立新的連接,所以也就不會涉及到後
面的問題了。但是管理員可能不想使用PASV模式,因為這個時候FTP Server會開放一個隨機的高Port,儘管在IIS4和IIS5里面Port
的範圍是1024-5000,但是許多FTP Server的Port範圍達到了1024-65535,這個時候在這個主動開放的隨機Port上是有完全的訪
問權限的,如果IIS也要設置成開放的Port為1024-65535,具體方法如下:
1. regedt32
2. 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
3. 編輯-新增-數值

Value Name: MaxUserPort Data Type: REG_DWORD Value: 65534
  所以如果遇到了有防火牆的話或者怕配置麻煩的話還是採用PASV模式比較好些,但是如果真的對安全的需求很高的話建
議採用Standard模式。

沒有留言: