ftp的兩種不同工作模式:port(主動模式)、pasv(被動模式)
1、port模式:該模式是ftp協議最初定義的連線模式,其連線過程是:在開始乙個ftp連線時,客戶端程式首先會為自己隨機分配乙個tcp端
口,它使用這個埠向伺服器的ftp埠(預設21)發出連線請求,伺服器接受請求後會建立一條控制鏈路,然後客戶程式向伺服器發出port命
令,告訴伺服器它的資料通道的埠開啟了。當需要傳送資料時,伺服器端口通過20埠向客戶端提供的隨機埠傳送連線請求,請求被接受之
後便開始傳輸資料,資料鏈路通道也就開啟了, 在整個過程中,由於伺服器在建立資料連線時主動發起連線,因此稱為主動模式。
注:port模式的問題
由於客戶端提供的埠號是隨機的,如果客戶端處於防火牆內部,由於防火牆大多會限制自問主機連線內部非開放埠,資料連線很可能被防火牆限制,造成無法建立資料連線,從而導致ftp無法正常工作
2、pasv模式:其連線過程是,在開始乙個ftp連線時,客戶端程式首先為自己隨機分配乙個tcp埠,它使用這個埠向伺服器的ftp埠
(預設21)發出連線請求,伺服器接受請求後會建立一條控制鏈路,然後客戶端程式發出一pasv命令,要求伺服器採用pasv模式建立資料連
接,伺服器便為自己隨機分配乙個資料通道埠,並將這個埠號告訴客戶端程式。傳送資料時,客戶端程式採用另乙個隨機埠向伺服器提供
的資料通道埠傳送連線請求,請求被接受之後便開始傳輸資料,資料鏈路通道也就開啟了。在這個方式中,由於伺服器端在建立資料連線時,
被動接受客戶端的連線請求,因此稱為被動方式
注:被動方式,由於兩個連線都由客戶端發起,對於防火牆來說,一般不限制這樣的訪問,因此解決了防火牆內無法進行ftp的問題
附一例子:
用mfc 提供的cinternetsession、cftpconnection進行ftp連線
如果在cftpconnection *pftpconn=test.getftpconnection(_t("127.0.0.1"),null,null,21,true);中將最後的引數true設為
預設(即false),大多數情況下會連線錯誤,因為false代表採用主動方式
ftp的兩種工作模式
ftp 是一種資料傳輸協議 file transfer protocol 它的連線模式有兩種 主動模式 active 和被動模式 passive 以下說明ftp的連線是怎樣建立的 在 active 模式下 一般預設的模式 ftp client 開啟乙個隨機選擇的tcp port 呼叫 ftp ser...
ftp的兩種工作模式
ftp 是一種資料傳輸協議 file transfer protocol 它的連線模式有兩種 主動模式 active 和被動模式 passive 以下說明ftp的連線是怎樣建立的 在 active 模式下 一般預設的模式 ftp client 開啟乙個隨機選擇的tcp port 呼叫 ftp ser...
FTP兩種工作模式介紹
ftp是僅基於tcp的服務,不支援udp。與眾不同的是ftp使用2個埠,乙個資料埠和乙個命令埠 也可叫做控制埠 通常來說這兩個埠是21 命令埠 和20 資料埠 但ftp 工作方式的不同,資料埠並不總是20。這就是主動與被動ftp的最大不同之處。一 主動ftp 在主動模式下 客戶端從乙個任意的非特權埠...