會員 ![]() | 【求助】問一個FTP port的問題..困擾已久.. FTP運作是以TCP21為command channel 及TCP20為data channel。 ----------------------------------------------------- 在同網域內(都是172.17.17.0/24內的電腦) 我架server於A電腦 client為B電腦 今天我在B電腦用IE,用主動模式連過去...netstat -n下的狀況顯示為 Local Address Foreign Address A:21 .............. B:3975 A:21 .............. B:3976 -----------------------------------------------------ok~到這都沒問題 當我開始用B電腦抓檔案下來時... netstat -n下的狀況顯示為 Local Address Foreign Address A:21 .............. B:3975 A:21 .............. B:3976 A:3416............. B:4000 <-------? ---------------------------------------------------- 不是TCP20為data channel嗎?為何會是3416port呢? 為何我試下載檔案~都從沒看過20 port出現過呢? (我用主動模式喔..) thx~~ |
回覆 |
風来坊 | 主動模式?被動模式? |
回覆 |
會員 ![]() | 引用:
| |
回覆 |
風来坊 | FTP的交談流程,小弟是沒深入研究過… 不過這類走TCP的協定,應該都是大同小異! port:20只是負責在那裡daemon而已… 當client與server做完hand shaking後,就會把原本的port:20轉到其他沒有用的port 因為HTTP走port:80的流程是醬子… 所以,小弟認為FTP主動模式下,應該也是八九不離十的做法 |
回覆 |
會員 ![]() | 引用:
謝謝 ...你意思是說HTTP最後也會從80 port轉到其他沒有用的port? 我用不同的fpt client、ftp server等去測~~ 都沒出現20 port~~所以很好奇怎麼都和書寫的不同~~ | |
回覆 |
Passion ![]() | 引用:
正常來講,HTTP 在伺服器端不會用其他的 TCP PORT,只會用 Port 80, 在用戶端才有可能用其他的 PORT TCP 的連線中在 Client 及 Server 端各會有一個 Port Number, 在 Client 端一般是隨機指定的,而 Server 端則看服務而定,一般不會變動 FTP 的通訊協定比較複雜一點,詳細資料可以參考 http://rfc.giga.net.tw/rfc959 我這邊簡單解釋一下: FTP 通訊協定在伺服器端可能會使用到 TCP Port 20 及 TCP Port 21 (這可以改的) TCP Port 21 主要用來傳送命令,TCP Port 20 則用來傳送檔案/資料 如果你的 FTP Server 不是跑在 Port 21, 那麼 Data Port 一般會跑在 command port 減 1 的位置 FTP 有兩種運作模式,一個是 active (主動) 一個是 passive (被動) 這裡的主動與被動的定義是相對於伺服器的角色而言的 而 Port 20 只會用在主動模式下 在主動模式狀況下 Client 首先連接到 FTP Server 的 TCP Port 21, 告訴 FTP Server 他要抓一個檔案,然後這時候 Client 要送出一個訊息, 告訴伺服器他會在那個 TCP Port (隨機指定)等著接收這個檔案, 然後伺服器會經由自己的 Port 20 主動建立一條連線到 Client 端的這個 Port 上面, 藉由此連線把檔案傳送給 Client 端 在被動模式狀況下 Client 首先連接到 FTP Server 的 TCP Port 21,並指明要採用 Passive 模式, 接著告訴 FTP Server 他要抓一個檔案, 這時候伺服器會送出一個訊息,告訴 Client 說已經把檔案準備好放在某個 TCP Port (隨機指定) 上面, 由 Client 端自行建立一條連線到 Server 的這個 TCP Port 來把檔案傳送回去 綜合以上所述,如果你的服務是跑在 TCP port 21,且使用主動模式, 那麼照道理來講,伺服器端連接出去送資料應該要使用 Port 20 才對 你要不要說明一下伺服器端的環境, 然後看看能不能把 Client 端的連線過程記錄貼上來看看 (例如 CuteFTP 連線時會有個小視窗看到一堆命令) 有一個可能是因為伺服器的設定問題導致的 這邊有一份文件詳細說明 FTP data-port 的運作模式,很值得你參考 (英文的) http://slacksite.com/other/ftp.html | |
回覆 |
風来坊 | 引用:
如果HTTP是死硬只用port:80,那你這個HTTP server在同一時間內 就只能服務一個使用者而已了… 你可以試試看,上傳檔案到FTP server上去 應該就可以測到port:20了 ![]() ps:小弟應該沒把以前老師教的都還給老師了吧?! | |
回覆 |
Passion ![]() | 引用:
請回去翻看看 Richard Stevens 的 UNIX Network Programming 這本書, 區別每個連線的是五個數值(5-tuple),包含
因此雖然 server 端的 port 相同 (HTTP: 80), 但是由於 client 端的 port number 不同,所以會是可以同時存在的連線 至於伺服器端能不能同時服務多個用戶,這個與 Port number 無關, 充其量只是伺服器端的 Process fork 或 Multi-Thread 的程式處理技巧 不相信的話,去找一台 HTTP Server 看看不就得了... 伺服器端對於每個 connection 都是使用 Port 80 的喔 如果你寫過網路程式,伺服器 accept() 後會得到一個新的 socket id 沒有錯, 不過這是新的 socket id,不是 port number 哈哈.. 我好像在上 Network Programming 的課程... | |
回覆 |
風来坊 | 嗯…說實話,我自己也快忘光了… 印象中,老師是說像是server開個port:33來daemon 所以client就會去連server的port:33,並要求建立connection 而server就會去叫socket開個port跑腿給client 印象中是醬子啦…年代已久,也不敢說是正確地… 改天有空再來翻翻書… |
回覆 |
會員 ![]() | 以下是我用CuteFTP Pro 6.0主動模式去存取ftp server顯現的訊息 client:172.17.17.25 server:172.17.17.23 ----------------------------------------------------------------------- *** CuteFTP Pro 6.0 - build Mar 25 2004 *** STATUS:> Getting listing ""... STATUS:> Connecting to FTP server 172.17.17.23:21 (ip = 172.17.17.23)... STATUS:> Socket connected. Waiting for welcome message... 220 CesarFTP 0.99e Server Welcome ! STATUS:> Connected. Authenticating... COMMAND:> USER aaa 331 User login OK, waiting for password COMMAND:> PASS ***** 230 User password OK, CesarFTP server ready STATUS:> Login successful. COMMAND:> PWD 257 "/" STATUS:> Home directory: / COMMAND:> FEAT 500 Syntax error or unknown command STATUS:> This site doesn't support the 'features' command. COMMAND:> REST 100 350 Restarting at 100, send RETR or STOR command to start transfer STATUS:> This site can resume broken downloads. COMMAND:> REST 0 350 Restarting at 0, send RETR or STOR command to start transfer COMMAND:> PORT 172,17,17,25,4,109 200 command successfully executed COMMAND:> LIST 150 Data connection created for directory listing 226 Transfer successfully achieved STATUS:> Directory listing completed. COMMAND:> TYPE I 200 Type successfully set COMMAND:> PWD 257 "/" NOTE:> New transfer created for \"ghost\" <12> STATUS:> Transferring directory "/ghost"... STATUS:> Applying Folder Overwrite rule: prompting. COMMAND:> TYPE A 200 Type successfully set COMMAND:> CWD /ghost 250 Directory change OK STATUS:> PWD skipped. Current folder: "/ghost". COMMAND:> PORT 172,17,17,25,4,120 200 command successfully executed COMMAND:> LIST 150 Data connection created for directory listing 226 Transfer successfully achieved STATUS:> Transferring file "/ghost/gh051006.gho"... STATUS:> Removing local file "C:\Documents and Settings\ghost\gh051006.gho". COMMAND:> TYPE I 200 Type successfully set COMMAND:> PORT 172,17,17,25,4,122 200 command successfully executed COMMAND:> RETR gh051006.gho 150 Data connection created for /ghost/gh051006.gho retrieving -------------------------------------------------------------------- 以下是client端 netstat -n的狀況 -------------------------------------------------------------------- TCP 172.17.17.25:1132 172.17.17.23:21 ESTABLISHED TCP 172.17.17.25:1145 172.17.17.23:21 ESTABLISHED TCP 172.17.17.25:1146 172.17.17.23:1095 ESTABLISHED TCP 172.17.17.25:1147 172.17.17.23:1096 ESTABLISHED -------------------------------------------------------------------------- 麻煩看一下囉~~ |
回覆 |
|
![]() | ||||
主題 | 主題作者 | 討論版 | 回覆 | 最後發表 |
詢問關於UDP port的問題 | 無名 | -- 網 路 技 術 版 | 6 | 2008-01-13 01:23 AM |
FTP PORT的問題 | licheng | -- 網 路 技 術 版 | 1 | 2004-05-10 01:27 AM |
Port的問題 | -Hero- | -- 網 路 技 術 版 | 15 | 2002-04-01 07:14 PM |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。