FTP协议
一、FTP协议
1. 概念
- FTP(文件传输协议),由两部分组成:服务器/客户端 C/S架构,应用场景:企业内部存放公司文件,开发网站时,利用FTP协议,将网页或程序传到网站服务器,网络中传输一些大文件也是用该协议
- FTP:基于传输层TCP的,默认端口号(20号端口一般用于传输数据,21号端口用于传输控制信息),但是是否使用20号端口作为传输数据端口和FTP传输模式有关系
- 如果采用主动模式:传输数据使用20号端口
- 如果采用被动模式:传输数据使用的端口需要客户机和服务器协商决定
- 主动模式(port方式)
- 建立连接使用21号端口,客户端通过此通道向服务器发送port命令,服务器从20端口主动向客户端发起连接
- 被动模式(pasv(passive)方式)
- 建立连接使用21端口,客户机向服务器发送pasv命令,服务器收到会随机打开一个高端端口(大于1024),服务器在指定范围内的某个端口被动等待客户机连接
- 传输文件时的传输模式
- 文本模式:ASCII模式,以文本序列传输
- 二进制模式:binary模式,(视频、图片、应用程序……)
二、FTP客户端和服务端
1. 服务端程序
- serv-U
- filezilla server
- vsftpd
- windows server IIS(FTP发布服务)
2. 客户端程序
-
命令行
ftp 192.168.10.10
-
资源管理器
ftp://192.168.10.10
-
浏览器
ftp://192.168.10.10
-
第三方工具
- flashFXP
- filezilla client
- cutefetp
- xftp
三、FTP服务
- 使用serv-u
1. FTP用户
- 匿名用户
- anonymoous固定名称(某些FTP的服务端软件也可以使用使用FTP用户名作为匿名用户
- 普通用户
2. SERV-U
- 默认使用被动模式
3. FTP协议状态码
类型 | 状态码 | 解析 |
---|---|---|
1xx —肯定的初步答复(准备) | 110 | 重新启动标记答复。 |
120 | 服务已就绪,在 n分钟后开始。 | |
125 | 数据连接已打开,正在开始传输。 | |
150 | 文件状态正常,准备打开数据连接。 | |
2xx - 肯定的完成答复(完成) | 200 | 命令确定。 |
211 | 系统状态,或系统帮助答复。 | |
212 | 目录状态。 | |
213 | 文件状态。 | |
214 | 帮助消息。 | |
215 | name 系统类型,其中,NAME 是 Assigned Numbers 文档中所列的正式系统名称 | |
220 | 服务就绪,可以执行新用户的请求。 | |
221 | 服务关闭控制连接。如果适当,请注销。 | |
225 | 数据连接打开,没有进行中的传输。 | |
226 | 关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。 | |
227 | 进入被动模式 (h1,h2,h3,h4,p1,p2)。 | |
230 | 用户已登录,继续进行。 | |
250 | 请求的文件操作正确,已完成。 | |
257 | 已创建“pathname”。 | |
3xx - 肯定的中间答复(完成部分) | 331 | 用户名正确,需要密码。 |
332 | 需要登录帐户。 | |
350 | 请求的文件操作正在等待进一步的信息。 | |
4xx - 瞬态否定的完成答复(不成功,暂时) | 421 | 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。 |
425 | 无法打开数据连接。 | |
426 | Connection closed; transfer aborted. | |
450 | 未执行请求的文件操作。文件不可用(例如,文件繁忙)。 | |
451 | 请求的操作异常终止:正在处理本地错误。 | |
452 | 未执行请求的操作。系统存储空间不够。 | |
5xx - 永久性否定的完成答复(不成功,永久) | 500 | 语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。 |
501 | 在参数中有语法错误。 | |
502 | 未执行命令。 | |
503 | 错误的命令序列。 | |
504 | 未执行该参数的命令。 | |
530 | 未登录。 | |
532 | 存储文件需要帐户。 | |
550 | 未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。 | |
551 | 请求的操作异常终止:未知的页面类型。 | |
552 | 请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。 | |
553 | 未执行请求的操作。不允许的文件名。 | |
- 常见的 FTP 状态代码及其原因
状态码 | 原因 |
---|---|
150 | FTP 使用两个端口:21 用于发送命令,20 用于发送数据。状态代码 150 表示服务器准备在端口 20 上打开新连接,发送数据。 |
226 | 命令在端口 20 上打开数据连接以执行操作,如传输文件。操作成功完成,数据连接已关闭。 |
230 | 客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。 |
331 | 客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。 |
426 | 命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。 |
530 | 该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS 的配置可能拒绝匿名访问。 |
550 | 命令未被执行,因为指定的文件不可用。例如,要 GET 的文件并不存在,或试图将文件 PUT 到您没有写入权限的目录。 |