前言
这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题
于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。
微信小程序搜索:Python面试宝典
或可关注原创个人博客:https://lienze.tech
也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习
FTP协议
FTP(File Transfer Protocol)文件传输协议,是TCP/IP协议组中的协议之一
FTP为C/S架构,需要同时具备客户端和服务端才可以进行工作。其中FTP服务器用来存储文件。用户可以通过FTP客户端访问位于FTP服务器的资源。FTP传输效率也非常高,因此也常用于传输一些较大文件。
默认情况下FTP协议使用20/21
这两个端口,其中20
用于传输数据,21
用于传输FTP控制的命令信息
Python实现FTP的功能主要是使用ftplib
模块来实现的,在我们所使用的3.x版本Python中,属于内置模块,不需要额外安装即可使用
传输模式
FTP主动模式(PORT):客户端从一个任意端口N(N>1024)连接到FTP服务器的21端口之后,如服务器有效响应,则客户端继续监听N+1端口,并通过命令端口21向服务器发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口20连接到客户端所提供的N+1端口。
FTP被动模式(PASV):客户端从一个任意端口N(N>1024)连接到FTP服务器的21端口之后,客户端开始监听端口N+1,客户端提交PASV命令,服务器从本机的一个大于1024的端口P想客户端发送响应命令(PORT P)。客户端从本机端口N+1发起连接向服务器的P端口。
-
主动模式:服务器在确认响应后主动连接客户端
- 服务器:21端口传输命令,20端口传输数据。
- 客户端:N(N>1024)端口发送命令,N+1端口传输数据。
-
被动模式:客户端在确认服务器端口后主动连接服务器。
-
服务器:21端口传输命令,P(P>1024)端口传输数据。
客户端:N(N>1024)端口发送命令,N+1端口传输数据。
-
搭建FTP服务器
目前关于ftp服务器,主流有如下:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等软件。其中较为常用的linux下ftp服务器软件为Vsftpd
在这里也会首先搭建Vsftpd服务来进行Python有关ftp的操作。
Vsftpd全称为非常安全的ftp服务进程(Very Secure Ftp Daemon),Vsftpd是在众多类unix操作系统下最主流的ftp服务器。Vsftpd是一款完全免费、开放源码的ftp服务器软件,并且他有良好的可伸缩性、可以通过创建虚拟用户来管理ftp服务。并且也具有非常高的安全性,可以基于MySQL数据库提供安全验证保护
- 在centos7版本下进行Vsftpd的安装
yum install vsftpd
- 启动服务
systemctl start vsftpd
Vsftpd服务配置
Vsftpd通过Yum安装之后默认配置文件路径在/etc/vsftpd/vsftpd.conf,其中默认开启的配置项内容为
配置项 | 解释 |
---|---|
anonymous_enable=YES | 开启匿名用户访问 |
local_enable=YES | 启用本地系统用户访问 |
write_enable=YES | 本地系统用户写入权限 |
local_umask=022 | 本地用户创建文件及目录权限码 |
dirmessage_enable=YES | 打印目录显示信息,通常用于用户首次访问目录时 |
xferlog_enable=YES | 开启上传/下载日志记录 |
connect_from_port_20=YES | 开启20端口数据传输 |
xferlog_std_format=YES | 启用xferlog格式写入日志 |
listen=NO | Vsftpd服务不以独立服务启动 |
listen_ipv6=YES | 启用ipv6监听 |
pam_service_name=vsftpd | 登录ftp服务器时,根据/etc/pam.d/vsftpd中内容进行认证 |
userlist_enable=YES | /etc/vsftpd/user_list /etc/vsftpd/ftpusers 禁止以上两个配置文件中用户访问ftp服务 |
tcp_wrappers=YES | 开启Vsftpd服务于Tcp Wrapper结合进行服务器控制访问 |
之后在浏览器或者资源管理器中使用ftp协议路由即可访问
ftp://127.0.0.1:21