FTP服务的工作机制

发布网友 发布时间:2022-04-23 00:32

我来回答

2个回答

热心网友 时间:2023-07-21 04:41

FTP基础知识

  FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

  FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

  PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

  PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。   从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。

FTP服务器端的注意事项

一、FTP服务器是公网IP,用公网动态域名;或是内网IP,用内网专业版TrueHost

1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)。

2、所有FTP服务器软件都支持PORT方式。至于PASV方式,大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件,也可以设置为只工作在PORT方式上。

3、为了PASV方式能正常工作,需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外,还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。

二、FTP服务器是内网IP,用内网动态域名标准版cmxnatproxy

  这种情况下,FTP服务器不需要做特殊设置,只要支持PASV方式就可以了。大部分FTP服务器软件都支持PASV方式。

FTP客户端的注意事项

  请注意:选择用PASV方式还是PORT方式登录FTP服务器,选择权在FTP客户端,而不是在FTP服务器。

一、客户端只有内网IP,没有公网IP

  从上面的FTP基础知识可知,如果用PORT方式,因为客户端没有公网IP,FTP将无法连接客户端建立数据链路。因此,在这种情况下,客户端必须要用PASV方式,才能连接FTP服务器。大部分FTP站长发现自己的服务器有人能登录上,有人登录不上,典型的错误原因就是因为客户端没有公网IP,但用了IE作为FTP客户端来登录(IE默认使用PORT方式)。

  作为FTP站长,有必要掌握FTP的基础知识,然后指导您的朋友如何正确登录您的FTP。

二、客户端有公网IP,但安装了防火墙

  如果用PASV方式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,没有问题。反过来,如果用PORT方式登录FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截。如果要用PORT方式登录FTP服务器,请在防火墙上打开1024以上的高端端口。

热心网友 时间:2023-07-21 04:42

FTP(File Tranfer Protocol) 文本传输协议,主要用于internet上文件的双向传输,同时ftp也是一种应用程序。
一、特性
基于C/S 结构
双通道协议:数据和命令连接
数据传输格式:二进制(默认)和文本格式
端口:基于tcp服务,数据端口(20)和控制端口(21)

二、模式支持
1、主动模式
主动模式FTP:(服务器主动连接)客户端从任意的一个非特权端口N,连接到FTP服务器的命令端口,也就是21端口。让后客户端开始监听端口N+1,并发送FTP命令“port
N+1” 到ftp服务器。接着服务器会从自己的数据端口(20)主动连接到客户端指定的数据端口(N+1)
以上描述可以在实验环境下查看
主要方法以上文中已有所描述,下面是在wondows上查看端口的命令
netstat -ant|findstr :21
针对FTP服务器前面的防火墙雷说,必须允许以下通信才能支持主动方式FTP。
1、允许任何大于1024的端口到FTP服务器的21端口。 (客户端初始化连接)
2、允许FTP服务器的21端口到大于1024的端口。(服务器响应客户端的控制端口)
3、允许FTP服务器的20端口到大于1024端口。(服务器初始化数据连接到客户端的数据端口)
4、允许大于1024端口到ftp服务器的20端口。(客户端发送ack响应到服务器的数据端口)

2、被动模式
为了解决服务器发起到客户端的连接问题,人们开发了一种不同的ftp连接方式。这就是所谓的被动方式,或成为PASV,当客户端通知服务器它处于被动模式时才启用。
在被动模式ftp中,命令连接和数据连接由客户端发起,这样就可以解决从服务器到客户端的数据端口入方向连接被防火墙过滤掉的问题。
当开启FTP连接时,客户端打开两个任意非特权本地端口N,N+1。第一个端口连接服务器的21端口,但与主动模式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口
P,并发送port P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传输数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能只是被动方式的FTP:
1、允许从任何大于1024的端口到服务器的21端口(客户端初始化连接)
2、允许服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3、从任何大于1024端口到服务器的大于1024的端口(客户端初始化数据连接到服务器的指定端口)
4、服务器的大于1024端口到客户端的大于1024 的端口(服务器发送ack响应和数据到客户端的数据端口。)

三、简述解释及抓包分析过程
1、主动模式
命令连接:客户端任意大于1024端口 N —> 服务器21端口
数据连接:服务器20端口 -----> 客户端 N端口。
2、被动模式
命令连接:客户端任意大于1024端口N ------> 服务器21端口
数据连接:客户端任意大于1024端口N+1 --------> 服务器端口P
服务器被动模式数据端口示例:
227 Entering Passive Mode (172,16,0,1,239,20)
服务器的数据端口为239*256+20=61204 服务器端口P为61204

四、FTP连接响应码
1XX:信息 125:数据连接打开
2XX:成功类状态200:命令OK 230:登录成功
3XX:补充类 331:用户名OK
4XX:客户端错误 425:不能打开数据连接
5XX:服务器错误 530:不能登录

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com