查看: 30911|回复: 8

关于ftp的port模式的疑问

[复制链接]
发表于 2007-1-16 16:48:00 | 显示全部楼层 |阅读模式
今天发现这样一个问题,特发来请教坛友们。先说网路环境,内网采用宽带路由器上网,分配的193.168.30.0/24作为内网ip地址段。测试pc的ip为193.168.30.231,在测试pc上通过cmd命令行执行ftp命令(因为命令行下的ftp仅支持port模式,远端服务器也要求采用该模式),同时在该机启动抓包软件进行捕获整个ftp登陆过程。该捕获截图如附件,问题在于为何远端的服务器能够主动与我打开的端口建立连接呢?这是nat对ftp协议的特殊处理么还是什么原因?

以下摘自网上对pasv和port模式的简单描述
“先简单解释一下pasv和port模式的区别:
    pasv就是服务器告诉你服务器的数据传输地址加端口, 你去连.
    port(active)是你告诉服务器你的地址和端口, 让服务器来连你. ”

[ 本帖最后由 ValorZ 于 2007-1-17 17:15 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2007-1-17 14:54:04 | 显示全部楼层
呵呵,楼主的这个问题提的很好,你的这个FTP能够建立起连接确实是由于NAT设备做了特殊处理后才正常的。

就搂主的情况来说吧,你在你的本机上开通了2709这个端口,外网FTP Server来连的是NAT设备的WAN(外网)口,而这个端口如果在WAN口在没有被打开的话,通过NAT设备是会被Reset的,但是连进来了,就说明在上图的第15个数据包,发出去的时候,NAT会去窥探这个FTP数据包里面的内容,找到“193,168,30,231,10,149”,自己算出这个2709端口,然后在NAT表项里面添加一条从外到内的映射表项在WAN口打开2709这个端口。以后的事情就很清楚了,FTP Server来连接2709这个端口的时候,NAT设备就自动将请求转发给了内部的193.168.30.231这台电脑。
有关NAT的详细原理请参照网上各种资料,相信会对你有很大的帮助。

随便提一下,只有像FTP这种特殊的应用,NAT才会去窥探TCP数据区的内容,一般的TCP/UDP数据包NAT设备只是对IP和端口做映射,不会去窥探数据区的内容。

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2007-1-17 15:31:35 | 显示全部楼层
原帖由 huamao2006 于 2007-1-17 14:54 发表
呵呵,楼主的这个问题提的很好,你的这个FTP能够建立起连接确实是由于NAT设备做了特殊处理后才正常的。

就搂主的情况来说吧,你在你的本机上开通了2709这个端口,外网FTP Server来连的是NAT设备的WAN(外网) ...



多谢。。
今天俺在内网做了个试验测试,发现nat的确对于ftp是有特殊处理的。具体的区别详细见附件贴图。
简单解释以下试验的网络环境。       pc1 ----- nat-------ftp

pc1   10.0.0.2  
nat    lan:   10.0.0.1 wan :   193.168.30.120
ftp    193.168.30.198

图一在pc1上的捕获,图二在ftp服务器上的捕获。



事后做了该PDF文档以作纪念。倘有不当指出欢迎指正。

[ 本帖最后由 1259 于 2007-1-20 09:37 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2007-1-18 16:17:33 | 显示全部楼层
1259的自问自答和huamao2006的回答都很精彩,加分鼓励。

目前来讲,这种解释比较有理,但我查阅了一些资料,都没有查到相应的理论依据,在RFC中也未找到相应的解释(也许是看得不细致)。奇怪!

有哪位兄弟知道相应的知识,希望贡献出来啊,呵呵!

另外,1259的第一张图,是不是改过FTP DATA的端口?数据端口是44000?
回复

使用道具 举报

 楼主| 发表于 2007-1-18 16:25:35 | 显示全部楼层
原帖由 菜鸟人飞 于 2007-1-18 16:17 发表
1259的自问自答和huamao2006的回答都很精彩,加分鼓励。

目前来讲,这种解释比较有理,但我查阅了一些资料,都没有查到相应的理论依据,在RFC中也未找到相应的解释(也许是看得不细致)。奇怪!

有哪 ...



第一张图是实际环境的捕获,其中的FTP服务器是处在远端的NAT设备后的(做过端口映射),我想应该是FTP服务器实际采用20端口主动发起连接,但是经过NAT转换后变为44000的。

后两张为试验环境抓图。
回复

使用道具 举报

发表于 2007-1-18 16:33:22 | 显示全部楼层
哦,原来如此。刚才还奇怪了一阵。呵呵,多谢解答。
回复

使用道具 举报

发表于 2007-1-31 17:42:58 | 显示全部楼层
很想清楚其中的一些细节问题
回复

使用道具 举报

发表于 2007-2-3 01:31:00 | 显示全部楼层
rfc2663中不是有这么一段么?(ALG——Application Level gateway )
7.1. FTP support

   "PORT" command and "PASV" response in FTP control session payload
   identify the IP address and TCP port that must be used for the data
   session it supports. The arguments to the PORT command and PASV
   response are an IP address and a TCP port in ASCII. An FTP ALG is
   required to monitor and update the FTP control session payload so
   that information contained in the payload is relevant to end nodes.
   The ALG must also update NAT with appropriate data session tuples and
   session orientation so that NAT could set up state information for
   the FTP data sessions.

   Because the address and TCP port are encoded in ASCII, this may
   result in a change in the size of packet.  For instance,
   10,18,177,42,64,87 is 18 ASCII characters, whereas
   193,45,228,137,64,87 is 20 ASCII characters. If the new size is same
   as the previous, only the TCP checksum needs adjustment as a result
   of change of data. If the new size is less than or greater than the
   previous, TCP sequence numbers must also be changed to reflect the
   change in length of FTP control data portion.  A special table may be
   used by the ALG to correct the TCP sequence and acknowledge numbers.
   The sequence number and acknowledgement correction will need to be
   performed on all future packet of the connection.
回复

使用道具 举报

发表于 2007-9-27 19:43:01 | 显示全部楼层
厉害厉害,大家都是高手。学习了……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表