FTP 采用在主机之间建立两个 TCP 连接的方式来实现数据传输,一个连接用于控制信息的传输(命令和响应),另外一 个连接用于数据传输。
ftp控制连接
FTP连接的建立过程和普通的客户端—服务器的连接建立过程完全相同,包括一下两个步骤
- 服务器在 TCP 的 21端口 上监听客户端连接请求(即被动打开)
- 客户端使用一个临时端口连接到服务器的21端口上(即发起主动打开)
- 随后在整个FTP会话过程中,控制连接一直保持,用于客户端和服务器之间进行命令的请求和应答 。
ftp数据连接
ftp数据连接主动模式:
- 客户端通过在控制连接上发送PROT命令,告诉服务器客户端将在某个临时端口 (510000)上监听服务器的数据连接请求
- 服务器收到PROT命令后,从20端口发送主动连接到客户端的该临时监听端口,从而建立 数据TCP连接
ftp数据连接被动模式:
- 客户端通过在控制连接上发送PASV命令,请求服务器告诉客户端服务器将在哪个临时 端口(40000)监听客户端的数据连接请求
- 服务器收到PASV命令后,在该临时端口上进行监听,并将监听的端口(40000)发送给 客户端,客户端从该应答中获得服务器的数据连接监听端口,然后从客户端的一个临时 发起主动连接服务器的该临时监听端口,从而建立数据TCP连接
ftp命令
ftp服务器应答
- FTP服务应答状态码首位数字及其含义
- 1xx命令正确,服务器在接收下一条命令之前将发回另外一条响应信息
- 2xx命令完全正确,服务器等待接下一条请求命令
- 3xx命令正确接收,但是服务器需要进一步信息
- 4xx 命令发生暂时错误,可以随后再次输入同样的命令
- 5xx命令发生永久性错误,不能再次输入同样的命令
- FTP服务应答状态第2位数字及其含义
- x0x语法相关的命令
- x1x信息相关的命令
- x2x连接相关的命令
- x3x鉴权相关的命令
- x4x未定义
- x5x文件系统相关的命令
- ftp常见的应答状态码
- 150 数据连接即将打开
- 200 命令正确
- 220 服务器已经准备好
- 226 关闭数据连接
- 230 用户登陆成功
- 250 请求文件操作成功
- 331 用户名正确,请输入口令
- 426 连接关闭,放弃传输
- 500 语法错误,不能识别的命令
- 501 参数中语法错误
- 530 用户未登陆
- 550 请求操作未执行,文件不可用