FTP协议
1、FTP基本概念
FTP(File Transfer Protocol)文件传输协议,作为网络共享文件的传输协议,在网络应用软件中广泛使用。FTP和操作系统无关,任何系统的程序上只要符合FTP协议,就可以实现相互传输,实现了不同操作系统之间的文件共享。FTP提高了文件的共享性和可靠高效的数据传输。
2、FTP原理
2.1、连接
FTP有服务端和客户端两部分组成,实现了服务端和客户端之间的资源共享。
在客户端和服务端的数据交互过程中,FTP客户端首先与FTP服务端建立连接,然后向服务端发送命令,服务端根据客户端发送的命令给予响应,并执行。因此在FTP文件传输过程中同时存在命令连接和数据连接。
命令端口:FTP服务端默认命令端口为21(生产环境中一般为保护服务器避免恶意访问不设置21,端口设置可在配置文件中更改:就vsftpd而言,更改vsftpd.conf-listen_port=****属性),主要负责FTP命令的发送和接收,以及对客户端的响应等。
数据端口:FTP服务端数据端口默认为20,FTP模式不同端口不同,主要根据具体情况而定。FTP数据端口主要实现文件上传下载、目录列表等。
2.2、模式
FTP分为主动模式(PORT)和被动模式(PASV)。
2.2.1、主动模式
如上图所示为FTP客户端和FTP服务端交互的过程:
1、客户端N(命令)端口与服务段21端口经过3次握手达成连接。
2、客户端发送主动请求(其中包含客户端数据传输端口[N+1],命令等)至服务端。
3、服务端根据客户端发送的命令主动连接客户端数据端口进行数据交互。
注意:
在服务端主动连接客户端可能会被客户端防火墙拦截。服务向外访问不会涉及到防火墙拦截,但是外部访问服务内部(特定端口)的时候在防火墙没有开通的情况下,会被服务防火墙所拦截。
2.2.2、被动模式
如上图所示为FTP客户端和FTP服务端交互的过程:
1、客户端N(命令)端口与服务段21端口经过3次握手达成连接。
2、服务端通过主动将数据端口发送至客户端。
3、客户端主动连接服务端发送的数据端口进行数据交互。
注意:
被动模式下服务端数据端口段可在配置文件中自行配置(vsftpd而言,pasv_min_port=****,pasv_max_port=****),在端口段内随机分配。
服务端返回的端口信息:h1,h2,h3,h4,p1,p2 ,其中h1——h4为Ip地址,p1,p2为端口信息,端口号为:p1*256+p2,因此访问地址为:h1.h2.h3.h4:p1*256+p2(eg:127.0.0.1.12.26则实际访问地址为:127.0.0.1:3098)
主动模式和被动模式的利弊:
3、FTP安装和使用
3.1、windows:
链接:https://pan.baidu.com/s/1i8AG8pCfz3CdkbVbeGShqA
提取码:6wyc
下载直接运行即可
3.2、Linux
安装vsftpd
4、FTP基础配置
主要针对vsftpd配置