當前位置:首頁 » 文件傳輸 » ftp連接是長連接還是短連接
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

ftp連接是長連接還是短連接

發布時間: 2022-12-20 04:44:07

Ⅰ 思科ftp連接有哪兩個特徵

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

Ⅱ ftp的三種埠模式都是哪些如何工作的

FTP是File Transfer Protocol(文件傳輸協議)的縮寫,用來在兩台計算機之間互相傳送文件。相比於HTTP,FTP協議要復雜得多。復雜的原因,是因為FTP協議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與伺服器之間傳遞命令;另一個是數據鏈路,用來上傳或下載數據。

FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。

1. PORT(主動)方式的連接過程是:
客戶端向伺服器的FTP埠(默認是21)發送連接請求,伺服器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴伺服器:「我打開了XXXX埠,你過來連接我」。於是伺服器從20埠向客戶端的XXXX埠發送連接請求,建立一條數據鏈路來傳送數據。

2. PASV(被動)方式的連接過程是:
客戶端向伺服器的FTP埠(默認是21)發送連接請求,伺服器接受連接,建立一條命令鏈路。當需要傳送數據時,伺服器在命令鏈路上用PASV命令告訴客戶端:「我打開了XXXX埠,你過來連接我」。於是客戶端向伺服器的XXXX埠發送連接請求,建立一條數據鏈路來傳送數據。

概括:
--------------------------------------------------------------------------------
主動模式:伺服器向客戶端敲門,然後客戶端開門
被動模式:客戶端向伺服器敲門,然後伺服器開門
所以,如果你是如果通過代理上網的話,就不能用主動模式,因為伺服器敲的是上網代理伺服器的門,而不是敲客戶端的門
而且有時候,客戶端也不是輕易就開門的,因為有防火牆阻擋,除非客戶端開放大於1024的高端埠

--------------------------------------------------------------------------------
3.單埠模式
除上述兩種模式之外,還有一種單埠模式。該模式的數據連接請求由FTP伺服器發起。使用該傳輸模式時,客戶端的控制連接埠和數據連接埠一致。因為這種模式無法在短時間連續輸入數據、傳輸命令,因此並不常用。

Ⅲ ftp客戶和伺服器間傳遞ftp命令時,使用的連接是tcp還是udp

ftp客戶和伺服器間傳遞ftp命令時,使用的連接是tcp。

FTP協議是基於傳輸層TCP協議的。FTP的控制連接使用埠21,用來傳輸控制信息(如連接請求、傳送請求等),數據連接使用埠20,用來傳輸數據。

控制連接的特點是:

1、以客戶一伺服器方式建立。

2、伺服器以被動方式打開用於FTP的埠21,等待客戶的連接。

3、客戶則以主動方式打開TCP埠21,來建立連接。

4、控制連接始終等待客戶與伺服器之間的通信。該連接將命令從客戶傳給伺服器,並傳回伺服器的應答。由於命令通常是由用戶鍵入的,所以IP對控制連接的服務主要責任就是「最大限度地減小遲延」。

(3)ftp連接是長連接還是短連接擴展閱讀:

FTP協議包括兩個組成部分,其一為FTP伺服器,其二為FTP客戶端。其中FTP伺服器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位於FTP伺服器上的資源。

在開發網站的時候,通常利用FTP協議把網頁或程序傳到Web伺服器上。此外,由於FTP傳輸效率非常高,在網路上傳輸大的文件時,一般也採用該協議。

默認情況下FTP協議使用TCP埠中的 20和21這兩個埠,其中20用於傳輸數據,21用於傳輸控制信息。但是,是否使用20作為傳輸數據的埠與FTP使用的傳輸模式有關,如果採用主動模式,那麼數據傳輸埠就是20;如果採用被動模式,則具體最終使用哪個埠要伺服器端和客戶端協商決定。

Ⅳ FTP的兩種連接分別是

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

Ⅳ FTP協議有兩種工作方式是什麼

Ftp協議的兩種工作模式:主動模式active和被動模式passive



FTP 是一種數據傳輸協議 (File Transfer Protocol),它的連接模式有兩種: 主動模式( active )和被動模式( passive )。



以下說明FTP的連接是怎樣建立的:



在 active 模式下 (一般預設的模式):



FTP client 開啟一個隨機選擇的TCP port 呼叫 FTP server 的 port 21請求建立連接。當完成 Three-Way Handshake 之後,連接就成功建立,但這僅是命令通道的建立。

當兩端需要傳送數據資料的時候,client 透過命令通道用一個 port command 告訴 server ,client可以用另一個TCP port 做數據通道。

然後 server 用 port 20 和剛才client 所告知的 TCP port 建立數據連接。注意:連接方向是從server 到 client 的,TCP 分組中會有一個 SYN flag。

然後 client 會返回一個帶 ACK flag的確認分組,並完成另一次的 Three-Way Handshake 過程。這時候,數據連接才能成功建立。開始數據傳送。



在 passive 模式下:



FTP client 開啟一個隨機選擇的TCP port 呼叫 FTP server 的 port 21請求建立連接,完成命令通道的建立。

當兩端需要傳送數據的時候,client 通過命令通道發送一個 PASV command 給server,要求進入 passive 傳輸模式。

然後 server 像上述的正常模式之第 2 步驟那樣,挑一個TCP port ,並用命令通道告訴 client。

然後 client 用另一個TCP port 呼叫剛才 server 告知的 TCP port 來建立數據通道。此時分組中帶有 SYN flag。

server 確認後回送一個 ACK 分組。並完成所有握手過程、成功建立數據通道。

開始數據傳送。 在實際使用中, active mode 用來登入一些架設在主機上沒有安裝防火牆的 FTP server,或是架設在 client side 的 FTP server! Passive mode (簡稱 PASV)用來登陸一些架設於防火牆保護下而又是開設於主機上的 FTP server!

Ⅵ Socket,http長連接與短連接

在網路層有IP協議,ICMP協議,ARP協議,RARP協議和BOOTP協議.
在傳輸層中有:TCP協議與UDP協議.
在應用層有:通過TCP協議來通信的應用層協議包括FTP,HTTP,TELNET,SMTP協議. 通過UDP協議來通信的應用層協議包括DNS,TFTP等;

連接->數據傳輸->關閉連接
HTTP是無狀態的,瀏覽器和伺服器每進行一次HTTP操作,就建立一次連接,單任務結束後就中斷連接.也可以這樣說:短連接是指Socket連接後發送後接收完數據後馬上斷開連接.

連接->傳輸數據->保持連接->傳輸數據->….->關閉連接
長連接指建立socket連接後不管是否使用都保持連接,但安全性較差.

http的長連接
HTTP也可以建立長連接的,使用Connection:keep-alive,HTTP1.1默認進行持久連接,HTTP1.1和HTTP1.0相比較而言最大的區別就是添加了持久連接支持(貌似最新的http1.0可以顯示的指定keep-alive)但還是無狀態的,或者說是不可信任的.

長連接多用於操作頻繁,點對點的通訊,而且連接數不能太多情況.每個TCP連接都需要三步握手,這需要時間,如果每個操作都是先連接在操作的話那麼處理時間會降低很多,所以每個操作完後都不斷開,次處理時直接發送數據包就OK了,不用再次建立連接.例如即使通訊環信底層用的就是長連接聊天過程中為了保證消息的實時性,保持長連接進行會話!

而web網站的http服務一般用短連接,因為長連接對於服務端來說會耗費一定的資源,而像web網站這樣頻繁成千上萬甚至上億客戶端的連接用短連接會更省資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都佔用一個連接的話,並發數會很大,這樣後台伺服器有承受很大的壓力,所以這種情況小用短連接會比較好.

Socket是應用層與TCP/IP協議通訊的中間軟體抽象層,它是一組介面,在設計模式中,socket其實就是一個門面模式,它把復雜的TCP/IP組協議隱藏在了socket介面後面,對用戶來說簡單的介面就是全部,讓socket去組織數據,以符合指定的協議.
主機A的應用程序要和主機B的應用程序進行通信,必須通過socket建立連接,而建立socket連接必須通過底層的TCP/IP協議建立TCP連接,建立TCP連接需要底層IP協議來定址網路中的主機.我們知道網路中的IP協議可以幫助我們根據IP地址來找到目標主機但是一台主機上可能運行著多個應用程序,如何才能與指定的應用程序通信就要通過TCP和UDP的地址也就是埠號來指定,這樣就可以通過socket實例唯一代表一個主機上的一個應用程序的通信鏈路了.

(1)第一次握手:Client(客戶端)將標識位SYN(發起一個新連接)置為1,隨機產生一個(序號:發送數據對其標識)seq=J,並將該數據發送給server(伺服器),Client(客戶端)進入SYN_SENT狀態,等待Server確認.
(2)第二次握手:Server收到數據包後由SYN=1知道Client請求建立連接,Server將SYN和ACK都置為1,ack=J+1;.隨機產生一個seq=k,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態.
(3)第三次握手:Client收到確認後,檢查ack是否為J+1,ACK是否為1,如果正確則將標識位ACK置為1,ack=k+1;並將數據包發送給Server,Sever檢查ack是否為k+1,ACK是否為1,如果正確則建立連接Client和server進入ESTABLISHED狀態,完成三次握手,隨後Client和Server之間可以開始傳輸數據了.

(1)第一次揮手:Client發送一個FIN(釋放一個連接),用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
(2)第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。
(3)第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK(確認序號有效)狀態.
(4)第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。

Q1 : HTTP Socket TCP UDP都是什麼?
HTTP 全稱是超文本傳輸協議,是一個應用層的協議。用於客戶端和服務端之間進行通訊。
TCP/UDP 都是傳輸層協議。TCP是可靠的,我們常說的三次握手連接,四次握手斷開都是說的TCP。而UDP是不可靠的。
Socket 則是從傳輸層抽象出來的介面層。

Q2 : HTTP連接和Socket連接有什麼區別?分別在什麼情況下使用?
HTTP 是基於TCP的短連接。需要經過三次握手建立連接,且無法保持始終連接。
Socket 是長連接。基於TCP的Socket連接,一旦建立三次握手,除非一方主動斷開,否則連接狀態一直保存。也可以基於UDP進行Socket連接。
HTTP連接,服務端無法主動發消息,採用的是'請求-響應'機制。客戶端沒有發消息給服務端,服務端無法推送消息給客戶端。
Socket連接,一方可以隨時向另一方發起會話。
雙方不需要時刻保持連接在線用HTTP。eg : 客戶端資源獲取、上傳文件等。
即時通訊應用需要用Socket連接。eg : 微信、蘋果的APNs等。

Q3 : HTTPS是什麼?和HTTP有什麼區別?
HTTPS就是HTTP加上SSL/TLS。TLS(Transport Layer Security)傳輸層安全協議,作用是在傳輸層對網路連接加密。SSL就是TLS的前身。
HTTP埠是80,是無狀態的。HTTPS埠是443,是可以進行加密傳輸、身份認證的網路協議。

Ⅶ ftp為什麼不需要長鏈接

是不能長連接嗎?這個是因為伺服器的設備,FTP空閑的時候過幾分鍾會自動斷線的,這是為了環節伺服器的壓力的。

Ⅷ FTP的連接方式有什麼區別啊port,pasv,eprt,epsv

主動連接
PORT
和被動連接
PASV
方式
他們的區別就是在連接上伺服器之後創建數據通道的時候:
PORT
模式是建立從伺服器高埠連到客戶端20埠數據連接
PASV
模式是建立客戶高埠連到伺服器返回的數據埠的數據連接
PORT(主動)方式的連接過程是:客戶端向伺服器的FTP埠(默認是21)發送連接請求,伺服器接受連接,建立一條命令鏈路。當需要傳送數據時,伺服器從20埠向客戶端的空閑埠發送連接請求,建立一條數據鏈路來傳送數據。
PASV(被動)方式的連接過程是:客戶端向伺服器的FTP埠(默認是21)發送連接請求,伺服器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端向伺服器的空閑埠發送連接請求,建立一條數據鏈路來傳送數據。
FTP僅僅提供了建立在IPv4上進行數據通信的能力,它基於網路地址是32位這一假設。但是,當IPv6出現以後,地址就比32位長許多了。原來對FTP進行的擴展在多協議環境中有時會失敗。針對IPv6對FTP再次進行擴展,兩個FTP命令PORT和PASV通過擴展後,我們稱它們為EPRT和EPSV。

Ⅸ 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不很了解的朋友。