ftp主動模式與被動模式-為什麼連接不上FTP伺服器
ftp不同於一般的服務,該服務需要同時開啟兩個端口,一個端口是命令通道,另一個端口為資料傳輸通道。根據資料傳輸通道建立的不同,分為了主動模式和被動模式。這裡,詳細的講述下主動模式的工作流程,以及碰到問題如何解決。
主動模式流程
命令通道的建立。客戶端會隨機取出一個大於1024的連接埠與伺服器端的21連接埠建立連接,當連接建立好的以後,客戶端就可以透過該連接來對ftp服務執行指令,例如查詢檔案名稱、上傳檔案、下載檔案等命令都是透過該通道來執行的。
通知服務端使用主動模式。 21連接埠只是用來進行命令的執行,對於真正需要檔案的傳輸則需要另起連接埠來操作。客戶端會隨機再開啟一個端口用於文件傳輸,然後通過21端口告知ftp伺服器兩個信息,客戶端用戶文件傳輸的端口,採用主動模式進行文件傳輸。
ftp伺服器主動向客戶端建立連線。當ftp服務端知道了兩個資訊後,會主動的透過20埠與客戶端建立連線。該連線建立好之後,檔案就可以透過該連線進行傳輸。
主動模式可能遇到的問題
在主動模式下連接不了ftp伺服器,可能有以下幾種情況:
服務端連接埠未啟動
服務端防火牆
-
用戶端所在區域網路有nat轉換
主動模式下,一般開啟的連接埠為21(指令通道)、20(檔案傳輸通道)。兩個連接埠缺一不可。另外防火牆也需要放行這兩個連接埠。針對客戶端主機,可以透過telnet測試這兩個連接埠是否開放。
對於連接埠及防火牆的問題比較容易解決,而NAT轉換問題就很難解決了。我們再來看nat轉換是如何導致問題的出現的,對於命令通道的建立因為是由客戶端發起的,所以該通道可以成功建立。但是當服務端主動向客戶端建立資料通道時,因為服務端知道的是NAT的IP,並不是客戶端的IP。因此服務端會以20埠向NAT的其中一個連接埠(例如1042埠)發送主動連線的請求。但是NAT並沒有開啟那個端口,所以主動連接建立失敗。那麼,如何解決這個問題呢?使用被動模式即可。
被動式模式流程
命令通道的建立。這個階段和主動模式一樣。
客戶端發出PASV的連結請求。客戶端透過命令通道,向服務端發送PASV被動模式的請求,並等待服務端的回應。
服務端啟動資料端口,並告知客戶端。當服務端收到客戶端的PASV請求後,那麼就會啟動一個連接埠用作資料傳輸。這個連接埠可以是隨機的(1024~65535)、也可以指定。然後,透過命令通道告知客戶端。
客戶端啟動資料端口,與服務端建立連線。客戶端收到了服務端的訊息,知道了服務端用於資料傳輸的端口,這個時候客戶端就會隨機開啟一個大於1024的端口,然後透過這個端口與服務端建立連接。
更多相關技術文章,請造訪linux系統教學欄位!
以上是ftp主動模式與被動模式-為什麼連接不上FTP伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

1.安裝nginx2.安裝vsftpd3.修改nginx的設定檔nginx.conf 3.1首行新增ftp的用戶userftpuser; 3.2設定相關路徑server{ listen80; 站的代理伺服器的連接埠; root /home/ftpuser; #代理ftp伺服器的資料夾的絕對路徑indexftpuser; #設定歡迎頁

隨著網際網路的快速發展,檔案傳輸協定(FTP)一直是一種重要的檔案傳送方式。在Go語言中,使用FTP傳輸檔案可能是許多開發人員的需求。然而,也許很多人並不知道如何在Go語言中使用FTP。在本篇文章中,我們將探討如何在Go語言中使用FTP,從連接FTP伺服器到檔案傳輸,以及如何處理錯誤和異常。建立FTP連線在Go語言中,我們可以使用標準的"net"套件來連接FTP

linux下ftp指令有:1、ftp指令;2、close指令;3、disconnect指令;4、open指令;5、user指令;6、account指令;7、bye指令;8、quit指令;9、help指令;10、rhelp命令;11、ascii命令;12、binary/bi命令;13、bell命令等。

PHP與FTP:在網站開發中實現多個部門的文件共享隨著互聯網的發展,越來越多的企業開始借助網站平台進行資訊發布和業務推廣。然而,隨之而來的問題是如何實現多個部門之間的文件共享和協作。在這種情況下,PHP和FTP成為了最常用的解決方案之一。本文將介紹如何利用PHP和FTP在網站開發中實現多個部門的檔案分享。一、FTP介紹FTP(FileTransferPr

如何透過PHP在FTP伺服器上進行目錄和文件的比較在web開發中,有時候我們需要比較本地文件與FTP伺服器上的文件,以確保兩者之間的一致性。 PHP提供了一些函數和類別來實作這個功能。本文將介紹如何使用PHP在FTP伺服器上進行目錄和檔案的比較,並提供相關的程式碼範例。首先,我們需要連接到FTP伺服器。 PHP提供了ftp_connect()函數來建立與FTP伺服器

linux ftp530的意思是linux ftp登入報錯530,其解決方法:1、查看「cat /etc/shells」是否有你使用者的主目錄和登入shell,若是沒有,則進行新增;2、檢視「/var /log/secure」文件,重新設定密碼過期時間即可。

如何用PHP實作FTP檔案上傳進度條一、背景介紹在網站開發中,檔案上傳是常見的功能。而對於大檔案的上傳,為了提高使用者體驗,我們常常需要向使用者顯示一個上傳進度條,讓使用者知道檔案上傳的進程。本文將介紹如何使用PHP實作FTP檔案上傳進度條的功能。二、FTP檔案上傳進度條的實現方法基本思路FTP檔案上傳的進度條實現,通常是透過計算上傳的檔案大小和已上傳檔案大小

FTP簡介FTP即檔案傳輸協定(FileTransferProtocol),是用於在網路上進行檔案傳輸的一種標準協定。 FTP客戶端可以將檔案從本機上傳到伺服器或從伺服器下載到本機。 ftplib模組Python提供了一個標準函式庫ftplib,用於在Python中實作FTP客戶端的功能。使用ftplib,我們可以連接到FTP伺服器,執行各種FTP操作,如上傳和下載檔案等。程式碼解釋下面是一個使用Python透過FTP上傳檔案的範例程式碼:fromftplibimportFTPimportargparsed
