FTP
工作模式
FTP
是
File Transfer Protocol
(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于
HTTP
,
FTP
协议要复杂得多。复杂的原因,是因为
FTP
协议要用到两个
TCP
连接,一个是命令链路,用来在
FTP
客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP
协议有两种工作方式:
PORT
方式和
PASV
方式,中文意思为主动式和被动式。
Port 模式:
ftp server:tcp 21 <------client:dynamic
ftp server:tcp 20 ------>client:dynamic
Pasv
模式:
ftp server:tcp 21 <----client:dynamic
ftp server:tcp dynamic <----client:dynamic
ftp server:tcp 21 <----client:dynamic
ftp server:tcp dynamic <----client:dynamic
PORT (主动)方式的连接过程是:客户端向服务器的 FTP 端口(默认是 21 )发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用 PORT 命令告诉服务器: “ 我打开了 XXXX 端口,你过来连接我 ” 。于是服务器从 20 端口向客户端的 XXXX 端口发送连接请求,建立一条数据链路来传送数据。
PASV
(被动)方式的连接过程是:客户端向服务器的
FTP
端口(默认是
21
)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用
PASV
命令告诉客户端:
“
我打开了
XXXX
端口,你过来连接我
”
。于是客户端向服务器的
XXXX
端口发送连接请求,建立一条数据链路来传送数据。
注意:选择用
PASV
方式还是
PORT
方式登录
FTP
服务器,选择权在
FTP
客户端,而不是在
FTP
服务器。
FTP
常见问题现象于分析
一、无法访问
FTP SERVER
原因可能是
1 、有防火墙过滤了 ftp 请求
2 、客户端强制使用 PASV MODE 连接,而 FTP SERVER 不支持或没有开启 PASV MODE
3 、网络无法访问
原因可能是
1 、有防火墙过滤了 ftp 请求
2 、客户端强制使用 PASV MODE 连接,而 FTP SERVER 不支持或没有开启 PASV MODE
3 、网络无法访问
二、客户端能够登陆,但是无法浏览数据
原因可能是
1 、客户端处于内网,而且 GATEWAY 没有相关设置允许 PORT MODE 访问远程 FTP SERVER
2 、客户端本身有网络限制了自己 1024 以上端口的访问(如: TCP/IP 筛选)
3 、客户端使用的软件没有开启或支持 PASV MODE 的访问
原因可能是
1 、客户端处于内网,而且 GATEWAY 没有相关设置允许 PORT MODE 访问远程 FTP SERVER
2 、客户端本身有网络限制了自己 1024 以上端口的访问(如: TCP/IP 筛选)
3 、客户端使用的软件没有开启或支持 PASV MODE 的访问
三、有的能登陆,有的不能登陆
原因是不能登陆的客户端没有使用 PASV MODE 访问 FTP SERVER
原因是不能登陆的客户端没有使用 PASV MODE 访问 FTP SERVER
FTP
访问出错排查步骤
1
、确认能够在
FTP SERVER
上以
127.0.0.1
访问自己
2 、确认在 FTP SERVER 上能够以使用的 IP 访问
3 、确认客户端和服务器端网络通畅
4 、确认双方的防火墙设置正确
5 、确认双方的访问模式正确
2 、确认在 FTP SERVER 上能够以使用的 IP 访问
3 、确认客户端和服务器端网络通畅
4 、确认双方的防火墙设置正确
5 、确认双方的访问模式正确
FTP
常见问题的解决
一、
FTP SERVER
有公网
IP,
且前面有防火墙
1
、在防火墙上开启
21
端口(默认)
2 、在 FTP SERVER 上开启 PASV MODE 支持
3 、在 FTP SERVER 上指定 PASV MODE 使用的端口范围
4 、在防火墙上开放相应的 PASV MODE 所需要的端口
2 、在 FTP SERVER 上开启 PASV MODE 支持
3 、在 FTP SERVER 上指定 PASV MODE 使用的端口范围
4 、在防火墙上开放相应的 PASV MODE 所需要的端口
二、
FTP SERVER
处于内网
1
、如果有防火墙,参照上面的设置
2 、在 GATEWAY 上做端口映射,映射 TCP 21 端口到 FTP SERVER 的 21 端口
3 、在 FTP SERVER 上指定 PASV MODE 使用的端口范围
4 、还需要额外的在 GATEWAY 上再映射 20 端口和 PASV MODE 使用的端口到 FTP SERVER 上
2 、在 GATEWAY 上做端口映射,映射 TCP 21 端口到 FTP SERVER 的 21 端口
3 、在 FTP SERVER 上指定 PASV MODE 使用的端口范围
4 、还需要额外的在 GATEWAY 上再映射 20 端口和 PASV MODE 使用的端口到 FTP SERVER 上
三、 FTP CLIENT
1
、在防火墙上允许对外
21
端口的访问
2 、在防火墙上开启 1024 端口以支持使用 PORT MODE 从内网访问外网的 FTP SERVER
3 、开启 FTP CLIENT 使用软件的 PASV 模式支持(如 IE 默认是不使用 PASV MODE )
2 、在防火墙上开启 1024 端口以支持使用 PORT MODE 从内网访问外网的 FTP SERVER
3 、开启 FTP CLIENT 使用软件的 PASV 模式支持(如 IE 默认是不使用 PASV MODE )
说明 1 、 PASV MODE 端口范围的作用:
当客户端以 PASV 方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。如果不指定,默认是随机的 1024 以上的端口。
说明
2
、
IE
开启
PASV MODE
的方法:控制面板
->INTERNET
选项
->
高级标签
->
启用被动
FTP
总结:在架设 FTP SERVER 出现问题后,根据经验,用以下原则进行设置可以解决大多数问题
1 、 FTP SERVER 启用并指定 PASV MODE 使用的端口范围,如果有防火墙在防火墙上允许这些端口的访问
2 、 FTP CLIENT 尽量不要使用 IE , IE 只是一个粗糙的 FTP CLIENT 工具,默认不开启 PASV MODE ,访问出错信息单一
3 、 FTP CLIENT 关闭 TCP/IP 筛选
4 、尽量使用 PASV MODE 访问 FTP 服务器,而非 PORT MODE