FTP的主動和被動模式



在沒有NAT的環境下,FTP主動和被動模式都可以成功,
在NAT的環境下,FTP只能用被動模式才可以成功,這是為什麼呢?



FTP主動模式會使用到兩個PORT,21 Port是命令使用,20 Port是傳輸資料使用,壞就壞在20 Port伺服器會主動去連用戶端,在NAT的環境下,如果路由器看到一個主動連線的封包就會丟掉了,當然永遠建不成連線。



用戶端開Port給伺服器連 , 所以 193,183就是 256*193 + 183 = 49591 。



然後伺服器會用他的20 Port主動跟用戶端 49591 Port建立連線,這也是為什麼傳輸資料會用到20 Port,但是是伺服器的 20 Port。



因為在NAT的環境下當然建不成連線。



FTP的被動模式不管是命令或是傳送資料都是用戶端主動連線的,所以都可以成功。



伺服器端會告訴用戶端我會開哪個Port , 所以 216,248就是 256*216 + 244 = 55540 。



最後由用戶端主動發一個連到伺服器的55540 Port,這個三方交握建好之後,伺服器就會用這個Port傳遞資料給用戶端。

結論:
在沒有NAT的環境下,主動模式和被動模式都可以使用,但是有NAT的環境下,就需要用被動模式,不然三方交握失敗無法建立連線傳輸資料。

(主動模式)
命令使用                     用戶端                                                                    伺服器
                            1024以上的隨機 Port      ----------------------->               21 Port
傳輸使用            1024以上用戶端開Port     <----------------------                20 Port
                                                                       (NAT模式下失敗)


(被動模式)        
命令使用                     用戶端                                                                    伺服器
                            1024以上的隨機 Port     ----------------------->                21 Port
傳輸使用            1024以上的隨機 Port+1   ---------------------->         1024以上伺服器開Port  
                                                                      (NAT模式下成功)    
     

留言

張貼留言

這個網誌中的熱門文章

FortiGate 網路基本設定

Windows AD 架設

電腦的路由表設定