FTP主动模式和被动模式

FTP主动模式和被动模式(1)



FTP工作原理

FTP 是基于客户—服务器(C/S)模型而设计的,FTP 的独特的优势同时也是与其它客户服务器程序最大的不同点就在于它在两台通信的主机之间使用了两条 TCP 连接,一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应),这种将命令和数据分开传送的思想大大提高了 FTP 的效率,使得一个FTP服务器可以同时和多个客户端传输数据。

FTP有两种工作模式,主动模式和被动模式,其中主动模式是默认的模式,并且是由客户端决定工作在哪种模式。

FTP的主动和被动模式是针对数据连接的,而且是针对服务器而言的;

FTP的被动模式较长使用,因为在存在防火墙的环境中,被动模式对于客户端在防火墙内部的情况是比较友好的,主动模式对服务器在防火墙内部是比较友好的,下面会详细说明原因。

FTP主动模式

主动模式的工作原理如下图:

image

  • 首先建立控制连接,进行控制连接的TCP三次握手,客户端打开一个大于1024的随机端口N向服务器端的TCP21端口发送一个TCP连接,服务器收到后向客户端的N端口发送ACK确认消息;
  • 同时客户端向服务器端发送FTP用户名和密码进行校验,切换工作目录,确定数据传输格式等,之后客户端向服务器端发送PORT命令,告知服务器自身使用哪个端口建立数据连接,PORT命令的格式为PORT 192,16,2,210,221,123,其中前四个为客户端的IP地址,后两个为客户端使用的数据端口,通过221*256+123=56699算出,这里的端口可能是N+1,也可能使用随机端口;
  • 服务器端使用固定端口TCP20(也可能是随机端口)主动向客户端的数据端口发送数据连接,完成数据连接的TCP三次握手之后就可以进行数据传输了。

FTP主动模式完整的抓包过程(服务器端)如下,其中192.168.2.210是FTP客户端,192.168.2.131是FTP服务器端,这里服务器在数据连接上没有使用20端口,使用的是PORT命令通告的随机端口:

image

FTP被动模式

FTP被动模式的工作原理如下图:

image

  • 同样首先建立控制连接,进行控制连接的TCP三次握手,客户端打开一个大于1024的随机端口N向服务器端的TCP21端口发送一个TCP连接,完成三次握手;
  • 之后由服务器验证客户端发送的FTP用户名密码,验证通过后,服务器回复230表示登录成功,然后客户端切换到服务器工作目录,服务器回复250目录切换成功,客户端确定数据交互的方式,TYPE A表示使用ASCII二进制类型,服务器回复200;
  • 客户端向服务器发送PASV命令,表示要使用FTP被动模式,服务器端回应227进入被动模式,并告知客户端自己使用的数据连接端口号,格式为PASV 192,16,2,131,236,146,其中前四个为客户端的IP地址,后两个为客户端使用的数据端口,通过236*256+146=60562算出;
  • 客户端开始建立数据连接的三次握手,客户端使用自身的随机端口,一般是N+1端口(也可能是随机端口)向服务器的上面的60562随机端口发起数据连接,建立完成后就可以正常进行数据传输了,传输完成后进行数据连接的四次挥手断开连接;

FTP被动模式完整的抓包过程(服务器端)如下,其中192.168.2.210是FTP客户端,192.168.2.131是FTP服务器端:

image

通过上面的抓包可以看到我们是可以看到FTP登录的用户名和密码以及传输的内容的,因此FTP不是一个安全的协议,很容易泄露数据信息,可以使用SFTP,SCP等基于SSH实现的文件传输协议,这些都是加密的。

可以看出整个FTP的传输过程中FTP的控制连接一直是不断开的,直到这个客户端的连接断开为止,同时服务器的21端口一直处于监听状态,每个客户端使用不同的数据连接端口,这样就可以实现一个服务器同时和多个客户端传输数据,提升数据传输速率。

posted @ 2024-05-09 10:13  向往自由的独行者  阅读(769)  评论(0编辑  收藏  举报