FTP的工作方式:Active FTP 及 Passive FTP

本文详细解释了FTP的主动模式和被动模式的工作原理,并探讨了这两种模式在防火墙环境中可能遇到的问题及其解决方法。

為何常常連上 FTP 站台後,進去後就停留且無法列表?

防火牆有很多種,其中有一些會禁止那些不是從內部網路IP發出的連接請求。而FTP協議是個很老的東東,沒有考慮這個問題。可以這樣簡單描述一般FTP的工作原理:Client對Server發出請求:「嗨,我的xx Port正等著你傳送資料呢,Sever聽到這個請求,就會建立一個連接,指向這個Port,並且開始傳送資料。這就回到了我們的問題,如果發出請求的Client在防火牆的後面,而這個防火牆禁止外部IP建立連接,那麼當然Server(在外部)不能建立與Client的連接。

所以,過了幾年,人們修改了FTP協議以應付這種情況。這就是Passive Mode,工作原理如下:Client向Server發出Passive命令,Server回答說:「資料在xx Port等你,自己來拿。」而這回則由Client建立指向Server的連接,從而取得資料。這就避免了防火牆的限制。

FTP是一種文件傳輸協議,它支持兩種模式,一種方式叫做Standard(也就是Active,主動方式),一種是Passive(也就是PASV,被動方式)。Standard模式FTP的客戶端發送PORT命令到FTP Server。Passive模式FTP的客戶端發送PASV命令到FTP Server。

而在大部份的防火牆設定中,使用 FTP 傳輸檔案時經常會遇到需要設定使用 Passive Mode 的 FTP,但大部份的 FTP client 軟體,default 大都是 Active Mode FTP,這二種 FTP 模式在傳輸上有何不同?先了解 FTP 的工作方式,有助於了解 active FTP 及 passive FTP 的不同。

一般的 FTP 使用 TCP port 20 及 21 二個 port,正常來說, port 20 是傳輸資料用,而 port 21 傳輸命令,但事實上並不是一直使用 port 20 來傳輸資料。

Active Mode FTP (主動模式 FTP) 

 


在 Active 模式的 FTP client 一開始時會先使用一個大於 1024(N) 的 TCP port 連結至 FTP server 的port 21,然後 FTP client 會打開該 port 的下一個數字的 port (N+1) 並送至 FTPserver 說期望下次的溝通可以經由新的 port (N+1),這樣比較不會占用到 FTP server 的 port 21 而影響別的 FTP sessions,同時 FTP server 會使用 port 20 連結至 FTP client 新送過來的 port 號來傳資料。
所以在防火牆上需要打開: 

FTP server port 21 from anywhere # 給 FTP client 開始連接 
FTP server port 21 to port > 1024 # 給 FTP server 回應 client 命令 
FTP server port 20 to port > 1024 # 給 FTP server 開始資料傳輸 
FTP server port 20 from port > 1024 # 給 FTP cleint 傳送 data ACK 給 server 

所以連接順序為: 
1. FTP client use TCP port 1026 for command to FTP server command port 21 
2. FTP server use TCP port 21 responed to FTP client command port 1026 
3. FTP server use TCP port 20 for sending data to FTP client data port 1027 (1026 + 1) 
4. FTP client use TCP port 1027 ( 1026 + 1) for data ACK to FTP server port 20 

問題在於使用 Active Mode FTP 時主控權在 FTP client,FTP client 並不是真正的連至 FTP server 的data port (TCP port 20),它只是告訴 FTP server 它準備在那個 port 接收資料及port+1 傳送 ACK,並期望 FTP server 可以主動連接至 FTP client 所期望的 port,這在使用防火牆的環境中就會造成問題。

Passive Mode FTP (被動模式 FTP) 

 


解決主動模式在防火牆外面時所發生無法連接的問題,可以用被動模式 FTP,在Passive Mode FTP 下,FTP client一開始和 Active Mode FTP 一樣,打開二個 port (N > 1024 及 N+1),使用第一個port 連接至 FTP server的 port 21,並送出命令 PORT 讓 server 連至 N port 再送出 PASV 命令給 server,這樣會造成 server使用 一個大於 1024 的 port 連接至 client 並送出命令 PORT N ( N >1024 ) 給client,這樣 client 就會使用 N + 1 並開始傳輸資料。

這樣子在防火牆上需要設定:

FTP server TCP port 21 from anywhere # FTP client 開始連接至 FTP server 
FTP server TCP port 21 to port > 1024 # FTP server 回應 client 控制 
FTP server TCP port > 1024 from anywhere # FTP client 資料傳輸 
FTP server TCP port > 1024 to client port > 1024 # FTP server 回應資料 ACK至 client data port 

連接順序為: 
1. FTP client use TCP port 1026 to FTP server command port 21 via command PASV 
2. FTP server use TCP port 21 to FTP client 1026 command port for reply data port 2024 
3. FTP client use TCP port 1027 (N+1) to FTP server 2024 for data transmit and ACK 
4. FTP server use TCP port 2024 to FTP client for data transmit and ACK 

因為 Passive Mode FTP 是由 FTP server 發起一個大於 1024 的 port 至 client,在防火牆上的設定就相對簡單,而可以傳輸資料而不會被防火牆 block。因為FTP Server會開放一個隨機的高Port,儘管在IIS4和IIS5裡面Port的範圍是1024-5000,但是許多FTP Server的Port範圍卻可達到了1024-65535,這個時候在這個主動開放的隨機Port上是有完全的訪問權限喔,如果IIS也要設置成開放的Port為1024-65535,設置方法如下:

1. regedt32
2. 找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
3. 編輯→新增→數值→ValueName:MaxUserPortDataType:REG_DWORDValue:65534

現在的FTP軟體裡面包括在IE5以上的版本裡面,也已經支持這兩種模式了。一般一些FTP客戶端的軟體就比較好設置了,一般都有一個PASV的選項,比如CuteFTP,傳輸的方式都有Standard和PASV的選項,可以自己進行選擇;另外在IE裡面如果要設置成PASV模式的話,可以在工具→網際網路選項→進階→使用被動式FTP(啟用),否則就採用Standard模式。

所以如果遇到了有防火牆或者怕配置麻煩的話,還是採用PASV模式比較好些,但是如果真的對安全的需求很高的話,建議採用Standard模式。如何設置Standard模式?首先要建立一條規則就是允許內部的IP連接外部的IP的21 Port;第二條就是禁止外部IP的TCP 20 Port連接內部IP小於1024的Port,這條是為了防止外部連接內部的一般Port;第三條驗證ACK是否等於1,這個的原理就要參見TCP建立連接的三方交握了。

在 Windows 下原來的 ftp client 並沒有 passive 這個指令,但可以利用 literal 指今來下給 FTP server FTP session 為 Passive Mode。方法如下: 

C:/>ftp 10.10.100.121 
Connected to 10.10.100.121. 
220 (vsFTPd 2.0.1) 
User (10.10.100.121:(none)): ftp 
331 Please specify the password. 
Password: 
230 Login successful. 
ftp> literal pasv 
227 Entering Passive Mode (10,10,100,121,242,172) 
ftp> 

可以看到進入 Passive Mode 了.使用的 port 號碼是 (242*256)+172= 62124

若是 UNIX,但 FTP client 不支援 Passive Mode 指令,可以用 quote pasv。
Linux 作業系統的話,則可以利用 Passive 指令來切換。

 

 

References:

http://vbb.twftp.org/showthread.php?t=9095

 

http://slacksite.com/other/ftp.html

内容概要:本文提出了一种基于瞬态三角哈里斯鹰算法(TTHHO)的多无人机协同集群在三维空间中的避障路径规划方法,旨在通过优化路径长度、飞行高度、威胁规避和转弯角度等关键因素,实现以最低综合成本为目标的全局路径规划。该方法结合智能优化算法与多智能体协同机制,在复杂三维环境中有效解决动态障碍物规避与飞行安全性问题,并通过Matlab平台进行算法编码实现与仿真实验,验证了其在路径最优性、收敛速度和避障能力方面的优越性能。研究涵盖了三维空间建模、目标函数构建、约束条件处理及多无人机协同策略设计,提升了无人机系统在实际应用场景中的自主导航与智能化决策水平。; 适合人群:具备一定编程基础,熟练掌握Matlab仿真环境,从事无人机路径规划、智能优化算法、多智能体协同控制等相关方向研究的科研人员、工程技术人员及研究生。; 使用场景及目标:① 实现多无人机在复杂三维环境下的协同避障路径规划,确保飞行安全与任务效率;② 研究基于哈里斯鹰算法及其改进版本(如TTHHO)的智能优化机制在路径规划中的应用;③ 推动多目标优化(路径最短、能耗最低、威胁最小、飞行平稳)下无人机自主导航系统的开发与落地; 阅读建议:此资源以Matlab代码实现为核心支撑,建议读者深入理解TTHHO算法原理的基础上,结合文中提供的仿真模型进行代码调试与参数调优,进一步探索不同环境设置和约束条件下算法的适应性与鲁棒性,鼓励通过扩展威胁模型或引入通信延迟等现实因素开展深化研究。
内容概要:本文档聚焦于“三相并网逆变器虚拟阻抗+统一有源阻尼策略SVPWM+SPWM调制仿真”这一核心技术主题,系统研究了在三相并网逆变系统中引入虚拟阻抗与统一有源阻尼的控制策略,旨在提升系统在弱电网条件下的稳定性、动态响应能力及并网电能质量。通过Simulink仿真平台,详细构建了包含SVPWM(空间矢量脉宽调制)与SPWM(正弦脉宽调制)两种主流调制方式的控制系统模型,深入对比分析了不同调制策略对系统性能的影响,并验证了所提出策略在抑制LC谐振、降低电流畸变、增强系统鲁棒性方面的有效性。文档还整合了大量电力电子与新能源领域的相关仿真研究案例,涵盖光伏逆变、储能控制、微电网调度、VSG控制等多个方向,展现出丰富的技术内涵和扎实的工程应用背景。; 适合人群:适用于具备电力电子技术、自动控制理论及新能源发电系统等相关专业知识背景的科研人员、电气工程类研究生以及从事并网逆变器、微电网控制、电力系统仿真等方向的工程技术人员。; 使用场景及目标:① 深入理解并掌握虚拟阻抗与统一有源阻尼技术在三相并网逆变器中的设计原理与实现方法;② 对比分析SVPWM与SPWM调制策略在系统稳定性、谐波抑制和动态性能上的差异;③ 基于Simulink平台进行逆变器并网控制算法的建模、仿真与验证,服务于高水平科研项目、学位论文撰写或实际工程项目开发。; 阅读建议:建议读者结合文档中提及的Simulink仿真模型及相关代码资源,亲自动手搭建和调试核心控制回路,重点关注虚拟阻抗的参数整定、电流内环与电压外环的协同控制结构、以及SVPWM/SPWM调制模块的具体实现细节,从而深化对系统稳定机理和高性能控制策略的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值