當前位置:首頁 » 文件管理 » ftp進行數據傳輸時會建立兩條連接

ftp進行數據傳輸時會建立兩條連接

發布時間: 2023-06-29 03:31:17

1. 簡述ftp的工作原理

FTP的工作原理:FTP 採用 Internet 標鄭肢准文件傳輸協議 FTP 的用戶界面, 向用戶提供了一組用來管理計算機之間文件傳輸的應用程序。

開發任何基於 FTP 的客戶端軟體都必須遵循 FTP 的工作原理,FTP 的獨特的優勢同時也是與其它客戶伺服器程序最大的不同點就在於它在兩台通信的主機之間使用了兩條 TCP 連接,一條是數據連接,用於數據傳送;

另一條是控制連接,用於傳送控制信息(命令和響應),這種將命令和數據分開傳送的思想大大提高了 FTP 的效率,而其它客戶伺服器應用程序只有一條 TCP 連接。

(1)ftp進行數據傳輸時會建立兩條連接擴展閱讀:

FTP 的目標是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和可靠高效地傳送數據。它能操作任何類型的文件而不需要進一步處理,就像MIME或Unicode一樣。

但是,FTP有著極高的延備旁時,這意味著,從開始請求到第一次接收需求數據之間的時間,會非常長;並且不時的必須執行一些冗長的仿叢橡登錄進程。

FTP 在網際網路網路上歷史是最悠久的網路工具,從 1971 年由 A KBHUSHAN 提出第一個 FTP 的RFC(RFC114),FTP 憑借其獨特的優勢一直都是網際網路中最重要、最廣泛的服務之一。

2. FTP的兩種連接分別是

FTP的連接一般是有兩個連接的,一個是客戶程和伺服器傳輸命令的,另一個是數據傳送的連接。

3. FTP建立後,和伺服器建立哪兩種連接

起初,FTP並不是應用於IP網路上的協議,而是ARPANEt網路中計算機間的文件傳輸協議, ARPANET是美國國防部組建的老網路,於1960-1980年使用。在那時, FTP的主要功能是在主機間高速可靠地傳輸文件。目前FTP仍然保持其可靠性,即使在今天,它還允許文件遠程存取。這使得用戶可以在某個系統上工作,而將文件存貯在別的系統。例如,如果某用戶運行Web伺服器,需要從遠程主機上取得HTML文件和CGI程序在本機上工作,他需要從遠程存儲站點獲取文件(遠程站點也需安裝Web伺服器)。當用戶完成工作後,可使用FTP將文件傳回到Web伺服器。採用這種方法,用戶無需使用Telnet登錄到遠程主機進行工作,這樣就使Web伺服器的更新工作變得如此的輕松。

FTP是TCP/IP的一種具體應用,它工作在OSI模型的第七層,TCP模型的第四層上,即應用層,使用TCP傳輸而不是UDP,這樣FTP客戶在和伺服器建立連接前就要經過一個被廣為熟知的"三次握手"的過程,它帶來的意義在於客戶與伺服器之間的連接是可靠的,而且是面向連接,為數據的傳輸提供了可靠的保證。

下面,讓我們來看看,一個FTP客戶在和伺服器連接是怎麼樣的一個過程(以標準的FTP埠號為例)。

首先,FTP並不像HTTP協議那樣,只需要一個埠作為連接(HTTP的默認埠是80,FTP的默認埠是21),FTP需要2個埠,一個埠是作為控制連接埠,也就是21這個埠,用於發送指令給伺服器以及等待伺服器響應;另一個埠是數據傳輸埠,埠號為20(僅PORT模式),是用來建立數據傳輸通道的,主要有3個作用

從客戶向伺服器發送一個文件。

從伺服器向客戶發送一個文件。

從伺服器向客戶發送文件或目錄列表。

其次,FTP的連接模式有兩種,PORT和PASV。PORT模式是一個主動模式,PASV是被動模式,這里都是相對於伺服器而言的。為了讓大家清楚的認識這兩種模式,朗月繁星分別舉例說明。
PORT模式

當FTP客戶以PORT模式連接伺服器時,他動態的選擇一個埠號(本次試驗是6015)連接伺服器的21埠,注意這個埠號一定是1024以上的,因為1024以前的埠都已經預先被定義好,被一些典型的服務使用,當然有的還沒使用,保留給以後會用到這些埠的資源服務。當經過TCP的三次握手後,連接(控制信道)被建立(如圖1和圖2)。

圖1:FTP客戶使用FTP命令建立於伺服器的連接

圖2:用netstat命令查看,控制信道被建立在客戶機的6015和伺服器的20埠

現在用戶要列出伺服器上的目錄結構(使用ls或dir命令),那麼首先就要建立一個數據通道,因為只有數據通道才能傳輸目錄和文件列表,此時用戶會發出PORT指令告訴伺服器連接自己的什麼埠來建立一條數據通道(這個命令由控制信道發送給伺服器),當伺服器接到這一指令時,伺服器會使用20埠連接用戶在PORT指令中指定的埠號,用以發送目錄的列表(如圖3)。

圖3:ls命令是一個交互命令,它會首先與伺服器建立一個數據傳輸通道。經驗證本次試驗客戶機使用6044埠

當完成這一操作時,FTP客戶也許要下載一個文件,那麼就會發出get指令,請注意,這時客戶會再次發送PORT指令,告訴伺服器連接他的哪個"新"埠,你可以先用netstat -na這個命令驗證,上一次使用的6044已經處於TIME_WAIT狀態(如圖4)。

圖4:使用netstat命令驗證上一次使用ls命令建立的數據傳輸通道已經關閉

當這個新的數據傳輸通道建立後(在微軟的系統中,客戶端通常會使用連續的埠,也就是說這一次客戶端會用6045這個埠),就開始了文件傳輸的工作。

PASV模式

然而,當FTP客戶以PASV模式連接伺服器時,情況就有些不同了。在初始化連接這個過程即連接伺服器這個過程和PORT模式是一樣的,不同的是,當FTP客戶發送ls、dir、get等這些要求數據返回的命令時,他不向伺服器發送PORT指令而是發送PASV指令,在這個指令中,用戶告訴伺服器自己要連接伺服器的某一個埠,如果這個伺服器上的這個埠是空閑的可用的,那麼伺服器會返回ACK的確認信息,之後數據傳輸通道被建立並返回用戶所要的信息(根據用戶發送的指令,如ls、dir、get等);如果伺服器的這個埠被另一個資源所使用,那麼伺服器返回UNACK的信息,那麼這時,FTP客戶會再次發送PASV命令,這也就是所謂的連接建立的協商過程。為了驗證這個過程我們不得不藉助CUTEFTP Pro這個大家經常使用的FTP客戶端軟體,因為微軟自帶的FTP命令客戶端,不支持PASV模式。雖然你可以使用QUOTE PASV這個命令強制使用PASV模式,但是當你用ls命令列出伺服器目錄列表,你會發現它還是使用PORT方式來連接伺服器的。現在我們使用CUTEFTP Pro以PASV模式連接伺服器(如圖5)。

圖5:使用CUTEFTP Pro以PASV模式連接伺服器

請注意連接LOG里有這樣幾句話:

COMMAND:> PASV
227 Entering Passive Mode (127,0,0,1,26,108)
COMMAND:> LIST
STATUS:> Connecting ftp data socket 127.0.0.1: 6764...
125 Data connection already open; Transfer starting.
226 Transfer complete.

其中,227 Entering Passive Mode (127,0,0,1,26,80). 代表客戶機使用PASV模式連接伺服器的26x256+108=6764埠。(當然伺服器要支持這種模式)
125 Data connection already open; Transfer starting.說明伺服器的這個埠可用,返回ACK信息。

再讓我們看看用CUTEFTP Pro以PORT模式連接伺服器的情況。其中在LOG里有這樣的記錄:

COMMAND:> PORT 127,0,0,1,28,37
200 PORT command successful.
COMMAND:> LIST
150 Opening ASCII mode data connection for /bin/ls.
STATUS:> Accepting connection: 127.0.0.1:20.
226 Transfer complete.
STATUS:> Transfer complete.

其中,PORT 127,0,0,1,28,37告訴伺服器當收到這個PORT指令後,連接FTP客戶的28x256+37=7205這個埠。
Accepting connection: 127.0.0.1:20表示伺服器接到指令後用20埠連接7205埠,而且被FTP客戶接受。

比較分析

在這兩個例子中,請注意: PORT模式建立數據傳輸通道是由伺服器端發起的,伺服器使用20埠連接客戶端的某一個大於1024的埠;在PASV模式中,數據傳輸的通道的建立是由FTP客戶端發起的,他使用一個大於1024的埠連接伺服器的1024以上的某一個埠。如果從C/S模型這個角度來說,PORT對於伺服器來說是OUTBOUND,而PASV模式對於伺服器是INBOUND,這一點請特別注意,尤其是在使用防火牆的企業里,比如使用微軟的ISA Server 2000發布一個FTP伺服器,這一點非常關鍵,如果設置錯了,那麼客戶將無法連接。

最後,請注意在FTP客戶連接伺服器的整個過程中,控制信道是一直保持連接的,而數據傳輸通道是臨時建立的。

在本文中把重點放到了FTP的連接模式,沒有涉及FTP的其他內容,比如FTP的文件類型(Type),格式控制(Format control)以及傳輸方式(Transmission mode)等。不過這些規范大家可能不需要花費過多的時間去了解,因為現在流行的FTP客戶端都可以自動的選擇正確的模式來處理,對於FTP伺服器端通常也都做了一些限制,如下:

類型:A S C I I或圖像。

格式控制:只允許非列印。

結構:只允許文件結構。

傳輸方式:只允許流方式

至於這些內容,限於篇幅在這里就不想再介紹了。希望這篇文章能對大家有些幫助,特別是正在學習ISA Server2000的朋友和一些對FTP不很了解的朋友。

4. FTP兩個埠號,它們分別的作用是什麼

上傳和下載。 客戶端首先連接到FTP伺服器的21埠,進行用戶的認證,認證成功後,當我們要傳輸文件時,伺服器會開一個埠為20來進行傳輸數據文件。

FTP允許用戶以文件操作的方式(如文件的增、刪、改、查、傳送等)與另一主機相互通信。

然而, 用戶並不真正登錄到自己想要存取的計算機上面而成為完全用戶, 可用FTP程序訪問遠程資源, 實現用戶往返傳輸文件、目錄管理以及訪問電子郵件等等, 即使雙方計算機可能配有不同的操作系統和文件存儲方式。



(4)ftp進行數據傳輸時會建立兩條連接擴展閱讀:

FTP客戶端發起FTP會話,與FTP伺服器建立相應的連接。FTP會話期間要建立控制信息進程與數據進程兩個連接。控制連接不能完成傳輸數據的任務,只能用來傳送FTP執行的內部命令以及命令的響應等控制信息。

數據連接是伺服器與客戶端之間傳輸文件的連接,是全雙工的,允許同時進行雙向數據傳輸。當數據傳輸完成後,數據連接會撤消,再回到FTP會話狀態,直到控制連接被撤消,並退出會話為止。

5. FTP傳送數據前要建立兩個連接

1, 被動模式(PORT):
最常用的模式
A, 客戶端從任何埠到伺服器的21埠,21埠為默認控制埠,用戶登陸等各種控制命令都由21埠連接(S<-C)。
B, 伺服器的21埠到任何大於1024的埠,此過程與A過程構成了完整的FTP控制。(S->C)。
C, 伺服器指定隨機埠(大於1024),通知客戶端准備數據傳輸。此命令中,明示了伺服器IP地址。(S>C)。
D, 協商完畢,開始數據傳輸,數據從C過程中伺服器指定的隨機埠傳輸。(S<->C)。

2, 主動模式(PASV):
A, 客戶端從任何埠到伺服器的21埠,21埠為默認控制埠,用戶登陸等各種控制命令都由21埠連接(S<-C)。
B, 伺服器的21埠到任何大於1024的埠,此過程與A過程構成了完整的FTP控制。(S->C)。
C, 客戶端指定隨機埠(大於1024),通知伺服器准備傳送數據。(S<C)
D, 協商完畢,開始數據傳輸,數據從C過程中客戶端指定的隨機埠傳輸,伺服器埠固定為20埠。(S<->C)。

6. 思科ftp連接有哪兩個特徵

思科ftp連接有以下兩個特徵:
FTP文件傳輸需要建立兩種類型的連接,一種為文件傳輸下命令,稱為控制連接,另一種實現真正的文件傳輸,稱為數據連接。
1. 控制連接
客戶端希望與FTP伺服器建立上傳下載的數據傳輸時,它首先向伺服器的TCP 21埠發起一個建立連接的請求,FTP伺服器接受來自客戶端的請求,完成連接的建立過程,這樣的連接就稱為FTP控制連接。
2. 數據連接
FTP控制連接建立之後,即可開始傳輸文件,傳輸文件的連接稱為FTP數據連接。FTP數據連接就是FTP傳輸數據的過程,它有兩種傳輸模式。

熱點內容
海外搭建伺服器可以連外網嗎 發布:2025-02-05 11:49:21 瀏覽:64
少兒編程報名 發布:2025-02-05 11:49:13 瀏覽:308
c語言網路庫 發布:2025-02-05 11:48:30 瀏覽:555
c語言中if函數 發布:2025-02-05 11:45:20 瀏覽:626
伺服器怎麼設置dhcp伺服器地址 發布:2025-02-05 11:43:51 瀏覽:645
雲免流用的是什麼伺服器 發布:2025-02-05 11:34:35 瀏覽:164
怎樣在qq上傳文件 發布:2025-02-05 11:05:58 瀏覽:836
php測試員 發布:2025-02-05 10:54:58 瀏覽:515
linux反編譯jar 發布:2025-02-05 10:46:29 瀏覽:27
演算法激勵 發布:2025-02-05 10:45:48 瀏覽:306