一、简介
1、什么是FTP?
- FTP(File Transfer Protocol,文件传输协议)
- TCP/IP 协议组的协议之一。
- 常用20(数据)、21(命令)端口作为通讯端口。(22为SSH端口)
- FTP分为服务端和客户端。
- 以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。
- 用户不能成为服务端计算机中的正常用户。
- 工作机制
- 使用了两条 TCP 连接,一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应)。
- 整个交互的 FTP 会话中,控制连接始终是处于连接状态的,数据连接则在每一次文件传送时先打开后关闭。
2、作用
- 服务端的文件上传与下载。
- 两台计算机间的文件共享。
- 家庭照片远程存储。
3、缺点
- 无法自动检测传输
- FTP拥有ASCII和BINARY两种传输模式,图片和执行文件必须用BINARY模式,CGI脚本和普通HTML文件用ASCII模式上传。
- 报文明文传输
- FTP报文在传输过程中是不进行加密的,通过抓包软件能够直接查看报文内容,甚至FTP的用户名/密码。
- 大文件传输不可靠
- FTP在传输超过2G文件时,可能出现提示传输成功,但实际文件未完全传输的情况,所以在传输大文件时需要人为的分解文件,分别传输。
4、服务端与客户端
- FTP服务端
- 存储相应文档、图片及文件,并将存储目录分享给客户端进行访问的计算机或者服务器。
- FTP客户端
- 从FTP服务端上传或下载相应文档、图片及文件的计算机。
二、主动模式和被动模式
- 这两种模式的主要区别在于如何建立数据连接。(服务器主动或被动)
- 主动模式
- 在主动模式下,FTP客户端会向服务器发起连接并建立控制通道(通常是通过端口21)。当客户端需要传输数据时,它会通过控制通道告诉服务器客户端正在监听的IP地址和端口号。服务器随后会从其数据端口(通常是20)主动连接到客户端提供的数据端口。
- 服务端 连接到 客户端 的端口。
- 问题:主动模式在某些情况下可能会被防火墙阻挡,因为服务器主动连接客户端的端口,可能会被防火墙认为是未经请求的连接。并且大多数的客户端没有独立的公网IP。
- 被动模式
- 在被动模式下,客户端和服务器仍然会首先建立控制通道。不同的是,当需要传输数据时,客户端请求服务器进入被动模式(通过发送PASV命令)。服务器在接收到该命令后,会打开一个随机的非特权端口并通知客户端(1024以上)。随后,客户端会主动连接到服务器的该端口来建立数据通道。
- 客户端 连接到 服务端 的端口。
- 优点:被动模式通常能更好地穿透防火墙和NAT(网络地址转换)设备,因为所有连接都是由客户端发起的,这样防火墙和NAT设备更容易处理。
- 选择何种模式
- 主动模式:适用于客户端能够直接接受外部连接的情况,且没有严格的防火墙限制。
- 被动模式:适用于客户端在防火墙后面,或无法接受外部连接的情况。
三、搭建FTP服务端
- 在Win7虚拟机上搭建FTP服务端,并通过本机进行访问。
- 虚拟机:控制面板 -> 程序和功能 -> 打开或关闭Windows功能
- 勾选下面的功能。
- 打开计算机管理。
- 添加FTP站点,物理路径是在虚拟机中要共享的文件夹。
- 设置虚拟机的ip,端口保持为21不变,启用虚拟主机名项可以不必勾选,自动启动FTP站点可以勾选,SSL可以选择无SSL。
- 身份验证勾选匿名和基本,允许访问项设置为所有用户,勾选读取和写入权限。
- 这时可以看到,FTP站点已经创建成功并正常运行。
- 设置允许FTP服务器通过防火墙。找到防火墙,点击进入允许程序通过Windows防火墙。勾选列表中FTP服务器,确定。
- 右键浏览FTP服务器,可以看到之前设置的物理文件夹。
- 放入需要传输的文件。
- 本机:先查询虚拟机的ip地址,以供本机访问。
- 打开文件资源管理器中输入FTP服务器的地址,ftp:// [虚拟机的IP地址],回车即可访问。