软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
The difference between PASV FTP and Normal FTP

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

With regards to the difference between PASV FTP and Normal FTP:

Both PASV FTP and Normal FTP work in the same manner for the initial
"Control Channel" connection, which occurs as follows:

The external user allocates two port numbers for the FTP session.  The first
port number is reflected in the connection that's used to TCP port 21, on
the FTP server.  This is referred to as the "Control or Command Channel".
The usage of the second port number allocated by the external user, as well
as how the connection is established is where the difference occurs...

If the external user sends the FTP server a PORT  (Normal FTP) command,
which also contains the second allocated port number inside the data of the
packet.  Then the FTP server initiates the next connection to the external
user.  This occurs from TCP port 20 (on the FTP server) to whatever the
allocated second port number is.  This is referred to as the "Data Channel"
connection.

If you've noticed, it's the FTP server which initiated the connection
outbound, to the external user.  In the world of security and firewalls,
this can be a very bad thing.  Hence, the reason why PASV FTP was created.
This is also a reason why some FTP servers do not accept the PORT command.

If the user sends the FTP server a PASV (PASV FTP) command, then the FTP
server responds back to the external user with a port number that it has
allocated.  SPECIAL NOTE:  The port number to be used, AS WELL AS the FTP
server's IP Address is embedded inside the data of the packet sent to the
external user.

When the user receives this packet, the external user initiates the "Data
Channel" connection from its second allocated port number, to the IP Address
and port number provided from the FTP server.

See the difference?  In a PASV connection, the "Data Channel" is
initiated/created by the external user.  In a Normal connection, it's
established by the FTP server.

Note: All web browsers use PASV FTP as its means of FTP.  Although I have
heard a rumor that Internet Explorer 5.0 will support both.  I have yet to
confirm this...

Now, let's look at the "Special Note"...

To reiterate, in a PASV FTP session, the FTP server tells the external user
what the FTP servers' IP Address is, as well as what port number to initiate
an inbound connection to.

If you're using NAT (Network Address Translation), the FTP server is
probably going to be an IP Address within the established "Private Range"
(although that really isn't the issue).  Now, say for instance the FTP
server is 192.168.100.10 and an external user is trying to initiate a PASV
FTP session to this FTP server.  Because the IP Address 192.168.100.10 as
well as the port number is embedded inside the packet and because a lot of
NAT implementations cannot "rewrite" this information.  The external user
receives this information and will try to initiate the "Data Channel"
connection to an IP Address (192.168.100.10) that will never leave their
local LAN.  Hence PASV FTP fails inbound through NAT.

I hope I've explained this well enough...


相关文章

相关软件