1. 程式人生 > >TCP/IP協議族——應用層——FTP協議

TCP/IP協議族——應用層——FTP協議

p地址 軟件 組成 交互 tft 決定 mes 格式信息 sci

原文:https://www.cnblogs.com/luoxn28/p/5585458.html

一、應用層

TCP/IP模型沒有會話層和表示層,其應用層簡單包含了所需的會話和表示功能。其包含的高層協議有虛擬終端協議(TELENT)、文件傳輸協議(FTP)和電子郵件協議(SMTP)等。

1、FTP協議

文件傳輸協議FTP(File Transfer Protocol)是因特網中使用最為廣泛的文件傳輸協議。FTP使用交互式的訪問,允許客戶指定文件的類型和格式(如指明是否使用ASCII碼),並允許文件具有存取權限(如訪問文件的用戶必須經過授權,並輸入有效的口令)。

文件傳輸協議有基於TCP的FTP和基於UDP的簡單文件傳輸協議TFTP,他們都是文件共享協議的一大類,即復制整個文件,其特點為:若要存取一個文件,就要先獲得一個本地的文件副本,如果要修改文件,只能對文件的副本進行修改,然後再將修改後的文件傳回原點。

(1)FTP的功能:在異構(減小或消除不同系統下處理文件的不兼容性)網絡中任意計算機之間傳送文件。

FTP使用客戶端/服務器模型,一個FTP服務器進程可以為多個客戶進程提供服務。FTP服務器有兩大組成部分:一個主進程,負責接收新的請求;還有若幹從屬進程,負責處理單個請求。

(2)FTP服務器主進程工作步驟:

a.打開熟知端口(21),使客戶進程能夠連接;

b.等待客戶進程發送連接請求;

c.啟動從屬進程處理客戶進程發送的連接請求,從屬進程處理完成請求後結束,從屬進程在運行期間可能根據需要創建其他一些子進程;

d.回到等待狀態,繼續接受其他客戶發起的請求;

主進程與從屬進程的處理是並發的。

FTP使用了2個TCP連接,FTP控制連接在整個會話期間都保持打開,只用來發送連接/傳送請求。當客戶進程向服務器發送連接請求時,尋找連接服務器進程的熟知端口21,同時還要告訴服務器進程自己的另一個端口號碼,用於建立數據傳送連接。接著,服務器進程用自己傳送數據的熟知端口20與客戶進程所提供的端口號碼建立數據傳送連接,FTP使用了2個不同的端口號,所以數據連接和控制連接不會混亂。

(3)FTP數據表示

 FTP協議規定了控制協議傳送與存儲的多種選擇,在以下4個方面必須做出一個選擇。

文件類型:ASCII碼文件(默認的)/ 圖像文件類型(二進制的)/ 本地文件類型(用於在具有不同字節大小主機間傳送二進制數據)

格式控制:該選項針對ASCII類型文件適用,非打印(默認選擇,文件中不包含垂直格式信息)/ 遠程登錄格式控制

結構:文件結構(默認選擇,文件被認為是一個連續的字節流,不存在內部的文件結構)/ 記錄結構(用於文本文件)

傳輸方式:流方式(模式選擇,文件以字節流方式傳輸,對於文件結構,發方在文件尾提示關閉數據連接,對於記錄結構,有專用的兩字節序列碼記錄結束和文件結束)/ 塊方式(文件以一系列塊來傳送,每塊前面有一個或多個首部字節)/ 壓縮方式

(4)FTP命令和應答

命令和應答在客戶和服務器的控制連接上以 NVT ASCII碼形式傳送。這就要求在每行結尾都要返回C R、 L F對(也就是每個命令或每個應答)。這些命令都是3或4個字節的大寫ASCII字符,其中一些帶選項參數。從客戶向服務器發送的FTP命令超過30種。下圖是比較常用的幾種命令:

技術分享圖片

應答都是A S C I I碼形式的3位數字,並跟有報文選項。其原因是軟件系統需要根據數字代碼來決定如何應答,而選項串是面向人工處理的。由於客戶通常都要輸出數字應答和報文串,一個可交互的用戶可以通過閱讀報文串(而不必記憶所有數字回答代碼的含義)來確定應答的含義。

技術分享圖片

(5)FTP工作模式

FTP有兩種工作模式,分別是主動模式(PORT)和被動模式(PASV)兩種模式,這兩種模式是按照FTP服務器的“角度”來說的,更通俗一點說就是:在傳輸數據時,如果是服務器主動連接客戶端,那就是主動模式;如果是客戶端主動連接服務器,那就是被動模式。

(6)如何知道FTP傳送一個文件結束?

通用傳輸方式是流方式,並且文件的結尾是以關閉數據連接為標誌,這意味著對每一個文件傳輸或目錄列表來說都要建立一個全新的數據連接。其一般過程如下:

a.正由於是客戶發出命令要求建立數據連接,所以數據連接是在客戶的控制下建立的。

b.客戶通常在客戶端主機上為所在數據連接端選擇一個臨時端口號。客戶從該端口發布一個被動的打開。

c.客戶使用P O RT命令從控制連接上把端口號發向服務器。

d.服務器在控制連接上接收端口號,並向客戶端主機上的端口發布一個主動的打開。服務器的數據連接端一直使用端口 2 0。

  圖27- 4給出了第 3步執行時的連接狀態。假設客戶用於控制連接的臨時端口是 11 7 3,客戶用於數據連接的臨時端口是 11 7 4。客戶發出的命令是PORT命令,其參數是6個ASCII中的十進制數字,它們之間由逗點隔開。前面 4個數字指明客戶上的 I P地址,服務器將向它發出主動打開(本例中是 140.252.13.34),而後兩位指明16 bit端口地址。由於16 bit端口地址是從這兩個數字中得來,所以其值在本例中就是 4×256+150=1174。

圖27-5給出了服務器向客戶所在數據連接端發布主動打開時的連接狀態。服務器的端點是端口2 0。

技術分享圖片

  服務器總是執行數據連接的主動打開。通常服務器也執行數據連接的主動關閉,除非當客戶向服務器發送流形式的文件時,需要客戶來關閉連接(它給服務器一個文件結束的通知)。

TCP/IP協議族——應用層——FTP協議