问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

FTP主动模式和被动模式详解

创作时间:
作者:
@小白创作中心

FTP主动模式和被动模式详解

引用
1
来源
1.
https://www.cnblogs.com/xuwymm/p/18181505

FTP(文件传输协议)是互联网上常用的文件传输协议之一,其主动模式和被动模式是FTP通信中两种不同的工作方式。本文将详细介绍这两种模式的工作原理,并通过抓包过程展示其具体实现方式。

FTP工作原理

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

FTP有两种工作模式:主动模式和被动模式。主动模式是默认的模式,由客户端决定工作在哪种模式。主动和被动模式的区别主要体现在数据连接的建立方式上。

在存在防火墙的环境中,被动模式对于客户端在防火墙内部的情况比较友好,而主动模式对服务器在防火墙内部的情况比较友好。

FTP主动模式

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

  1. 首先建立控制连接,进行控制连接的TCP三次握手。客户端打开一个大于1024的随机端口N向服务器端的TCP21端口发送一个TCP连接,服务器收到后向客户端的N端口发送ACK确认消息。

  2. 同时客户端向服务器端发送FTP用户名和密码进行校验,切换工作目录,确定数据传输格式等。之后客户端向服务器端发送PORT命令,告知服务器自身使用哪个端口建立数据连接。PORT命令的格式为:

    PORT 192,16,2,210,221,123
    

    其中前四个为客户端的IP地址,后两个为客户端使用的数据端口。通过计算 221*256+123=56699 算出,这里的端口可能是N+1,也可能使用随机端口。

  3. 服务器端使用固定端口TCP20(也可能是随机端口)主动向客户端的数据端口发送数据连接,完成数据连接的TCP三次握手之后就可以进行数据传输了。

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

FTP被动模式

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

  1. 同样首先建立控制连接,进行控制连接的TCP三次握手。客户端打开一个大于1024的随机端口N向服务器端的TCP21端口发送一个TCP连接,完成三次握手。

  2. 之后由服务器验证客户端发送的FTP用户名密码,验证通过后,服务器回复230表示登录成功。然后客户端切换到服务器工作目录,服务器回复250目录切换成功。客户端确定数据交互的方式,TYPE A表示使用ASCII二进制类型,服务器回复200。

  3. 客户端向服务器发送PASV命令,表示要使用FTP被动模式。服务器端回应227进入被动模式,并告知客户端自己使用的数据连接端口号。格式为:

    PASV 192,16,2,131,236,146
    

    其中前四个为客户端的IP地址,后两个为客户端使用的数据端口。通过计算 236*256+146=60562 算出。

  4. 客户端开始建立数据连接的三次握手,客户端使用自身的随机端口(一般是N+1端口,也可能是随机端口)向服务器的上面的60562随机端口发起数据连接。建立完成后就可以正常进行数据传输了,传输完成后进行数据连接的四次挥手断开连接。

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

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

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号