FTP協議總結

2021-06-22 13:28:31 字數 3631 閱讀 3536

ftp協議檔案傳輸協議)建立在tcp協議的基礎之上,用來從乙個主機把檔案複製到另外乙個主機。在ftp客戶機與伺服器之間,採用來了兩條tcp連線,這兩條連線分別是控制連線資料連線。在控制連線過程中,ftp伺服器使用的埠號為21,在資料連線過程中,ftp服務使用的埠號為20,而客戶機在整個過程中使用的埠號都是臨時埠號,這兩個臨時埠號可以相同,也可以不同,當然在絕大多數情況下,這兩個臨時埠號都是不同的。在整個從連線的發起到資料傳輸的整個過程中,控制連線一直都開啟著而資料連線則在資料開始傳送時開啟,資料傳送完畢後關閉

控制連線

控制連線的開啟與關閉過程如下:

1.伺服器在熟知埠21發出被動開啟命令,等待客戶;

2.客戶使用臨時埠發出主動開啟;

3.當客戶不再使用該控制連線時,主動關閉該控制連線。

所以整個控制連線過程中,客戶始終是控制連線的發起者和終止者

要實現以上控制連線上的通訊,客戶需要向ftp伺服器傳送命令,而ftp伺服器向客戶傳送對這些命令的響應來共同完成。在傳送命令的過程中,由於客戶機與ftp伺服器的系統可能不同,為了解決這一可能存在的問題,客戶機在向伺服器傳送命令的過程中,使用nvt ascii字元傳送(相當於乙個編碼的過程),而在伺服器的接收程式則將nvt ascii字元轉換為伺服器主機系統所能識別的格式(相當於乙個解碼的過程)。在以上通訊過程中,每一條命令或響應都是乙個短行,每一行的行結束標誌為cr(回車)+lf(換行),即\r\n。現在我們已經知道命令是從客戶向伺服器傳送的,而響應則是從伺服器向客戶機傳送。下面我們介紹下命令的種類和響應的種類:

命令的種類。總體而言,客戶向伺服器傳送的命令包括:登入命令、檔案管理命令、資料型別命令、資料結構命令、埠選擇命令、資料讀寫命令等。這些命令可以告訴由客戶機告訴ftp伺服器:

(1)登入命令。登入的使用者名稱和密碼。

(2)檔案管理命令。如何管理遠端計算機的檔案系統,如顯示遠端目錄和檔案,重新命名遠端目錄和檔案以及新建和刪除目錄或檔案,這個跟linux系統中的檔案相關的命令相似,如對應linux系統中cd,rm,rmdir, touch,mkdir, pwd等。

(3)資料型別命令。讓客戶自定義檔案傳送的檔案型別(如ascii碼檔案型別,ebcdic檔案型別、二進位制檔案型別)、格式控制(僅對ascii格式和ebcdic有效,包括非列印、遠端登入格式控制)、傳輸方式(位元組流方式、塊方式、壓縮方式)。

(4)資料結構命令。告訴伺服器應該採用的是那種資料結構:位元組流檔案、記錄式檔案、頁式檔案。

(4)埠選擇命令。客戶通過該命令,告訴ftp伺服器,你下次傳送資料給我的時候,應該把資料傳送到我的哪個埠上。

(5)檔案讀寫命令。告訴伺服器現在是讀檔案還是寫檔案。

響應。客戶傳送的每乙個命令至少對於乙個響應,ftp伺服器發出的響應由兩個部分主持:數字(3位)+說明文字。其中說明文字用於解釋數字的含義(這樣,客戶端就不用實際這些數字的含義了,因為有後面的文字幫忙嘛!)。

資料連線

資料連線主要有三個目的:

(1)客戶向伺服器傳送乙個檔案。(叫作寫檔案或儲存檔案

(2)伺服器向客戶傳送乙個檔案。(叫作讀檔案

(3)伺服器向客戶傳送檔案或目錄列表。(列出檔名

資料連線的開啟與關閉一般過程如下:

1.客戶在控制連線的過程中,通過傳送port命令,將客戶的ip位址和將在資料連線階段使用的客戶端的臨時埠號傳送給伺服器的控制埠號21後,客戶端的資料連線臨時埠號處於被動開啟的狀態。

2.伺服器通過資料連線埠號20,利用客戶端給出的臨時埠號向客戶端主動開啟命令,於是便開啟了此資料連線,與客戶端進行資料交換。

3.當伺服器不再與客戶機進行資料交換後,伺服器便主動關閉同客戶端的資料連線。

從以上可以看出,在整個資料連線的過程中,伺服器端是資料連線的發起者和終止者,畢竟只有他自己才知道還有沒有資料要傳送給客戶端嘛

通常情況下,上面的控制連線和資料連線如下圖所示:

特殊情況1:客戶為並沒有用port命令將其資料連線的埠號傳送給ftp伺服器端,此時如果想要實現客戶與伺服器之間的資料連線,由於該埠已經被客戶用於控制連線,要是再使用該埠,客戶必須確定so_reuseaddr選項,如下圖所示:

特殊情況2:伺服器對資料連線做主動關閉後處於2msl等待狀態,若此時客戶在之前的控制連線上傳送另外乙個命令資料請求,並分配乙個新的客戶端的臨時埠號做被動開啟,由於此時伺服器正好處於2msl等待狀態,埠號20還不能真正使用,此時,伺服器必須確定so_reuseaddr選項,如下圖所示:

匿名ftp

通常情況下,要使用ftp,使用者就需要在遠端伺服器上有賬號和密碼,但是有些**有很多可供公用的檔案,如果要訪問這些檔案,使用者就不需要有賬號和密碼。匿名ftp的賬號為anonymous,密碼可以是設定為自己的郵箱位址或者guest之類的。

總結

1.ftp協議對應的運輸層協議為tcp。

2.ftp協議的資料連線和控制連線是分開的,而telenet協議的資料連線和控制連線公用一條連線。

3.控制連線主動的發起者和終止者都是ftp客戶端,而資料連線的主動發起者和終止這都是ftp伺服器端。

4.資料連線和控制連線對應的ip資料報中的tos(服務型別)欄位不一樣。控制連線為ox10,表示採用「最小時延」,而資料連線為ox08,表示採用「最大吞吐量」。

參考資料

[1]《tcp/ip詳解 卷1:協議》

[2]《tcp/ip 協議族 第4版》

FTP協議工作原理及總結

1.ftp協議 什麼是ftp呢?ftp 是 tcp ip 協議組中的協議之一,是英文file transfer protocol的縮寫。2.ftp使用者授權 1 使用者授權 要連上 ftp 伺服器 即 登陸 必須要有該 ftp 伺服器授權的帳號,也就是說你只有在有了乙個使用者標識和乙個口令後才能登陸...

FTP協議詳解

簡單地說,支援ftp協議的伺服器就是ftp伺服器,下面介紹一下什麼是ftp協議。檔案傳輸協議 一般來說,用網際網路的首要目的就是實現資訊共享,檔案傳輸是資訊共享非常重要的乙個內容之一。internet上早期實現傳輸檔案,並不是一件容易的事,我們知道 internet是乙個非常複雜的計算機環境,有pc...

FTP協議詳解

內容轉至 簡單地說,支援ftp協議的伺服器就是ftp伺服器,下面介紹一下什麼是ftp協議。檔案傳輸協議 一般來說,用網際網路的首要目的就是實現資訊共享,檔案傳輸是資訊共享非常重要的乙個內容之一。internet上早期實現傳輸檔案,並不是一件容易的事,我們知道 internet是乙個非常複雜的計算機環...