走在架構(gòu)師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術(shù),軟件架構(gòu),領(lǐng)域建模,IT 項目管理 Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks
            最近為項目臨時配了 FTP 服務(wù).客戶端用 cuteftp,cuteftp 還是蠻好的軟件,很多朋友也在用.開始怎么也建立不了數(shù)據(jù)連接.控制連接已經(jīng) ok, 網(wǎng)上也沒答案.
            看了有關(guān)資料終于搞清楚了.拿出來和大家分享.
            Port模式與Pasv模式
                  FTP的連接一般是有兩個連接的,一個是客戶程和服務(wù)器傳輸命令的,另一個是數(shù)據(jù)傳送的連接。FTP服務(wù)程序一般會支持兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode),我先說說這兩種不同模式連接方式的分別.
                  先假設(shè)客戶端為C,服務(wù)端為S.
            Port模式: 
            
          當(dāng)客戶端C向服務(wù)端S連接后,使用的是Port模式,那么客戶端C會發(fā)送一條命令告訴服務(wù)端S(客戶端C在本地打開了一個端口N在等著你進(jìn)行數(shù)據(jù)連接),當(dāng)服務(wù)端S收到這個Port命令后 就會向客戶端打開的那個端口N進(jìn)行連接,這種數(shù)據(jù)連接就生成了。
            Pasv模式:
            
          當(dāng)客戶端C向服務(wù)端S連接后,服務(wù)端S會發(fā)信息給客戶端C,這個信息是(服務(wù)端S在本地打開了一個端口M,你現(xiàn)在去連接我吧),當(dāng)客戶端C收到這個信息后,就可以向服務(wù)端S的M端口進(jìn)行連接,連接成功后,數(shù)據(jù)連接也建立了。--
          從上面的解釋中,大家可以看到兩種模式主要的不同是數(shù)據(jù)連接建立的不同,對于Port模式,是客戶端C在本地打開一個端口等服務(wù)端S去連接建立數(shù)據(jù)連接;而Pasv模式就是服務(wù)端S打開一個端口等待客戶端C去建立一個數(shù)據(jù)連接。
            比如,你所有LAN中的計算機都是共享這個218.63.1.5訪問INTERNET的(中間通過了192.168.1.1這個網(wǎng)關(guān)),讓我們來看一個連接的詳細(xì)過程,以便您更進(jìn)一步了解為什么需要設(shè)置成為PASV mode 傳送:
            
          當(dāng)您通過下載工具或使用瀏覽器下載影片的時候就開始連接FTP服務(wù)器, 當(dāng)FTP服務(wù)收到你的連接請求后發(fā)送應(yīng)答信息給客戶并
          開始等待用戶的認(rèn)證信息,-->認(rèn)證通過后開始建立數(shù)據(jù)連接 如果你不是設(shè)置成為pasv模式,那么客戶段(下載工具)會在本地計算機開一個數(shù)據(jù)端口,然后發(fā)送一條“命令”給FTP服務(wù)段,(我已打開了n端口你現(xiàn)在可以連接我),那么FTP服務(wù)器段就開始連接你ip地址的N端口,(但是連接是失敗的) 因為你是通過192.168.1.1 這個網(wǎng)關(guān)(你的路由設(shè)備)訪問internet的ftp服務(wù)段他實際上是同你的外網(wǎng)地址為218.63.1.5的路由設(shè)備連接,根本就連接不上你下載工具中打開的端口,例如你使用的是 192.168.1.2 這個客戶機,F(xiàn)TP服務(wù)段此時無法同你計算機(192.168.1.2)監(jiān)聽端口N連接上,所以此時你會看到服務(wù)器反饋的錯誤信息,提示你192.168.1.2打開的端口無法連接之類的, 信息此時你就需要把傳送模式設(shè)置成為PASV模式,而如果你使用的是PASV模式那么當(dāng)你ftp通過認(rèn)證后,客戶段首先向服務(wù)器發(fā)送一條PASV命令,服務(wù)段接受到命令后打開一個端口并告訴客戶段“我已打開了一個端口,你此時可以來連接了" 客戶段(下載工具)接受到信息后,就去連接服務(wù)段已經(jīng)打開了的端口,從而完成數(shù)據(jù)連接,所有ftp下載的數(shù)據(jù)流都將通過這個端口傳送.
            對于cuteftp 要在工具->全局選項->容錯->選擇使用PASV mode
                 簡單介紹,希望對大家有幫助.



          本博客為學(xué)習(xí)交流用,凡未注明引用的均為本人作品,轉(zhuǎn)載請注明出處,如有版權(quán)問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學(xué)習(xí)進(jìn)步。
          posted on 2007-12-09 16:52 Jack.Wang 閱讀(1575) 評論(0)  編輯  收藏 所屬分類: 開發(fā)技術(shù)
          主站蜘蛛池模板: 游戏| 高密市| 陆河县| 丹凤县| 乃东县| 东源县| 秦安县| 花莲县| 遵义县| 中阳县| 准格尔旗| 岑溪市| 张家界市| 兰州市| 云龙县| 凉山| 康乐县| 民勤县| 柳州市| 金溪县| 庆元县| 辉县市| 将乐县| 若羌县| 祁东县| 新沂市| 台湾省| 项城市| 苏尼特左旗| 长乐市| 三穗县| 奈曼旗| 三江| 建宁县| 湾仔区| 颍上县| 金华市| 江安县| 德钦县| 韩城市| 噶尔县|