【求助】問一個FTP port的問題..困擾已久..



贊助商連結


頁 : 1 [2]

nopy
2005-11-03, 07:51 AM
看起來似乎是 CesarFTP Server 的問題...

CesarFTP Server 似乎沒有乖乖地用 TCP Port 20 連接到主動模式的 Client 端

你要不要改用其他 FTP Server 看看...

贊助商連結


lenbo
2005-11-03, 05:25 PM
看起來似乎是 CesarFTP Server 的問題...

CesarFTP Server 似乎沒有乖乖地用 TCP Port 20 連接到主動模式的 Client 端

你要不要改用其他 FTP Server 看看...

嗚嗚…我錯了!
之前老師教的時候是以 client 來教 port#
結果現在小弟把 client 與 server 給搞混了…
主動模式的 FTP 的確是用 命令埠 21 通訊埠 20
而裡頭對每個使用者則是靠 FTP server 程式實作 multi-thread 或 fork() process
不過使用 multi-thread 效率會比較好!

想請教一下大哥!
為什麼主動式 FTP 通訊埠預設只有一個port:20
而被動式 FTP 通訊埠卻是可以設一個範圍內的port#呢?
小弟有設過連上自己架的被動式FTP
傳送資料過程中,port#會一直跳說…
是為了什麼考量?那可以自己設把通訊埠固定在一個port#嗎?
謝謝嘍!!

hellfallout
2005-11-04, 10:30 AM
挖哩勒...原來是ftp server cesar搞鬼..
不聽話,叫他主動,她偏用被動~改ftp server
server-u~就出現20 port了...>_<
謝謝 nopy和 lenbo、 hpo14囉
制於 lenbo 你問的問題~不就是因應nat環境下的一般模式及被動模式的問題囉~
nopy在上面有說明了喔...

nopy
2005-11-04, 10:11 PM
想請教一下大哥!
為什麼主動式 FTP 通訊埠預設只有一個port:20
而被動式 FTP 通訊埠卻是可以設一個範圍內的port#呢?
小弟有設過連上自己架的被動式FTP
傳送資料過程中,port#會一直跳說…
是為了什麼考量?那可以自己設把通訊埠固定在一個port#嗎?
謝謝嘍!!
其實你仔細想想應該會知道為什麼的

Passive Mode 被動模式下,當 Client 要求傳送一個檔案,
Server 會告訴 Client 他把檔案放在那個 Port 上面,
等待 Client 自己建立連線過來把檔案傳輸回去

也就是 Server 會準備好檔案資料放在某個 Port 上面,
然後去聽 (Listen) 這個 Port 的連線狀況,
第一個連線進來的用戶,就把資料傳送給對方

如果每個 Passive Mode 都用同一個 Port,
當兩個用戶同時要求傳送檔案時,如果 Client 連線進來時,
Server 就不知道要傳送哪份檔案的資料了

而且,如果某個 Port 已經被某一個 Process 註冊要負責處理該 Port 的新進連線 (Listen),
則該 Port 就無法再被其他 Process 重複 Listen
否則作業系統會不曉得把該 Port 新進的連線丟給誰處理

不同的 Process 是可以共用同一個 Port 傳輸資料,
但是不能同時註冊負責同一個 Port 的新連線需求

FTP 的通訊協定有點複雜,有興趣的人可以仔細研究一下 RFC,

FTP 通訊協定由於把命令與資料分開,
因此你甚至可以在 A 機器上面,命令 X 機器把檔案傳輸給 Y 機器

cappella
2006-11-15, 04:18 PM
如果某個 Port 已經被某一個 Process 註冊要負責處理該 Port 的新進連線 (Listen),
則該 Port 就無法再被其他 Process 重複 Listen
否則作業系統會不曉得把該 Port 新進的連線丟給誰處理

不同的 Process 是可以共用同一個 Port 傳輸資料,
但是不能同時註冊負責同一個 Port 的新連線需求


nopy兄 打擾了!!
想請教 網路的觀念

web server 是使用 port:80 來服務client端

client端 使用 隨機的port 跟 server的80 port 溝通
所以 server 從頭到尾 就只使用 port 80 回應給 client 端

也就是說 : 使用 同一個port 是可以服務 n 個 client 嗎?
好奇的是 80 port 在 listen中 接受 client的詢問, 還可以同時用同一個port 回應client嗎 ?

請 nopy 指教一下

nopy
2006-11-16, 01:01 AM
nopy兄 打擾了!!
想請教 網路的觀念

web server 是使用 port:80 來服務client端

client端 使用 隨機的port 跟 server的80 port 溝通
所以 server 從頭到尾 就只使用 port 80 回應給 client 端

也就是說 : 使用 同一個port 是可以服務 n 個 client 嗎?
好奇的是 80 port 在 listen中 接受 client的詢問, 還可以同時用同一個port 回應client嗎 ?

你的問題答案都是 "YES",我在前面回覆中有提到:

區別每個連線的是五個數值(5-tuple),包含


通訊協定 (TCP or UDP)
本地端 IP
本地端 Port Number
遠端 IP
遠端 Port Number


只要上面任一個數值不一樣,就是不同的 connection (連線),
系統就有辦法辨別出來讓不同的程式去處理、同時分別收送資料

不過同一個 IP/Port 只能有一個程式去 Listen 而已,因為這時連線還沒建立

如果會寫程式,請參考 Richard Stevens 的 UNIX Network Programming