FTP服务器主动被动模式详解

简单地说,支持FTP协议的服务器就是FTP服务器。

与大多数Internet服务一样,FTP也是一个C/S模式系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

FTP协议是基于TCP协议之上的应用层协议,支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。

Port模式

FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。

具体步骤详情如下(笔者所用FTP服务器地址:10.0.1.66,客户端地址:10.0.13.222):

  1. 客户端主动发起TCP连接,连接服务器的21端口,建立用于传输命令的通道。
  2. 客户端通过第一步建立的命令传输通道发送FTP数据包(含PORT信息)。
  3. 服务器通过解析客户端发来的数据包计算所要连接客户端端口,用本地的20端口主动去与计算出的端口建立数据通道的TCP连接。

实验截图如下:

抓包可以看到,FTP客户端(IP:10.0.13.222,端口:10100)与FTP服务器(IP:10.0.1.66,端口:21)建立三次连接。然后登陆成功(230 login successful)后FTP客户端发送 "PORT 10,0,13,222,39,136"。

接着可以看到服务器主动去发起TCP连接,该连接用于FTP数据传输的通道,协议包名为FTP-DATA。可以发现服务器用20端口去连接客户端的10120端口,10120其实就是客户端发送的"PORT 10,0,13,222,39,136"中根据后俩个数值得到的。

连接端口(10120) =  256 * 倒数第二位(39)+ 倒数第一位(136)

Passive模式

建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。

具体步骤详情如下(笔者所用FTP服务器地址:10.0.13.222,客户端地址:10.0.13.111):

  1. 客户端主动发起TCP连接,连接服务器的21端口,建立用于传输命令的通道。
  2. 服务器通过第一步建立的命令传输通道发送FTP数据包(含PASS信息)。
  3. 客户端通过解析服务器发来的数据包计算所要连接服务器端口,主动去与计算出的端口建立数据通道的TCP连接,对于服务器来说此次连接是被连接。

实验截图如下:

 

主动和被动模式计算端口的方法都是相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值