Windows上部署FTP详解
FTP介绍
FTP是什么
FTP(File Transfer Protocol,文件传输协议):是一种用于在计算机网络中传输文件的协议。它允许用户从服务器或向服务器上传下载文件。
协议类型:应用层协议,基于TCP/IP。
双通道传输:使用两个 TCP 连接:
控制连接(Control Connection):通常使用 21 端口,用于发送命令和接收响应。
数据连接(Data Connection):用于实际的文件传输,可由服务器或客户端指定端口。
工作模式
FTP 有两种主要传输模式:
(1) 主动模式(Active Mode)
客户端向服务器的 21 端口发起控制连接。当需要传输文件时,服务器主动连接客户端指定的数据端口。这种模式可能受客户端防火墙限制,因为防火墙可能阻止服务器向客户端的连接。
(2) 被动模式(Passive Mode)常用
客户端向服务器 21 端口发起控制连接。文件传输时,客户端主动连接服务器指定的随机端口。
被动模式更适合客户端在防火墙或 NAT 后面时使用。
FTP 支持多种文件传输类型:
1.ASCII 模式
用于文本文件传输。
2.二进制模式(Binary)
用于图片、音频、视频、压缩包等非文本文件。逐字节传输,保证文件内容不被改变。
服务器和客户端
FTP 服务器(FTP Server)
FTP 服务器是提供文件存储和传输服务的一端,它的主要职责是响应客户端请求,管理文件和目录,并控制访问权限。
(1) 角色与功能:
1.存储与管理文件
2.提供存储空间,支持多层目录结构。
3.可以进行文件创建、删除、修改、重命名等操作。
4.处理客户端请求
5.接收客户端的控制连接命令(如登录、下载、上传等)。
6.在被动模式下,服务器提供随机端口,等待客户端连接传输文件。
FTP 客户端(FTP Client)
FTP 客户端是访问 FTP 服务器的工具,它的主要职责是向服务器发出请求,执行文件传输和管理操作。
(1) 角色与功能
1.发起连接
2.向服务器的控制端口(通常为 21)发起 TCP 连接。
3.通过用户名和密码完成身份验证。
4.发送命令
5.发送标准 FTP 命令,如上传、下载、删除、重命名文件,创建/删除目录,查询目录列表等。
6.被动模式:客户端主动连接服务器提供的随机端口。
7.传输模式:可选择 ASCII(文本)或二进制(文件)模式进行传输。
在Windows上部署服务器
1.部署服务器我们借助File Zilla(免费)来部署
登录官网下载File Zilla下载服务器 (注意下载的服务器,不是客户端!!!)
2.下载File Zilla 服务器
选择最新的中文版安装
双击运行下载好的服务端安装包
点击 我接受
点击 下一步
设置好安装路径,点击 下一步
这里默认即可,点击 Next
这里默认即可。点击 安装
安装完成,点击 关闭
3.进入安装好的软件
打开服务端的程序==(注意是服务端,不是客户端!!!)==。按照图下所示,自己设置一个简单的密码,点击连接
最上方是工具栏,下方的红色提示是警告信息,说明 TLS/SSL 加密没有启用。这意味着用户登录和传输的用户名、密码、文件内容都是 明文传输,存在安全风险。我们忽略这个警告
新增用户
点击编辑->用户
点击 添加
输入账户名称ub(自己用英文设置),点击 确定
自己在D盘里新建两个文件夹 可以命名为FTPshare(服务器上存放数据的文件夹)和FTPreceive(客户端将文件下载到该文件夹) 部署服务器我们只用到FTPshare,在FTPshare里右键新建一个文档,内容为 “专业 姓名”
点击左侧的Shared folders进入共享文件夹界面,点击 添加
按照图下所示,然后设置好权限,设为主目录。然后点击 确定
设置IP地址
进入FileZilla Server主界面之后,点击左上角的编辑->设置
点击被动模式设置->勾选使用下列IP,输入本机的ip地址,点击 确定
确定自己的IP地址
1.按win+R 输入cmd打开命令行
在命令行输入 ipconfig
如果连接的是局域网,找到无线局域网适配器 WLAN这个目录下的IPv4地址
这个地址就是你的IP
把该地址复制到使用下列IP这一栏
综上服务器就快布置好了,我们借助Filezilla设置了共享文件夹和服务器名称和密码
防火墙放行FileZilla
在进行下一步操作之前,我们需要把服务端的filezilla应用端口全部放行才可以继续
在搜索框搜索Windows Defender防火墙
在打开界面找到允许应用通过Windows Defender防火墙
点击更改设置 允许其他应用访问
点击浏览,找到你下载Filezilla的文件夹 双击FileZilla Server.exe,点击打开
点击添加
点击确定
这样你的Windows就部署好服务器了
确认服务器端口是否成功监听
1.打开“服务”管理界面
快捷键win+R 输入services.msc,进入服务窗口
2.找到FileZilla Server单击看左边是否有停止此服务的字样
若有则启动成功
服务器和客户端的互传
上述我们已经搭建好了一个服务器,他现在储存的数据是一个文档“专业 姓名”
现在我们作为客户端要访问服务器。
服务器需要搭建,但是我们的电脑本身就是客户端,所以直接用命令行就可以访问服务器。我们已经建好了文件夹FTPreceive,用来储存从服务器下载的数据。
常用命令和服务器响应码
功能分类 | 命令 | 说明 |
---|---|---|
连接服务器 | open <服务器IP或域名> | 连接 FTP 服务器并登录,需要输入用户名和密码 |
传输模式 | ascii | 设置文本文件传输模式 |
binary | 设置二进制文件传输模式(图片、压缩文件、视频等) | |
浏览目录 | pwd | 查看当前服务器目录 |
ls | 列出当前目录下文件和文件夹 | |
cd <目录> | 切换到指定目录 | |
cdup | 返回上一级目录 | |
下载文件 | get <文件名> | 下载单个文件 |
mget <文件列表> | 下载多个指定文件 | |
mget *.txt | 使用通配符下载符合条件的文件 | |
prompt | 开关批量下载确认(关闭后 mget 不再逐个确认) | |
退出 | quit / bye | 安全断开连接,退出 FTP 客户端 |
服务器响应码
响应码 | 含义 | 说明 |
---|---|---|
200 | 命令成功 | 常见于 PORT 、TYPE 等命令 |
220 | 服务就绪 | 服务器准备好,等待客户端连接 |
226 | 成功完成数据传输 | 文件或目录列表传输完成 |
230 | 用户登录成功 | 用户名和密码正确,登录完成 |
250 | 文件操作成功 | cd 、mkdir 等命令成功 |
257 | 当前目录 | 返回当前目录路径 |
331 | 需要密码 | 用户名正确,需要输入密码 |
421 | 服务不可用 | 服务器暂时关闭或负载过高 |
425 | 无法打开数据连接 | 数据通道失败 |
426 | 传输中断 | 文件传输出错 |
450 | 文件操作未完成 | 文件被占用或权限不足 |
500 | 语法错误 | 无效命令或格式错误 |
501 | 参数语法错误 | 命令语法正确但参数有问题 |
502 | 命令未实现 | 服务器不支持该命令 |
530 | 未登录 | 用户名/密码错误,或权限不足 |
550 | 文件操作未执行 | 文件不存在或权限不足 |
实操
1.找到你要访问的服务器IP(这里用我的展示 10.115.33.98)
ftp 10.115.33.98
服务器回应
连接到 10.115.33.98。
220-FileZilla Server 涓枃鐗?0.9.60 beta
220-written by Tim Kosse (tim.kosse@filezilla-project.org)
220 Please visit https://filezilla-project.org/
202 UTF8 mode is always enabled. No need to send this command.
220-FileZilla Server 中文版 0.9.60 beta
服务器返回欢迎信息,说明 FTP 服务器已启动并在监听端口(默认 21)。
下面是网站提信息
2.输入服务器用户名(这里用我的用户名 ub)
ub
服务器回应331 Password required for ub
331 是 FTP 的标准响应码,表示 用户名正确,但需要输入密码。
3.服务器提示输入密码(我的密码1234)
123
由于命令行安全设置(防止泄露)输入密码时不会显示出来,只要输入正确密码后,回车即可
服务器回应230 Logged on
230 是 FTP 的标准响应码,表示 登录成功
4. 查看当前服务器目录并列出当前目录下文件和文件夹
查看当前服务器目录
pwd
列出当前目录下文件夹和文件
ls
服务器回应
200 Port command successful 客户端设置的数据端口成功,准备传输数据。
150 Opening data channel for directory listing of "/" 数据连接已建立,开始传输数据
seed_16_log.txt
t1.txt 服务器 / 目录下的文件列表,表示客户端成功接收了服务器文件名
t2.txt
226 Successfully transferred "/" 数据传输成功完成
ftp: 收到 36 字节,用时 0.00秒 18.00千字节/秒。 客户端统计信息
5.设置你保存这些数据的文件夹(这里用我们之前已经设置好的D:\FTPreceive)
lcd D:\FTPreceive
服务器回应目前的本地目录 D:\FTPreceive
6.下载你需要的数据(这里以t1为例)
get t1.txt
服务器回应
200 Port command successful 客户端成功设置了数据端口,准备进行文件传输
150 Opening data channel for file download from server of "/t1.txt" 服务器已经打开数据通道,准备传输文件 /t1.txt
226 Successfully transferred "/t1.txt" 文件传输成功完成
7.安全断开连接,退出 FTP 客户端
quit
最后就可以在你的 文件夹D:\FTPreceive下可以看到读取的文档