FTP原理

本文详细介绍了FTP(文件传输协议)的基础知识、工作原理及其在不同网络环境下的应用注意事项。包括主动和被动模式的区别、服务器端及客户端配置要点。

一、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工作原理


1.FTP服务器运行FTPd守护进程,等待用户的FTP请求。

2.用户运行FTP命令,请求FTP服务器为其服务。

  例:FTP  192.168.0.1

3.FTPd守护进程收到用户的FTP请求后,派生出子进程FTP与用户进程FTP交互,建立文件传输控制连接,使用TCP端口21。

4.用户输入FTP子命令,服务器接收子命令,如果命令正确,双方各派生一个数据传输进程FTP-DATA,建立数据连接,使用TCP端口20,进行数据传输。

5.本次子命令的数据传输完,拆除数据连接,结束FTP-DATA进程。

6.用户继续输入FTP子命令,重复4、5的过程,直至用户输入quit命令,双方拆除控制连接,结束文件传输,结束FTP进程。

三、FTP服务器端的注意事项

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

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

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

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

(2)FTP服务器是内网IP,用内网动态域名标准版cmxnatproxy

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

四、FTP客户端的注意事项

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

(1)客户端只有内网IP,没有公网IP

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

(2)客户端有公网IP,但安装了防火墙

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

(3)连接用内网标准版cmxnatproxy搭建的FTP服务,必须要用PASV方式。连接任何公网FTP服务器、或用内网专业版TrueHost搭建的FTP服务器,PORT方式和PASV方式都可以使用。
   当然,使用PORT方式的时候,还要满足上面的两个条件。

(4)常见的FTP客户端软件PORT方式与PASV方式的切换方法。

   大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。
  
   在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。

IE:

工具 ->; Internet选项 ->; 高级 ->; “使用被动FTP”(需要IE6.0以上才支持)。

<think>好的,我现在需要详细解释FTP协议的工作原理。首先,我要回忆一下FTP的基本概念,确保自己理解正确。FTP是文件传输协议,用于在网络上传输文件,它使用TCP来保证可靠性。根据用户提供的引用材料,FTP的主要功能是解决不同操作系统之间文件处理的不兼容问题。 接下来,我需要分步骤说明FTP工作原理。首先,FTP采用客户端-服务器模型,这点是明确的。然后,关于控制连接和数据连接,我需要确认两者使用的端口和它们的作用。控制连接默认使用端口21,用于传输命令和响应,而数据连接使用端口20或其他端口,负责实际的文件传输。这里可能需要检查是否在主动模式和被动模式下的数据连接端口有所不同。 然后,我需要解释FTP工作流程。用户启动FTP客户端连接服务器,通过控制连接发送命令,如USER和PASS进行认证。接着,当需要传输文件时,建立数据连接。这里要区分主动模式和被动模式。主动模式下,服务器从端口20主动连接到客户端的指定端口;被动模式下,服务器告知客户端一个端口,客户端主动连接。这部分需要准确描述,避免混淆。 另外,需要提到数据传输的两种模式:ASCII和二进制。ASCII模式用于文本文件,处理换行符转换;二进制模式用于非文本文件,如图片或程序。这部分可能用户容易忽略,但对文件正确传输很重要。 关于引用材料,用户提供的引用[^1]指出FTP使用TCP,并且解决操作系统不兼容性。在解释不同模式和数据传输时,可以自然地将引用融入,例如在提到减少不兼容性时引用。 最后,生成相关问题需要考虑用户可能的后续疑问,比如端口差异、主动被动模式的区别、传输模式的选择等。确保问题覆盖用户可能想深入了解的方面。 检查是否有遗漏点,比如FTP的安全性不足,通常使用SFTPFTPS作为替代,这点可以放在相关问题里。同时确保技术术语准确,例如TCP连接、端口号等正确无误。整个思考过程需要逻辑清晰,分步骤展开,确保回答结构化和易于理解。</think>### FTP协议工作原理详解 FTP(文件传输协议)基于**客户端-服务器模型**,通过**双通道连接**实现文件传输,具体流程如下: #### 1. 双连接机制 - **控制连接**(端口21) 用于传输命令和响应(如登录、切换目录、上传/下载指令),客户端通过TCP协议与服务器建立连接。 - **数据连接**(端口20或其他) 实际传输文件内容,根据模式不同建立方式有所差异: - **主动模式**(PORT):服务器主动从端口20连接客户端指定端口 - **被动模式**(PASV):客户端连接服务器随机开放的端口 #### 2. 工作流程 1. **建立控制连接** 客户端发起TCP连接到服务器的21端口,例如: $$ \text{Client} \xrightarrow{\text{SYN}} \text{Server:21} $$ 2. **身份认证** 通过明文传输用户名/密码(安全性缺陷导致逐渐被SFTP替代): ```bash USER anonymous PASS guest@example.com ``` 3. **数据传输阶段** - **主动模式** 客户端发送`PORT`命令告知自身IP和端口 → 服务器从20端口发起连接 ```bash PORT 192,168,1,2,14,178 # 解码为IP:192.168.1.2 端口=14*256+178=3714 ``` - **被动模式** 客户端发送`PASV`命令 → 服务器返回开放端口(如端口号=16*256+214=4374) ```bash 227 Entering Passive Mode (202,102,144,56,16,214) ``` 4. **传输模式选择** - `TYPE A`:ASCII模式(自动转换换行符) - `TYPE I`:二进制模式(图片/程序文件必须使用) #### 3. 关键技术特性 - **跨平台兼容**:通过统一文件格式定义解决不同系统文件存储差异 - **断点续传**:通过`REST`命令指定文件偏移量(需服务器支持) - **目录操作**:支持`LIST`、`CWD`等目录管理命令 ```mermaid sequenceDiagram participant Client participant Server Client->>Server: TCP连接(21端口) Server-->>Client: 220欢迎代码 Client->>Server: USER/PASS命令 Server-->>Client: 331/230响应 Client->>Server: PASV命令 Server-->>Client: 227返回数据端口 Client->>Server: 连接数据端口 Client->>Server: RETR命令 Server-->>Client: 文件数据流 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值