FTP基礎知識

2021-08-31 15:13:06 字數 4199 閱讀 5147

ftp協議有兩種工作方式:port方式和pasv方式,中文意思為主動式和被動式。

port(主動)方式的連線過程是:客戶端向伺服器的ftp埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。

當需要傳送資料時,客戶端在命令鏈路上用 port命令告訴伺服器:「我開啟了****埠,你過來連線我」。於是伺服器從20埠向客戶端的****埠傳送連線請求,建立一條資料鏈路來傳送資料。

pasv(被動)方式的連線過程是:客戶端向伺服器的ftp埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。

當需要傳送資料時,伺服器在命令鏈路上用 pasv命令告訴客戶端:「我開啟了****埠,你過來連線我」。於是客戶端向伺服器的****埠傳送連線請求,建立一條資料鏈路來傳送資料。

從上面可以看出,兩種方式的命令鏈路連線方法是一樣的,而資料鏈路的建立方法就完全不同。而ftp的複雜性就在於此。

ftp伺服器端的注意事項

一、ftp伺服器是公網ip,用公網動態網域名稱;或是內網ip,用內網專業版truehost

1、伺服器如果安裝了防火牆,請記住要在防火牆上開啟ftp埠(預設是21)。

2、所有ftp伺服器軟體都支援port方式。至於pasv方式,大部分ftp伺服器軟體都支援。支援pasv方式的ftp伺服器軟體,也可以設定為只工作在port方式上。

3、為了pasv方式能正常工作,需要在ftp伺服器軟體上為pasv方式指定可用的埠範圍(設定方法)。此外,還要在伺服器的防火牆上開啟這些埠。當客戶端以pasv方式連線伺服器的時候,伺服器就會在這個埠範圍裡挑選乙個埠出來,給客戶端連線。

二、ftp伺服器是內網ip,用內網動態網域名稱標準版cm*natpro*y

這種情況下,ftp伺服器不需要做特殊設定,只要支援pasv方式就可以了。大部分ftp伺服器軟體都支援pasv方式。

ftp客戶端的注意事項

請注意:選擇用pasv方式還是port方式登入ftp伺服器,選擇權在ftp客戶端,而不是在ftp伺服器。

一、客戶端只有內網ip,沒有公網ip

從上面的ftp基礎知識可知,如果用port方式,因為客戶端沒有公網ip,ftp將無法連線客戶端建立資料鏈路。因此,在這種情況下,客戶端必須要用pasv方式,才能連線ftp伺服器。大部分ftp站長發現自己的伺服器有人能登入上,有人登入不上,典型的錯誤原因就是因為客戶端沒有公網ip,但用了ie作為ftp客戶端來登入(ie預設使用port方式)。

作為ftp站長,有必要掌握ftp的基礎知識,然後指導您的朋友如何正確登入您的ftp。

二、客戶端有公網ip,但安裝了防火牆

如果用pasv方式登入ftp伺服器,因為建立資料鏈路的時候,是由客戶端向伺服器傳送連線請求,沒有問題。反過來,如果用port方式登入ftp伺服器,因為建立資料鏈路的時候,是由伺服器向客戶端傳送連線請求,此時連線請求會被防火牆攔截。如果要用port方式登入ftp伺服器,請在防火牆上開啟 1024以上的高階埠。

三、連線用內網標準版cm*natpro*y搭建的ftp服務,必須要用pasv方式。連線任何公網ftp伺服器、或用內網專業版truehost搭建的ftp伺服器,port方式和pasv方式都可以使用。

當然,使用port方式的時候,還要滿足上面的兩個條件。

四、常見的ftp客戶端軟體port方式與pasv方式的切換方法。

大部分ftp客戶端預設使用pasv方式。ie預設使用port方式。

在大部分ftp客戶端的設定裡,常見到的字眼都是「pasv」或「被動模式」,極少見到「port」或「主動模式」等字眼。因為ftp的登入方式只有兩種:port和pasv,取消pasv方式,就意味著使用port方式。

ie:

工具 -> internet選項 -> 高階 -> 「使用被動ftp」(需要ie6.0以上才支援)。

cuteftp:

edit -> setting -> connection -> firewall -> 「pasv mode」

或 file -> site manager,在左邊選中站點 -> edit -> 「use pasv mode」

flashget:

工具 -> 選項 -> **伺服器 -> 直接連線 -> 編輯 -> 「pasv模式」

flashftp:

選項 -> 引數選擇 -> **/防火牆/標識 -> 「使用被動模式」

或 站點管理 -> 對應站點 -> 選項 -> 「使用被動模式」

或 快速連線 -> 切換 -> 「使用被動模式」

leechftp:

option -> firewall -> do not use

五、請盡量不要用ie作為ftp客戶端

ie只是個很粗糙的ftp客戶端工具。首先,ie6.0以下的版本不支援pasv方式;其次,ie在登入ftp的時候,看不到登入資訊。在登入出錯的時候,無法找到錯誤的原因。在測試自己的ftp**的時候,強烈建議不要使用ie。

ftp建站的詳細配置過程

使用serv-u建立ftp**

高階話題

一、為什麼沒有公網ip,也能使用port方式登入ftp?

但是,極少數的nat閘道器也支援port方式。這些nat閘道器連資料報裡面的內容都掃瞄,掃瞄到 port指令後會替換port方式的ip和埠。在這種nat閘道器下面,用port方式就沒問題了。不過,這些閘道器也只掃瞄21埠的資料報,如果ftp 伺服器不是用預設的21埠,也無法使用port方式。

二、內網可以用port訪問其他ftp,為什麼不能用port訪問自己的truehost ftp?

下面要討論的問題,只是為了說明一些原理,是不影響實際使用的。如果您沒有興趣深究這些原理,不必花時間看。

內網使用者通過支援port方式的nat閘道器,訪問自己本機利用truehost建立的ftp伺服器,ftp命令鏈路的建立過程如下:

ftp客戶端

10.10.0.1

埠*** <==> isp nat閘道器

61.144.1.2

埠**** <==> th伺服器

*.*.*.*

埠21 <==> th客戶端 <==> 使用者ftp伺服器

10.10.0.1

埠21

ftp客戶端通過isp的nat閘道器、科邁truehost伺服器、truehost客戶端,連線使用者本機的ftp伺服器的21埠。

port 10,10,0,1,30,4 (即ip=10.10.0.1 埠=30*256+4=7684)

當命令通過isp的nat閘道器的時候,nat閘道器判斷目的埠是21,並且是port命令,於是,修改命令裡的ip和埠,替換為自己的ip和埠,比如:

port 61,144,1,2,50,6 (即ip=61.144.1.2 埠=50*256+6=12806)

使用者的ftp伺服器最終收到的是上面這個port命令。於是,ftp伺服器向這個ip和埠傳送連線請求,建立資料鏈路。

使用者ftp伺服器

10.10.0.1

埠20 <==> isp nat閘道器

61.144.1.2

埠12806 <==> ftp客戶端

10.10.0.1

埠7684

但是,因為nat閘道器的公網ip只能接收外來的連線請求。就是說,61.144.1.2:12806只能接收其他公網ip的連線請求,對於從nat內部(10.10.0.1:20)發起的連線請求,是無法建立連線的。為什麼?原因很簡單,因為內網ip要訪問外網,必須要通過nat建立對映。於是ftp資料鏈路無法建立。於是,使用者無法在自己的機器上通過21埠訪問自己的truehost ftp。

我們再來看看,如果ftp埠不是21,比如是22,會發生什麼情況呢?在ftp客戶端傳送port命令的時候,nat閘道器檢測到目標埠是22,因為支援port的 nat閘道器只監視目的埠是21的資料報,發現目的埠是22的資料報,不做任何處理,完全放行。於是ftp伺服器收到的port命令依然是port 10,10,0,1,30,4。於是ftp伺服器向這個ip和埠傳送連線請求。

使用者ftp伺服器

10.10.0.1

埠20 <==> ftp客戶端

10.10.0.1

埠7684

這種情況下命令鏈路就可以建立起來了。而且是等於本機連線本機,速度飛快。

綜上所述,內網使用者無法用port方式通過21埠訪問自己的truehost ftp伺服器。如果ftp埠不是21,則可以訪問,而且實際上是本機連線本機。

上面的文字,僅僅是為了說明一些原理,不影響實際使用。如果本機訪問本機,還要通過ftp的話,就有畫蛇添足之嫌了。

FTP基礎知識

原文參考 文章參考2 ftp和http區別 什麼是ftp ftp的執行機制 ftp會話屬於復合tcp連線,主動模式中開放20和21埠。ftp的連線模式和傳輸模式 ftp的主動模式和被動模式 為了解決伺服器發起到客戶的連線的問題,人們開發了一種不同的ftp連線方式。當客戶端通知伺服器它處於被動模式時才...

FTP基礎知識

ftp伺服器端的注意事項 ftp伺服器是公網ip,用公網動態網域名稱 或是內網ip,用內網專業版truehost 伺服器如果安裝了防火牆,請記住要在防火牆上開啟ftp埠 預設是21 所有ftp伺服器軟體都支援port方式。至於pasv方式,大部分ftp伺服器軟體都支援。支援pasv方式的ftp伺服器...

FTP基礎知識

ftp基礎知識 ftp協議有兩種工作方式 port方式和pasv方式,中文意思為主動式和被動式。port 主動 方式的連線過程是 客戶端向伺服器的ftp埠 預設是21 傳送連線請求,伺服器接受連線,建立一條命令鏈路。當需要傳送資料時,客戶端在命令鏈路上用 port命令告訴伺服器 我開啟了埠,你過來連...