欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

文件傳輸協議(File Transfer Protocol, FTP)(1)_Ftp服務器教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!
Echo Protocol這個協議可能是我知道的最簡單的協議了。它主要用于調試和檢測中。這個協議的作用也十分簡單,接收到什么原封發回就是了。它可以基于TCP協議,服務器就在TCP端口7檢測有無消息,如果有發送來的消息直接返回就是了。如果使用UDP協議的基本過程和TCP一樣,也是收到什么返回什么,檢測的端口也是7。

文件傳輸協議(File Transfer Protocol, FTP)

1. 介紹

FTP的目標是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和可靠高效地傳送數據。雖然我們也可以手工使用它,但是它的主要作用是供程序使用的。在閱讀本文之前最好能夠閱讀TCP協議標準規范和Telnet協議標準規范。

2. 概覽

在本節中我們將討論一些表面上的問題,有些名詞的定義請參閱TCP和Telnet參考文獻。我們先介紹一下(1)字節大小,在FTP中字節大小有兩個:邏輯字節大小和用于傳輸的字節大小。后者通常是8位,而前者可不一定是多少了。傳輸字節不必等于邏輯字節大小,也不必對數據結構進行解釋。(2)控制連接是建立在USER-PIT和SERVER-PI之間用于交換命令與應答的通信鏈路。(3)數據連接是傳輸數據的全雙工連接。傳輸數據可以發生在服務器DTP和用戶DTP之間也可以發生在兩個服務器DTP之間。(4)DTP:數據傳輸過程(DTP)建立和管理數據連接,DTP可以是主動的也可以是被動的。(5) EOR代表記錄尾。(6)NTV代表網絡虛擬終端,它的定義與在Telnet協議中的定義一致。(7)NVFS代表網絡虛擬文件系統。(8)FTP可以傳輸非連續的文件,這些文件的一部分稱為頁。(9)PI代表協議解釋器。(10)服務器DTP代表一種傳輸過程,它通常處于“主動”狀態,它和偵聽端口建立數據連接,它還可以為傳輸和存儲設置參數,并根據PI的指令傳輸數據。當然,DTP也可以轉入“被動”狀態。(11)服務器FTP進程,它是和用戶FTP 進程一起工作的,它由PI和DTP組成。至于用戶FTP進程則是由PI,DTP和用戶接口組成的。下圖是FTP服務示意圖:



注意:數據連接是雙向的,它不用整個時間都存在。上圖中用戶PI開始控制連接,控制連接與Telnet協議很象。在開始階段,標準FTP命令由用戶PI產生并通過控制連接傳送到服務器進程。服務器PI向用戶PI返回標準應答。FTP命令指定數據連接參數和文件系統操作。用戶DTP在特定數據端口偵聽,服務器開始數據連接并以指定的參數開始數據傳輸。數據端口不必在開始FTP命令的機器上,但用戶或用戶FTP進程必須確定它在指定的數據端口上偵聽。這個數據連接是全雙工的。

在另外一種情況下,用戶或許希望在兩個主機間傳送文件,不是兩個本地主機。用戶在兩臺主機間建立控制連接,然后規劃數據連接。用這種方式,控制信息由用戶PI獲得,但是數據在服務器DTP之間傳送。下面就是一個例子:

協議要求數據傳輸在處理時打開控制連接。在完成FTP服務后由用戶中止控制連接,而服務器具體操作。如果在未接收命令時關閉了控制連接,服務器也會關閉數據傳輸。FTP和Telnet很有聯系,FTP使用Telnet協議進行控制連接,可有兩種方法達到目的:用戶PI或服務器PI可以在自己的過程中實現 Telnet協議的功能;第二種方法是利用系統中現有的Telnet模塊。實現上,FTP對Telnet協議的依賴也不多,即使重新實現,代碼量也不大。

3. 數據傳輸功能

數據連接只傳輸數據,控制連接傳送命令和響應。幾個命令是關于在主機間傳輸數據的,數據傳輸基本上獨立于物理結構的,但是如果在壓縮傳輸模式下流式傳輸與文件結構有關,文件的屬性與表示類型有關。

3.1. 數據表示與保存

數據是在主機間的存儲設置間傳送的。因為兩個系統的數據存儲方式不同,因此需要對它進行轉換,在傳送文本時會有對ASCII表示的問題,在進行二進制傳送的時候,會有不同系統對字節長度規定不同的問題,有的系統是7位,有的系統可能是32位,這也需要進行轉換。需要提供數據表示與傳輸模型函數,但是FTP提供這方面的功能不多,超過FTP提供功能的那一部分要用戶自己實現。

3.1.1. 數據類型

數據表示是由用戶指定的表示類型,它可以是隱含的,也可以是用戶指定的。請一定注意:邏輯字節長度與物理字節長度是不同的。

3.1.1.1. ASCII類型

這是所有FTP必須實現的默認類型,用于傳送文本文件,當在主機間使用EBCDIC傳送時更方便,則不使用ASCII類型。發送方將內部表示轉換為NVT- ASCII格式,接收方則進行相反的過程接收數據。根據NVT標準,要在行結束處使用序列。NVT-ASCII是8位的。ASCII和EBCDIC的格式參數在下面討論。

3.1.1.2. EBCDIC類型

它是作為ASCII的另一種方法在主機間傳送數據的數據類型。EBCDIC和ASCII很象,僅在類型的功能描述上有一些差別。行結束符使用很少。

3.1.1.3. 圖象類型

在此類型下傳送的數據被看作連續的位,發送方將數據打包到8位傳輸字節中傳送。因為結構的需要要對傳送數據進行填充,填充字節全部為0,填充必須在文件結構時使用,而且要標記出以便接收方過濾掉。它用于傳送二進制數據和有效地傳送和存儲文件,因此所有FTP也必須實現。

3.1.1.4. 本地類型

也可以以十進制指定邏輯字節大小。如果物理字節大小和邏輯字節大小不同,直接將物理數據打包為邏輯字節,不用什么填充。接收方根據邏輯字節大小進行和本機的存儲特點進行轉換。傳輸必須是可重復的,也就是說,相同的文件相同的參數,那內容必須是一樣的。

3.1.1.5. 格式控制

ASCII 和EBCDIC有一個可選參數,它說明文件垂直格式控制,下面的數據表示類型在FTP中有定義。字符文件可能有三種用途,打印,存儲或留待以后處理。如果是用于打印,那主機必須知道垂直格式控制的表示,如果存儲或等以后處理,也需要保留文件格式。如果在遠程主機上處理完后傳輸回本地主機,要保證遠程主機處理時沒有麻煩。這都需要在ASCII和EBCDIC格式上加入新的參數。

3.1.1.5.1. NON PRINT

未指定第二個參數是它是默認值。它必須為所有FTP接受。如果傳輸的文件是用于打印的,則使用邊界和間隔的默認值。通常它不用于打印目的,而用于保存文件或執行文件。

3.1.1.5.2. TELNET格式控制

文件包括ASCII/EBCDIC垂直格式控制,這些控制字符可以使打印正常進行。

3.1.1.5.3. CARRIAGE CONTROL (ASA)

文件包含ASA (FORTRAN)垂直格式控制字符。在以ASA標準形成的行中,第一個字符不打印,它用于決定打印前的走紙量。下面是定義了的ASA字符:

blank: 向下移動1行;0:向下移動2行;1:移動至下一頁;+:不移動

打印機必須能夠決定結構體的結束。如果文件本身有記錄結構就沒有問題,如果沒有,用于區別打印行,但這些格式標記已經由ASA控制字符使用了。

3.1.2. 數據結構

除了有不同的數據類型外,FTP還允許有不同的文件結構,下面是三種文件結構:文件式結構:文件中沒有內部結構,文件被看作是二進制流;記錄結構:文件是由一系列記錄組成的;頁結構:文件是由不同的索引頁組成的。

如果未使用STRU命令,文件結構是默認值。文件的結構會影響傳輸模型,存儲和數據表示。文件本來的屬性和保存它的主機有關,不同的機器會以自己的方式保存文件。在不同主機間傳送文件時必須使主機能夠識別相互的表示。有些主機上的文件是面向字節的,有些是面向記錄的,在傳送時就會出現問題。那就要在接收方進行內部轉換。在進行轉換的時候,需要區別記錄的邊界,在ASCII中使用,在EBCDIC中使用作為分隔符。采用這種實現方法的必須保證轉換是可逆的。

3.1.2.1. 文件結構

如果未使用STRU命令,文件結構是默認值。文件結構中沒有默認值,文件被看作是連續的字節串。

3.1.2.2. 記錄結構

對于文本文件,記錄結構必須是所有FTP實現必須有的。記錄結構文件是由連續的記錄構成的。

3.1.2.3. 頁結構

文件是非連續時使用頁結構。這種文件稱為隨機訪問文件。這些文件中有時會的和文件整體或部分相關的信息出現。在FTP中,文件的一個部分稱為頁。為了提供不同的頁大小和相關信息,每頁都帶頁頭發送。頁頭中有如下域:

頭長度

包括此字節的頁頭長度,單位為字節,最小長度為4

頁索引

指出此部分在原文件中的位置,它和傳輸編號不是一回事

數據長度

頁數據中的邏輯字節數,最小值為0

頁類型

頁的類型有以下幾種:0=未頁,指示傳輸結構,包頭必須為4,數據長度必須為0;1=通常頁,沒有控制信息的通常頁文件的普通類型;2=描述子頁,用于傳送整體文件的描述信息;3=訪問控制頁,包括頁級訪問控制信息的頁文件頭域,包頭長度必須為5

可選域

提供每頁的控制信息

所有域均以1個邏輯字節長度為大小,邏輯字節長度由TYPE命令指定。如果讀取版本與和開始版本號一致,文件訪問時必須以相同的參數進行。如果參數相同,FTP實現要保證取得的文件內容是相同的。

3.2. 建立數據連接

傳送數據機制包括建立連接選擇數據參數。用戶和服務器DTP有默認數據端口。用戶進程默認數據端口和控制連接端口相同。服務器進程默認數據端口和控制連接端口相鄰。傳輸字節大小是8位字節。此字節是實際傳輸字節,但不代表主機內的數據表示。被動數據傳輸進程在數據端口接收數據,FTP請求命令決定數據傳輸的方向。服務器在接收到請求以后,將初始化端口的數據連接。當連接建立后,傳輸在DTP之間傳送,服務器PI對用戶PI返回應答。FTP實現運行一個默認數據端口,用戶PI才能改變默認端口。

通過PORT命令可能改變端口,用戶可能希望數據在第三方主機上進行其它操作,用戶PI需要在兩個服務器PI上建立連接。一個服務器被告知偵聽另一服務器的請求。用戶PI通過PORT命令通知另一服務器的數據端口。最后雙方發送相應的傳送命令。通常,服務器負責支持數據連接,初始化并關閉它,除非用戶DTP在傳輸模式下要求關閉連接。服務器在下面情況下關閉數據連接:

1. 服務器結束發送數據,通過EOF要求中止傳送;

2. 用戶發送ABORT命令;

3. 用戶改變端口;

4. 控制連接關閉;

5. 發生不可恢復錯誤。

3.3. 數據連接管理

默認數據連接端口:所有FTP必須支持默認數據連接,只有用戶PI能夠初始化非默認端口的使用。

確定非默認數據端口:用戶PI可以使用PORT命令指定非默認端口,它要求服務器方以PASV確定非默認數據端口。連接是由雙方地址確定的,因此改變一方地址就改變了連接。

數據連接的重用:在使用流式數據傳輸模型時,文件結束通過關閉連接指示。如果要傳送多個文件時就會出麻煩,解決的方法有兩個,一個是確定非默認端口,另一個是使用另一種傳輸模式。就傳輸模式而言,流傳輸模式是不安全的,因此無法確定連接是暫時還是永久關閉。其它傳輸模式不通過關閉連接表示文件結構,它們可以通過FTP命令決定傳送結構。因此使用這些傳輸模式可以在保持連接的情況下傳送多個文件。

3.4. 傳輸模式

有三種傳輸模式:一種將數據格式化并考慮重新開始過程;一種壓縮數據;一種是不經過處理(少量處理)傳送。所有數據傳輸必須以一個EOF結束,它可以顯式給出,也可以通過關閉連接隱式給出。對于記錄文件,所有EOR是顯式的,包括最后一個記錄。對于以頁結構傳送的文件,使用“最后一頁”表示結束。從這里開始,下文中我們提到的字節指的是“傳輸字節”。

為了進行標準化傳送,傳送主機必須把行結束或記錄結束的內部表示轉化為傳輸模式和文件結構指定的形式傳送,接收方則進行相反的工作。IBM大型機的記錄計數域可能不能為其它主機識別,所以記錄結束標記在流模式下以雙字節控制碼傳送,在塊或壓縮模式下以標記位傳送。而ASCII或EBCDIC的行結束則則或指示。這樣的轉換需要時間,所以相同的系統在傳送文本文件時采用二進制或流表示比較合適。下面是 FTP定義的傳輸模式:

3.4.1. 流模式

數據以字節流的形式傳送。使用的表示類型沒有限制,允許記錄結構。在記錄結構文件EOR和EOF表示為雙字節控制碼。第一字節全為0,后一字節為轉義字符。當第二位值為1時表示EOR,為2時表示EOF,如果要同時表示EOR和 EOF,值為3。全1字節作為數據發送時必須使用雙字節傳送,其中數據保存在第二個字節內。如果是文件結構,通過發送方關閉連接表示EOF,接收到的所有數據就是文件內容。

 

3.4.2. 塊模式

文件以塊形式傳送,塊帶有自己的頭部分。頭字節包括計數域和描述子代碼。計數域說明了數據塊的字節數,描述子代碼定義了以下內容:EOF,EOR重新開始標記或懷疑錯誤數據。懷疑錯誤數據不是為了進行差錯控制,它是為了站點間交換特定數據,傳送時不管本地錯誤(如硬盤錯誤)而只管傳送,但是傳送時可要指出,這個數據可能有錯。在此模式下可以使用記錄結構,也可以使用相應的數據表示。頭字節的結構如下圖所示:

描述子 8位

字節計數 16位

描述子代碼由在描述子字節中的位標記說明,下面是已經指定的四種代碼及其意義:

代碼

意義

128

數據塊結束是EOR

64

數據塊結束是EOF

32

數據塊內有懷疑錯誤

16

數據塊是重新開始標記

 

 

以這種編碼,對于特定塊可能存在多個描述子編碼條件,所需要的位必須全部設置。重新開始標記包括在數據流中,它作為8位整數代表在控制連接上使用語言的可打印字節,但不得出現在其中。例如要傳送6字節標記,下面就是例子:

 

Descrptr code = 16

Byte count = 6

 

Marker 8位

Marker 8位

Marker 8位

 

Marker 8位

Marker 8位

Marker 8位

3.4.3. 壓縮模式

有三種信息需要傳送:常規數據以字節串傳送;壓縮數據,包括復本和過濾器;控制信息,以兩個轉義字符傳送。如果有N(>0但小于127)個常規數據傳送,在數據前一位加上一個字節,這個字節最高位為0,其它位表示的數值等于N。如下圖:

若要壓縮一個數據位D的N復本字符串,用兩個字節傳送,如下圖,它表示的是壓縮的字節:

一串N過慮器字節可以壓縮為一個字節,而過濾器字節根據表示法不同而不同。如果類型是ASCII或EBCDIC,過濾器字節是,如果是圖象或本地類型,則是0。下面就是過濾器字節:

轉義序列是雙字節,頭一個全0,后一個內是定義于塊模式下的描述子代碼。描述子代碼與塊模式中的意義相同,它作用于其后串中的字節。而壓縮模式對于增加帶寬有好處(因為數據是壓縮過的)。

3.5. 差錯恢復和重新開始

位丟失和數據錯誤是這一層的差錯控制由TCP負責。而重新開始則是給用戶一個處理系統(包括操作系統,網絡等)失敗的方法。重新開始過程僅適用于塊和壓縮模式,它要求發送者在數據流中加入特定標記,標記僅對傳送者有意義,但其中的內容是控制連接使用的語言。標記可以代表一個位記數,記錄記數或可以標記數據數目的任何點。如果接收方也支持重新開始,將會在接收系統中保存這一標記。在系統失敗重新啟動后,用戶可以根據原來的標記重新開始數據傳送,也就是我們通常熟悉的斷點續傳過程。接收方接收到一段數據,然后記下一點,如果發送方失敗了,就從這一點以后再傳送相應的數據。具體的這里不多說了。

 

4. 文件傳輸功能

從用戶PI到服務器的信道是建立在用戶到標記服務器端口間的。用戶協議解釋器負責發送命令和解釋接收的應答;服務器PI解釋命令,發送應答,指導DTP建立數據連接并傳送數據。如果數據傳輸的第二方是用戶DTP,通過用戶FTP主機的內部協議對它進行控制;如果第二方是服務器DTP,它由用戶PI發來的命令經過自己的PI控制。

4.1. FTP命令

4.1.1. 訪問控制命令

下列命令指定訪問控制標記(命令碼在括號內):

用戶名(USER)

參數是標記用戶的Telnet串。用戶標記是訪問服務器必須的,此命令通常是控制連接后第一個發出的命令,有些主機還會要求口令和帳戶。服務器可以在任何時間接收新的USER命令以改變訪問控制和(或)帳戶信息。這可以重新開始登錄過程,所以傳輸參數不變,在進行中的文件傳輸在過去的訪問控制參數下完成。

口令(PASS)

參數是標記用戶口令的Telnet串。此命令緊跟USER命令,在某些站點它是完成訪問控制不可缺少的一步。因此口令是個重要的東西,因此不能顯示出來,服務器方沒有辦法隱藏口令,所以這一任務得由用戶FTP進程完成。

ACCOUNT (ACCT)

 

參數是標記用戶帳戶的Telnet串。此命令不需要與USER相關,一些站點可能需要帳戶用于登錄,另一些可以限制帳戶的權限,在后一種情況下,此命令可在任何時候發送。應答的不同可以區別不同的情況:當登錄需要帳戶信息時,對PASS命令的響應是332。另外,如果不需要帳戶信息,對PASS的響應是 230,如果需要帳戶信息在以后需要,服務器會返回332或532,這要看它是保存此命令還是拒絕此命令了。

改變工作目錄(CWD)

此命令使用戶可以在不同的目錄或數據集下工作而不用改變它的登錄或帳戶信息。傳輸參數也不變。參數一般是目錄名或與系統相關的文件集合。

回到上一層目錄(CDUP)

此命令要求系統實現目錄樹結構,它的響應和CWD的相同。

結構加載(SMNT)

此命令使用戶在不改變登錄或帳戶信息的情況下加載另一個文件系統數據結構。傳輸參數也不變。參數是文件目錄或與系統相關的文件集合。

重新初始化(REIN)

此命令終止USER,將所有I/O和帳戶信息寫入,但不許進行中的數據傳輸完成。重置所有參數,控制連接打開,可以再次開始USER命令。

退出登錄(QUIT)

此命令終止USER,如果沒有數據傳輸,服務器關閉控制連接;如果有數據傳輸,在得到傳輸響應后服務器關閉控制連接。如果用戶進程正在向不同的USER傳輸數據,不希望對每個USER關閉然后再打開,可以使用REIN。對控制連接的意外關閉,可以導致服務器運行中止(ABOR)和退出登錄(QUIT)。

4.1.2. 傳輸參數命令

所有數據傳輸參數有默認值。服務器必須記錄下默認值,在FTP服務請求后,可以以任何順序發送。下面命令傳送參數:

數據端口(PORT)

 

參數是要使用的數據連接端口,通常情況下對此不需要命令響應。如果使用此命令時,要發送32位的IP地址和16位的TCP端口號。上面的信息以8位為一組,逗號間隔十進制傳輸,如下例:

PORT h1,h2,h3,h4,p1,p2

其中h1是IP地址的最高8位。

被動(PASV)

此命令要求服務器DTP在指定的數據端口偵聽,進入被動接收請求的狀態,參數是主機和端口地址。

表示類型(TYPE)

參數指定表示類型。有些類型需要第二個參數,第一個參數由單個Telnet字符定義,第二個參數是十進制整數指定字節大小,參數間以分隔。下面是格式:

默認表示類型是ASCII非打印字符,如果參數未改變,以后只改變了第一個參數,則使用默認值。

文件結構(STRU)

參數是一個Telnet字符代碼指定文件結構。下面是代碼及其意義:

F - 文件(非記錄結構),它是默認值

R - 記錄結構

P - 頁結構

傳輸模式(MODE)

參數是一個Telnet字符代碼指定傳輸模式。下面是代碼及其意義:

S - 流(默認值)

B - 塊

C - 壓縮

4.1.3. FTP服務命令

FTP 服務命令定義用戶請求的文件傳輸或文件系統功能。此命令的參數通常是路徑名,其語法要和服務器的規范一致。推薦的默認值是最近指定的設備目錄或目錄。命令順序通常沒有限制,只有"rename from"命令后面必須是"rename to",重新啟動命令后面必須是中斷服務命令。服務命令的響應通常在數據連接上傳輸。下面是具體的命令:

獲得文件(RETR)

此命令使服務器DTP傳送指定路徑內的文件復本到服務器或用戶DTP。這邊服務器上文件的狀態和內容不受影響。

保存(STOR)

此命令使服務器DTP接收數據連接上傳送過來的數據,并將數據保存在服務器的文件中。如果文件已存在,原文件將被覆蓋。如果文件不存在,則新建文件。

唯一保存(STOU)

此命令和STOR差不多,此命令要求在此目錄下的文件名是唯一的,對此命令的響應必須包括產生的用戶名。

附加(APPE)

它和STOR的功能差不多,但是如果文件在指定路徑內已存在,則把數據附加到原文件尾部,如果不存在則新建文件。

分配(ALLO)

此命令用于在一些主機上為新傳送的文件分配足夠的存儲空間。參數是十進制的邏輯字節數。如果是記錄或頁結構,頁或記錄的最大大小也需要,這在第二個參數內以十進制指定。第二個參數是可選的,如果有它,它和第一個參數以Telnet字符 R 分隔。此命令在STOR或APPE命令后,對于不需要分配存儲空間的機器,它的作用等于NOOP。

重新開始(REST)

參數域代表服務器要重新開始的那一點,此命令并不傳送文件,而是略過指定點后的數據,此命令后應該跟其它要求文件傳輸的FTP命令。

重命名(RNFR)

這個命令和我們在其它操作系統中使用的一樣,只不過后面要跟"rename to"指定新的文件名。

重命名為(RNTO)

此命令和上面的命令共同完成對文件的重命名。

放棄(ABOR)

此命令通知服務中止以前的FTP命令和與之相關的數據傳送。如果先前的操作已經完成,則沒有動作,返回226。如果沒有完成,返回426,然后再返回226。關閉控制連接,數據連接不關閉。

刪除(DELE)

此命令刪除指定路徑下的文件。用戶進程負責對刪除的提示。

刪除目錄(RMD)

此命令刪除目錄。

創建目錄(MKD)

此命令在指定路徑下創建新目錄。

打印工作目錄(PWD)

在響應是返回當前工作目錄。

列表(LIST)

服務器傳送列表到被動DTP,如果路徑指定一個目錄或許多文件,返回指定路徑下的文件列表。如果路徑名指定一個文件,服務器返回文件的當前信息,參數為空表示用戶當前的工作目錄或默認目錄。數據傳輸在ASCII或EBCDIC下進行,用戶必須確認這一點。因為文件信息因系統不同而不同,所以不可能被程序自動利用,但是人類用戶卻很需要。

名字列表(NLST)

服務器傳送目錄表名到用戶,路徑名應指定目錄或其它系統指定的文件群描述子;空參數指當前目錄。服務器返回文件名數據流,以ASCII或EBCDIC形式傳送,并以或分隔。這里返回的信息有時可以供程序進行進一步處理。

站點參數(SITE)

服務器用來提供服務器系統信息,信息因系統不同而不同,格式在HELP SITE命令應答中給出。

系統(SYST)

用于確定服務器上運行的操作系統。

狀態(STAT)

此命令返回控制連接狀態,它可以在文件傳送過程中發送,服務器返回操作進行的狀態。也可以在文件傳送之間發送,這時命令有參數,參數是路徑名,此命令的功能除了數據在控制連接上傳送以外和列表命令相似。如果指定部分路徑,服務器以文件名或與說明相關的屬性返回;如沒有參數,服務器返回服務器FTP進程的狀態信息,包括傳輸參數的當前值和連接狀態。

幫助(HELP)

這條命令我們在平常系統中得到的幫助沒有什么區別,響應類型是211或214。建議在使用USER命令前使用此命令。

等待(NOOP)

此命令不產生什么實際動作,它僅使服務器返回OK。

FTP 在控制連接上使用Telnet通信,因此有機會大家可以看看相關的協議說明。對下文的理解會很有好處。下面內容將對命令的應答和關于命令的詳細信息作以說明。FTP命令可分為訪問控制標記,數據傳輸參數或FTP服務請求,特定的命令(如ABOR,STAT)可以在數據傳輸過程中在控制連接上傳輸。有些服務器不能同時監視數據和控制鏈路,那就要另外采取措施了。請注意下面的幾點建議:

1. 用戶系統將Telnet的"Interrupt Process"(IP)信息插入Telnet流;

2. 用戶系統發送Telnet的"Synch"信號;

3. 用戶系統將命令(如ABOR)插入Telnet流;

4. 服務器PI在接收到IP后,在Telnet流中尋找僅有一個的FTP命令。

4.2. FTP應答

FTP 命令的響應是為了對數據傳輸請求和過程進行同步,也是為了讓用戶了解服務器的狀態。每個命令必須有最少一個響應,如果是多個,它們要易于區別。有些命令是有順序性的,因此其中任何一個命令的失敗會導致從頭開始。FTP響應由三個數字構成,后面是一些文本。數字帶有足夠的信息命名用戶PI不用檢查文本就知道發生了什么。文本信息與服務器相關,用戶可能得到不同的文本信息。文本和數字以間隔,文本后以Telnet行結束符結束。文本可能多于一行,這時文本必須在括號內,第一行內要有信息表示文本多于一行,最后一行也要有所標記。如果是多行,可以在數字代碼后加上"-",最后一行以數字開始,后面是,再加上 Telnet的行結束符就可以了。下面是一個例子:

123-第一行

第二行

234 以數字開始的一行

123 最后一行

三位數字每位都有一定的意義,第一位確定響應是好的,壞的還是不完全的,通過檢查第一位,用戶進程通常就能夠知道大致要采取什么行動了。如果用戶程序希望了解出了什么問題,可以檢查第二位,第三位留表示其它信息。第一位有五個值:

1yz 確定預備應答

請求的操作正在被初始化;在進入下一個命令前等待另外的應答。這類響應用于說明命令被接受,在實現中如何同步監視有困難,用戶進程現在可以關注數據連接了。服務器FTP進程對第個命令幾乎都返回1yz響應。

2yz 確定完成應答

要求的操作已經完成,可以執行新命令。

3yz 確定中間應答

命令已接受,但要求的操作被停止,停止接收更新的信息。

4yz 暫時拒絕完成應答

未接受命令,要求的操作未執行,但錯誤是臨時的,過一會兒可以再次發送消息。用戶應該返回命令序列的開始。這個暫時可是不好確定,此命令的意思就是讓用戶進程再次嘗試使用此命令。

5yz 永遠拒絕完成應答

它與暫時拒絕完成應答的區別就在于錯誤條件是一時半會不會消失。

下面我們來看看第二位所代表的意義:

x0z 格式錯誤;

x1z 此類應答是為了請求信息的;

x2z 此類應答是關于控制和數據連接的;

x3z 關于認證和帳戶登錄過程;

x4z 未使用;

x5z 此類應答是關于文件系統的;

第三個數字是在第二個數字的基礎上對應答內容的進一步細化。一般來說,數字代碼后要有文本信息。實現時應該盡量使用現有的代碼,而不要隨便添加新的意義不大的代碼。

有些命令如TYPE或ALLO,它們的成功不為用戶進程提供任務新信息,所以不會有200應答返回。如果有些命令對于服務器來說不支持,也要返回確定完成應答,這樣用戶進程才有可能進行下面的命令。如果要求的不是可選實現的命令,而這個命令確實沒有實現,那就要返回代碼502。下面我們根據數字順序列出各個應答碼及其意義:

110

重新啟動標記應答。在這種情況下文本是確定的,它必須是:MARK yyyy=mmmm,其中yyyy是用戶進程數據流標記,mmmm是服務器標記。

120

服務在nnn分鐘內準備好

125

數據連接已打開,準備傳送

150

文件狀態良好,打開數據連接

200

命令成功

202

命令未實現

211

系統狀態或系統幫助響應

212

目錄狀態

213

文件狀態

214

幫助信息,信息僅對人類用戶有用

215

名字系統類型

220

對新用戶服務準備好

221

服務關閉控制連接,可以退出登錄

225

數據連接打開,無傳輸正在進行

226

關閉數據連接,請求的文件操作成功

227

進入被動模式

230

用戶登錄

250

請求的文件操作完成

257

創建"PATHNAME"

331

用戶名正確,需要口令

332

登錄時需要帳戶信息

350

請求的文件操作需要進一步命令

421

不能提供服務,關閉控制連接

425

不能打開數據連接

426

關閉連接,中止傳輸

450

請求的文件操作未執行

451

中止請求的操作:有本地錯誤

452

未執行請求的操作:系統存儲空間不足

500

格式錯誤,命令不可識別

501

參數語法錯誤

502

命令未實現

503

命令順序錯誤

504

此參數下的命令功能未實現

530

未登錄

532

存儲文件需要帳戶信息

550

未執行請求的操作

551

請求操作中止:頁類型未知

552

請求的文件操作中止,存儲分配溢出

553

未執行請求的操作:文件名不合法

5. 說明

5.1. 最小實現

下面是Ftp服務器的最小實現:

類型 - ASCII Non-print

模式 - Stream

結構 - File, Record

命令 - USER, QUIT, PORT,TYPE, MODE, STRU,RETR, STOR,NOOP.

傳輸的默認參數為:

類型 - ASCII Non-print

模式 - Stream

結構 - File

所有主機都將上面的值作為默認值。

5.2. 連接

服務器協議解釋器會在端口L偵聽,用戶或用戶協議解釋器初始化全雙工控制連接,服務器和用戶進程應該遵守Telnet協議的說明進行。服務器不提供對命令行的編輯功能,應該由用戶負責這一切。在全部傳送和應答結束后,在用戶的請求下服務器關閉控制連接。用戶DTP必須在指定的數據端口上偵聽,它可以是默認端口U或由PORT命令指定的端口。服務器的默認數據端口為L-1。傳輸方向和端口均可由FTP命令決定。只有用戶PI可以改變默認端口。當數據在服務器A 和B之間傳送時,用戶PI,C,在兩個服務器PI之間建立控制連接。其中一個服務器A,在接收到傳輸服務命令時接收PASV命令初始化連接,用戶PI接收到PASV命令的確認時(確認內包括主機標識和端口),將端口以PORT命令發送到B。在接收到確認后,用戶PI可以發送相應的命令給A和B了,B初始連接和傳輸進程,命令應答序列如下面所示,請根據位置注意時差:

在任何時間,服務器和用戶只要有一方關閉連接,另一方就要趕快讀取緩沖中的數據,然后也關閉本方的連接。

 

5.3. 命令

本節主要討論命令格式。命令對大小寫不敏感。命令通常由命令碼和相應的參數組成。中間由一個或幾個空格分開。參數域由結束,服務器在未接收到行結束符時不會采取任何動作。下面描述的格式是以NVT-ASCII以準的,方括號代表可選的參數域,如果未選擇可選的參數域則采用默認值。

5.3.1. FTP命令

下面是FTP命令,其中username代表用戶名,password代表口令,pathname代表路徑名,host-port代表主機端口, account-information代表帳戶信息,typecode代表類型代碼,decimal-integer代表十進制整數,marker代表標記,string代表字符串:

USER

PASS

ACCT

CWD

CDUP

SMNT

QUIT

REIN

PORT

PASV

TYPE

STRU

MODE

RETR

STOR

STOU

APPE

ALLO

[ R ]

REST

RNFR

RNTO

ABOR

DELE

RMD

MKD

PWD

LIST [ ]

NLST [ ]

SITE

SYST

STAT [ ]

HELP [ ]

NOOP

5.3.2. FTP命令參數

下面是用BNF范式表示的參數格式:

::=

::=

::=

::= |

::= 除和外的所有ASCII字符

::=

::= |

::= 可打印ASCII字符,從33到126

::=

::= ,

::= ,,,

::= ,

::= 從1到255的十進制整數

::= N | T | C

::= A [ ]| E [ ]| I| L

::= F | R | P

::= S | B | C

::=

::= 任何十進制整數

5.4. 命令和響應序列

服務器和用戶之間的通信是對話的過程,用戶發送FTP命令,然后等待服務器的一個(或多個)響應,根據響應再發送新命令。

連接時的響應帶有許多信息,通常情況下,服務器會返回220應答,等待輸入,用戶在接收到此響應后才發送新命令,如果服務器不能立即接收輸入,會在220后面返回120。有些信息如服務器將在15分鐘后停止工作是要服務器發向用戶的,但是服務器卻不能直接發向用戶,處理的方法是將消息緩沖,在下一個響應中返回給用戶。下面列出命令的應答,第一個是預備應答,第二個是確定完成,第三個是拒絕完成,最后是中間應答。這些應答是構成狀態圖的基礎,狀態圖會在下節中給出:

建立連接

120

220

220

421

登錄

USER

230

530

500, 501, 421

331, 332

PASS

230

202

530

500, 501, 503, 421

332

ACCT

230

202

530

500, 501, 503, 421

CWD

250

500, 501, 502, 421, 530, 550

CDUP

200

500, 501, 502, 421, 530, 550

SMNT

202, 250

500, 501, 502, 421, 530, 550

退出登錄

REIN

120

220

220

421

500, 502

QUIT

221

500

傳輸參數

PORT

200

500, 501, 421, 530

PASV

227

500, 501, 502, 421, 530

MODE

200

500, 501, 504, 421, 530

TYPE

200

500, 501, 504, 421, 530

STRU

200

500, 501, 504, 421, 530

文件操作命令

ALLO

200

202

500, 501, 504, 421, 530

REST

500, 501, 502, 421, 530

350

STOR

125, 150

(110)

226, 250

425, 426, 451, 551, 552

532, 450, 452, 553

500, 501, 421, 530

STOU

125, 150

(110)

226, 250

425, 426, 451, 551, 552

532, 450, 452, 553

500, 501, 421, 530

RETR

125, 150

(110)

226, 250

425, 426, 451

450, 550

500, 501, 421, 530

LIST

125, 150

226, 250

425, 426, 451

450

500, 501, 502, 421, 530

NLST

125, 150

226, 250

425, 426, 451

450

500, 501, 502, 421, 530

APPE

125, 150

(110)

226, 250

425, 426, 451, 551, 552

532, 450, 550, 452, 553

500, 501, 502, 421, 530

RNFR

450, 550

500, 501, 502, 421, 530

350

RNTO

250

532, 553

500, 501, 502, 503, 421, 530

DELE

250

450, 550

500, 501, 502, 421, 530

RMD

250

500, 501, 502, 421, 530, 550

MKD

257

500, 501, 502, 421, 530, 550

PWD

257

500, 501, 502, 421, 550

ABOR

225, 226

500, 501, 502, 421

獲得信息命令

SYST

215

500, 501, 502, 421

STAT

211, 212, 213

450

500, 501, 502, 421, 530

HELP

211, 214

500, 501, 502, 421

其它命令

SITE

200

202

500, 501, 530

NOOP

200

500 421

6. 狀態圖

下面是一個簡單實現的FTP的狀態圖,只用到響應碼的首位。對于所有命令或命令序列有三種可能性:成功(S),失敗(F)或錯誤(E)。在狀態圖中B代表開始,W代表等待響應。下面我們給出一個總圖,總圖可以包括的命令有:

ABOR,ALLO,DELE,CWD,CDUP,SMNT,HELP,MODE,NOOP,PASV,QUIT,SITE,PORT,SYST,STAT,RMD,MKD,PWD,STRU和TYPE

而下圖可以包括的命令有:APPE,LIST,NLST,REIN,RETR,STOR和STOU。

第一幅圖和第二幅圖差別不大,第一幅圖中如果出現了100系列響應會是錯誤,而在第二幅圖中不會。下面是重命名過程:

下面是重新啟動命令,其中cmd代表APPE,STOR或RETR。

下圖代表登錄過程:

7. 典型FTP過程

假設位于U的用戶希望從S上(下)傳文件,通常用戶需要使用用戶FTP進程和服務器通信,下面就是一個例子:

用戶發出的本地命令

解釋

ftp (host) multics

連接到S的端口L,建立控制連接

<---- 220 Service ready .

用戶名 Doe

need password.

USER Doe---->

<---- 331 用戶名正確

口令

PASS 口令---->

<---- 230 User logged in.

retrieve (local type) ASCII

(local pathname) test 1

(for. pathname) test.pl1

User-FTP opens local file in ASCII.

RETR test.pl1 ---->

<---- 150 文件狀態正常,將打開數據連接

服務器于端口U建立數據連接

文件傳輸中

  <---- 226 關閉數據連接,文件傳輸正確

type Image

TYPE I ---->

<---- 200 Command OK

store (local type) image

(local pathname) file dump

(for.pathname) >udd>cn>fd

User-FTP opens local file in Image.

STOR >udd>cn>fd ---->

<---- 550 訪問拒絕

中止

QUIT ---->

服務器關閉所有連接

FTP控制連接通過用戶進程端口U和服務器端口L建立,這里默認的L=21。


 

來源:網絡搜集//所屬分類:Ftp服務器教程/更新時間:2012-06-08
相關Ftp服務器教程
亚洲午夜视频在线观看| 自拍欧美日韩| 久久精品综合网| 色妞久久福利网| 国产精品av免费观看| 黄色一级片在线| 天堂av一区二区三区在线播放| 国产三级精品三级| 久久精品成人欧美大片古装| 日本欧美视频在线观看| 姑娘第5集在线观看免费好剧| 一区二区三区午夜视频| 五月天丁香久久| 成人激情春色网| 四虎永久免费影院| 欧美影院在线| 国产拍揄自揄精品视频麻豆| 欧美激情精品久久久久久大尺度 | 成年网站在线播放| 人妻精品无码一区二区| 蜜桃av一区二区| 亚洲国产成人久久| 一区不卡字幕| 99久久久久久久久| 精品1区2区3区4区| 欧美日韩激情在线| 美女被啪啪一区二区| 国产极品美女在线| 欧美亚洲在线日韩| 大桥未久av一区二区三区| 91精品视频免费看| 免费观看a级片| 偷窥自拍亚洲色图精选| 亚洲综合色视频| 国产日产欧美a一级在线| 国产特级黄色录像| 美女主播精品视频一二三四| 亚洲精品中文字幕乱码三区| 国产精品久久久久久av下载红粉| 妖精视频一区二区| 日韩欧美中文在线观看| 国产精品第五页| 国产精品高潮呻吟视频| 亚洲中文字幕无码av| 粉嫩av一区二区| 一区二区三区在线视频免费观看 | 中文字幕第69页| gogogo高清在线观看一区二区| 欧美日韩精品在线| 精品国产综合久久| 国产精品19乱码一区二区三区| 欧美一区亚洲| 91精品国产入口| 日本三级福利片| 91在线你懂的| 国产一区二区免费视频| 久久视频中文字幕| 亚洲黄色片免费看| 久久九九精品视频| 亚洲欧美国产77777| 91社区国产高清| 日日噜噜夜夜狠狠久久波多野| 欧美激情偷拍自拍| 欧美久久久久免费| 浴室偷拍美女洗澡456在线| 一级黄在线观看| 国产一区二区精品久久| 欧美成人激情在线| 韩国一区二区三区四区| 综合中文字幕| 天天影视涩香欲综合网| 蜜桃传媒视频麻豆第一区免费观看 | 国产 日韩 欧美 成人| 欧美日本精品| 亚洲精品久久久一区二区三区| 成人av一级片| 日韩一区二区三区在线免费观看| 国产日韩欧美精品综合| 国产精品一区二区三区久久久| 激情无码人妻又粗又大| 欧美日韩一区二区高清| 亚洲成人免费网站| 99色精品视频| 爱情电影网av一区二区| 亚洲精品乱码久久久久久久久 | 国产综合色在线视频区| 欧美国产精品日韩| 久久久久久久久免费看无码| 欧美综合在线视频观看| 91精品久久久久久久91蜜桃| 日本一区午夜艳熟免费| 日本少妇一区| 一区二区三区精品| 欧美日韩在线高清| 97超碰人人模人人人爽人人爱| 成人美女视频在线观看| 国产精品www| 成人免费视频网站入口::| 99在线|亚洲一区二区| 中文字幕无线精品亚洲乱码一区| 制服下的诱惑暮生| 国产99久久| 欧美一区二区三区四区五区 | 国产精品第2页| 午夜免费激情视频| 日韩精品电影在线| 久久久天堂国产精品女人| 成人无码av片在线观看| 国产精品99免费看| 最新的欧美黄色| 中文字幕乱码一区| 色97色成人| 日韩激情av在线播放| 日韩视频在线观看一区二区三区| 欧美日韩大片免费观看| 91麻豆精品国产无毒不卡在线观看| 欧美激情 国产精品| 4438五月综合| 欧美在线综合视频| 国产乱子伦农村叉叉叉| 亚洲精品午夜| 777精品伊人久久久久大香线蕉| 99热在线这里只有精品| caoporn成人免费视频在线| 欧美三级韩国三级日本三斤 | xxxx国产视频| 天天色天天射综合网| 日韩高清av在线| 9191在线视频| 久久精品青草| 在线观看欧美www| 亚洲av无码国产精品久久| 国内精品久久久久久久97牛牛| 最新的欧美黄色| 欧美黄色激情视频| 午夜在线精品| 欧美一级大片在线观看| 久久午夜无码鲁丝片| 国产一区二区三区精品视频 | 精品资源在线| 日韩欧美一区二区免费| 国产三级生活片| 日韩欧美大片| 中文字幕亚洲欧美在线| 国产中年熟女高潮大集合| 亚洲一区黄色| 欧美一级淫片播放口| 国产精品第一页在线观看| 国产精品1区2区3区| 91麻豆国产语对白在线观看| 一区二区日韩视频| 自拍偷拍国产亚洲| 一区二区三区视频| 国产95亚洲| 日韩一区二区精品葵司在线 | 在线看片中文字幕| 免费人成黄页网站在线一区二区| 国产精品国产自产拍高清av水多 | 久久成人综合| 自拍偷拍亚洲一区| 青青草华人在线视频| 精品一区二区成人精品| 91精品视频在线看| 国产xxxxxx| 亚洲国产一区在线观看| av网站大全免费| 亚洲素人在线| 中文字幕久热精品视频在线| 男人的午夜天堂| 国产91精品免费| 国产自产在线视频一区| 欧美艳星kaydenkross| 色老头久久综合| 一区二区三区入口| 中文在线日韩| 97视频在线观看视频免费视频| 日韩成人免费在线观看| 国产视频一区二区在线| 一区二区三区我不卡| 88久久精品| 亚洲欧美日韩中文在线制服| 日本少妇xxxxx| 国模少妇一区二区三区| 国产91精品一区二区绿帽| 黑人巨大精品| 欧美一区二区三区精品| 亚洲一级av无码毛片精品| 秋霞午夜鲁丝一区二区老狼| 亚洲最大av网| 欧美不卡高清一区二区三区| 91精品久久久久久久91蜜桃| a级一a一级在线观看| 蜜桃av一区二区| 国产精品久久国产三级国电话系列| 美女福利一区二区| 91精品一区二区三区在线观看| 黄色免费看视频| 精品一区二区久久| 久久久久久草| 国产精品一区免费在线| 日韩电影免费观看中文字幕| 亚洲色图100p| 91麻豆免费看| 成人一区二区av| 成人在线免费小视频| 久久久亚洲国产天美传媒修理工| 中文字幕人成人乱码亚洲电影| 亚洲自拍偷拍网站| 日韩高清第一页| 亚洲女人av| 91原创国产| 欧美亚洲福利| 亚洲免费精彩视频| 国产一卡二卡在线播放| 国产精品国产成人国产三级| 国产91在线免费| 欧美精品午夜| 成人网欧美在线视频| 美女100%一区| 日韩经典第一页| 久久久久久久久99| 亚洲品质自拍视频网站| www.xxx亚洲| 亚洲永久字幕| 黑人中文字幕一区二区三区| 日本免费精品| 日韩中文字幕在线精品| 亚洲综合图片网| 欧美色播在线播放| 国产日韩视频一区| 国产成人av一区二区三区在线观看| 日韩精品久久久毛片一区二区| 日韩精品社区| 国产69精品久久久久9999| 国产精品永久久久久久久久久| 欧美亚洲动漫制服丝袜| 四虎影成人精品a片| 26uuu欧美日本| 国产午夜大地久久| 亚洲人成在线影院| 成人三级视频在线观看一区二区| 年轻的保姆91精品| 欧美成人精品在线| 国内精品久久久久久久久久| 3d成人h动漫网站入口| 视频国产一区二区| 亚洲色图欧洲色图| www激情五月| 久草这里只有精品视频| 一本一道久久久a久久久精品91 | 一区二区国产欧美| 欧美欧美欧美欧美首页| 欧美成人久久久免费播放| 国产精品久久久爽爽爽麻豆色哟哟 | www日本视频| 日韩精品在线网站| 久草视频免费播放| 亚洲国产视频在线| 日韩aaaaa| 久久青草欧美一区二区三区| 黄色国产小视频| 蜜臀精品一区二区三区在线观看| 亚洲精品成人a8198a| 99精品在线观看| 91观看网站| 欧美美女在线直播| 国产不卡视频在线| 日韩第二十一页| 欧美日本中文字幕| 天天色综合av| 亚洲视频自拍偷拍| 国产又黄又猛又爽| 精品福利一区二区三区免费视频| 日本在线视频免费| 欧美午夜精品久久久久久超碰| 疯狂撞击丝袜人妻| 亚洲第一狼人社区| 天天操天天舔天天射| 亚洲欧美日韩国产中文在线| 亚洲911精品成人18网站| 97久久人人超碰| 老司机午夜av| 国产精品888| 久久久999视频| 久久精品免费观看| 精品无码国产一区二区三区av | 日韩人妻精品一区二区三区| 一区精品久久| 日韩高清dvd| 欧美色图首页| 日韩影院一区| 精品电影一区| 亚洲精品国产系列| 亚洲区一区二| 亚洲国产日韩欧美| 精品成人免费| 中文精品一区二区三区| av成人天堂| 在线观看欧美亚洲| 亚洲女人av| 男人天堂新网址| 久久99这里只有精品| 国内精品视频一区二区三区| 久久精品国产99| 欧美 国产 小说 另类| 国产精品乡下勾搭老头1| 免费看a级黄色片| av一二三不卡影片| 亚洲五月激情网| 国产日韩精品一区二区三区在线| 欧美日韩一区二区区| 国产精品入口麻豆九色| 亚洲一级av无码毛片精品 | 色婷婷在线影院| 亚洲自拍偷拍欧美| 无码人妻精品中文字幕| 欧美在线观看禁18| 欧美三日本三级少妇99| 日韩欧美电影在线| 亚洲在线免费观看视频| 亚洲精品视频免费在线观看| 精品久久久久中文慕人妻| 日韩专区在线观看| 四虎4545www精品视频| 97av在线视频免费播放| 亚洲精品黑牛一区二区三区| 成人久久久久久| 欧美大人香蕉在线| 亚洲日本无吗高清不卡| 日韩福利电影在线| 精品99在线视频| 91视频国产观看| 国产精品久久无码| 精品国产福利视频| 国产一级特黄aaa大片| 精品99999| 欧美一区二区三区成人片在线| 欧美另类精品xxxx孕妇| 日本高清久久| av资源一区二区| 伊人激情综合| www在线观看免费| fc2成人免费人成在线观看播放| 中国男女全黄大片| 亚洲一区二区在线免费观看视频| 欧美人禽zoz0强交| 日韩午夜av一区| 成人免费公开视频| 国模吧一区二区| 日韩精品导航| 明星裸体视频一区二区| 久久一二三四| 欧美午夜aaaaaa免费视频| 亚洲欧洲一区二区三区| 国产真实乱在线更新| 日韩一区二区三区精品视频| 国产后入清纯学生妹| 久久99视频免费| 日韩电影不卡一区| 欧美国产综合视频| 美女一区二区久久| 九九热99视频| 樱桃视频在线观看一区| 久久精品视频6| 亚洲精品色婷婷福利天堂| 日韩制服诱惑| 亚洲一区国产精品| 亚洲国产精品一区| 色婷婷综合久久久久中文字幕 | 精品久久久久久久久久久| 久久精品一二区| 这里只有精品视频在线| 激情久久免费视频| 国产精品久久久对白| 久久性天堂网| 亚洲综合20p| 午夜欧美视频在线观看| 中文字幕高清在线免费播放| y97精品国产97久久久久久| 911亚洲精品| 欧美一区亚洲二区| 国产精品影音先锋| 亚洲精品视频久久久| 在线91免费看| 五月婷在线视频| 91夜夜未满十八勿入爽爽影院| 亚洲日产国产精品| 国产野外作爱视频播放| 亚洲图片欧美综合| 青青艹在线观看| 久久久久久亚洲精品| 成人黄色av| 国产一区二区三区小说| 中文字幕免费在线观看视频一区| 在线观看成人毛片| 国产一区二区激情| 国产精品极品国产中出| 亚洲视频sss| 久久这里都是精品| 九九视频免费在线观看|