【求助】問一個FTP port的問題..困擾已久.. - PCZONE 討論區

返回   PCZONE 討論區 > ▲ ADSL_CABLE_FTTH 寬 頻 上 網 討 論 > -- 網站架設 / 免費空間 / 虛擬主機 專區 > ☉ -- 架 站 DIY 討 論 版


PCZONE 討論區



通知

☉ -- 架 站 DIY 討 論 版 有了寬頻後,可利用來架設 WWW / FTP / MAIL 等各種 SERVER,請在此版跟大家一起討論各種 SERVER 架設心得。

會員
【求助】問一個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~~

回覆
風来坊

主動模式?被動模式?
回覆
會員

引用:
今天我在B電腦用IE,用主動模式連過去...netstat -n下的狀況顯示為
為何我試下載檔案~都從沒看過20 port出現過呢?
(我用主動模式喔..)
樓主打的
回覆
風来坊

FTP的交談流程,小弟是沒深入研究過…
不過這類走TCP的協定,應該都是大同小異!
port:20只是負責在那裡daemon而已…
當client與server做完hand shaking後,就會把原本的port:20轉到其他沒有用的port
因為HTTP走port:80的流程是醬子…
所以,小弟認為FTP主動模式下,應該也是八九不離十的做法
回覆
會員

引用:
作者: lenbo
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

引用:
作者: hellfallout
--------------------------------------------------------------------------
謝謝
...你意思是說HTTP最後也會從80 port轉到其他沒有用的port?
我用不同的fpt client、ftp server等去測~~
都沒出現20 port~~所以很好奇怎麼都和書寫的不同~~
樓上那位講錯了!

正常來講,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
回覆
風来坊

引用:
作者: hellfallout
謝謝
...你意思是說HTTP最後也會從80 port轉到其他沒有用的port?
我用不同的fpt client、ftp server等去測~~
都沒出現20 port~~所以很好奇怎麼都和書寫的不同~~
嗯…這麼說好了!
如果HTTP是死硬只用port:80,那你這個HTTP server在同一時間內
就只能服務一個使用者而已了…

你可以試試看,上傳檔案到FTP server上去
應該就可以測到port:20了

ps:小弟應該沒把以前老師教的都還給老師了吧?!
回覆
Passion

引用:
作者: lenbo
嗯…這麼說好了!
如果HTTP是死硬只用port:80,那你這個HTTP server在同一時間內
就只能服務一個使用者而已了…

你可以試試看,上傳檔案到FTP server上去
應該就可以測到port:20了

ps:小弟應該沒把以前老師教的都還給老師了吧?!
這位兄弟,你的觀念錯了喔!

請回去翻看看 Richard Stevens 的 UNIX Network Programming 這本書,
區別每個連線的是五個數值(5-tuple),包含
  • the protocol (TCP or UDP)
  • local host's ip
  • local host's port number
  • remote host's ip
  • remote host's port number
只要上面任一個數值不一樣,就是不同的 connection (連線)
因此雖然 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 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。