FTP协议是一种基于客户端和服务器的文件传输协议,属于应用层协议,基于传输层的TCP协议;
FTP主要分成主动模式和被动模式两种传输方式,
方式是相对服务器而言的,服务器主动发起数据连接即主动方式,使用固定的20端口,客户端主动发起数据连接就是被动方式:
主动模式(PORT方式):
FTP客户端随机一个非特权端口N,与ftp服务器的21端口(控制或者命令端口)建立连接;当客户端需要传输数据的时候,会发送
PORT命令道服务端,其中包含有客户端本地打开的数据接收监听端口(N+1),服务器端收到PORT后,会使用20数据端口,与客户端
的数据端口建立连接,然后发送数据;
被动模式(PASV方式):
FTP客户端随机一个非特权端口N,与ftp服务器的21端口(控制或者命令端口)建立连接;当客户端要传输数据的时候,会发PASV
命令道服务器,服务器收到命令之后,开启一个非特权端口监听,并且将该端口传送给客户端,客户端会使用端口
N+1来与服务器端口建立连接,然后发送数据;
防火墙设置的时候,一般不允许外部发起的连接;会导致在服务器PASV模式或者客户端PORT模式无法连接的情况;
在某些四层代理实现漏洞中,当服务器以主动模式建立连接,并且快速发送数据,然后fin,可能导致代理的另一端没有来得及完成三次
握手就被断开,从而导致数据传输失败;