一、FTP简介

FTP是File Transfer Protocol(文件传输协议)的缩写,是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。
FTP是用来在两台计算机之间传输文件,是Internet中应用非常广泛的服务之一。它可根据实际需要设置各用户的使用权限,同时还具有跨平台的特性,即在UNIX、Linux和Windows等操作系统中都可实现FTP客户端和服务器,相互之间可跨平台进行文件的传输。因此,FTP服务是网络中经常采用的资源共享方式之一。
FTP服务属于C/S架构,是一种基于TCP的协议,且拥有两种传输模式,一种为ASCⅢ传输模式(假定正在传输的文件包含简单的ASCI码文本,当文件传输时FTP通常会自动地调整文件的内容,以便将文件存储为另外一台计算机上的ASCI码文本文件,这种文件传输模式速度慢,且会损坏数据),另一种为二进制传输模式(在二进制传输中,保存的是文件的二进制位序,以便源文件与目标文件逐位一一对应,从而保证二进制文件的正确传输,通常选用二进制。)
端口号为20和21,通常21端口是命令端口,20端口是数据端口。

二、FTP工作模式

FTP协议有PORT和PASV两种工作模式,即主动模式和被动模式。
主动模式(port)
在主动模式下,FTP客户端首先随机开启一个小于1024的端口来与FTP服务器的21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送Pot命令。Port命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过其TCP20端口连接到客户端的指定端口发送数据。FTP服务器必须与客户端建立一个新的连接用来传送数据。主动FTP连接过程如下:
命令连接:客户端>1024端口→服务器21端口;
数据连接:客户端>1024端口←服务器20端口。
image.png
被动模式(pasv)
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
FTP服务器收到Pas命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器上的这个端口,然后FTP服务器将通过这个端口传送数据。在这种情况下,FTP服务器不再需要与客户端建立一个新的连接,被动FTP连接过程如下:
命令连接:客户端>1024端口→服务器21端口;
数据连接:客户端>1024端口→服务器>1024端口。

三、FTP安装配置

命令如下

  1. [root@localhost ~]# yum -y install vsftpd
  2. [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf
  3. anon_root=/opt
  4. [root@localhost ~]# systemctl restart vsftpd
  5. [root@localhost ~]# systemctl enable vsftpd
  6. [root@localhost ~]# systemctl status firewalld
  7. firewalld.service - firewalld - dynamic firewall daemon
  8. Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  9. Active: inactive (dead)
  10. Docs: man:firewalld(1)
  11. [root@localhost ~]# getenforce
  12. Disabled
  13. [root@localhost ~]# curl -L ftp://192.168.100.11
  14. drwxr-xr-x 8 0 0 2048 May 03 2018 centos
  15. [root@localhost ~]# yum -y install net-tools
  16. [root@localhost ~]# netstat -ntpl
  17. Active Internet connections (only servers)
  18. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  19. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 928/sshd
  20. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1124/master
  21. tcp6 0 0 :::21 :::* LISTEN 2020/vsftpd
  22. tcp6 0 0 :::22 :::* LISTEN 928/sshd
  23. tcp6 0 0 ::1:25 :::* LISTEN 1124/master
  24. 通过为ftp服器提供yum仓库,同时保证防火墙与SElinux关闭。
  25. [centos]
  26. name=centos
  27. baseurl=ftp://192.168.100.11/centos
  28. gpgcheck=0
  29. enabled=1