python开发FTP服务器


一、FTP主动模式工作过程:

1、客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接。
2、客户端开始监听 N+1端口。
3、服务端会主动以20端口连接到客户端的N+1端口。
4、主动模式的优点:服务端配置简单,利于服务器安全管理,服务器只需要开放21端口。
5、主动模式的缺点:如果客户端开启了防火墙,或客户端处于内网(NAT网关之后),那么服务器对客户端端口发起的连接可能会失败。

二、FTP被动模式工作过程:

1、客户端以随机非特权端口连接服务端的21端口。
2、服务端开启一个非特权端口为被动端口,并返回给客户端。
3、客户端以非特权端口+1的端口主动连接服务端的被动端口。
4、被动模式缺点:服务器配置管理稍显复杂,不利于安全,服务器需要开放随机高位端口以便客户端可以连接,因此大多数FTP服务软件都可以手动配置被动端口的范围。
5、被动模式的优点:对客户端网络环境没有要求。

三、python开发FTP服务器

1、源码下载:pyftp.7z
2、代码的工作模式是被动模式。
3、settings.py里的修改点:

ip = '172.16.54.168'(写自己服务器的ip)
passive_ports = (8101, 8200)(写自己服务器开放的端口范围)
anonymous_path = '/home'(写匿名用户可访问的目录,Windows写:"E:\\work")

4、user.py里设置用户名、密码、权限、目录

#用户名      密码                权限         目录
admin       123456             elradfmwM    /home

5、安装python3
6、安装pyftpdlib

# pip3 install pyftpdlib

7、运行:python3 FtpServer.py