【Linux】循序渐进学运维-服务篇-FTP的原理及使用

大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-服务篇的第13篇文章

一. FTP服务的概述

1. ftp的相关概念

FTP 是File Transfer Protocol文件传输协议)的英文简称,它工作在OSI模型的第七层,TCP模型的第四层上,即传输,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的”三次握手”的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。

FTP服务使用FTP协议(文件传输协议)来进行文件的上传和下载,可以非常方便的进行远距离的文件传输,还支持断点续传功能,可以大幅度地减小CPU和网络带宽的开销,并实现相应的安全控制。

2. 常见的FTP服务器

常见FTP服务器:
Windows:Serv-U 、FTP Server、filezilla_server
Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。

我们在这里主要讨论VSFTP

3. VSFTP基本信息

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
特点:
它是一个安全、高速、稳定的FTP服务器。

VSFTP模式: C/S 模式
监听端口:20、21
服务的端口,我们可以从/etc/services文件里查看

vim /etc/services
在这里插入图片描述

FTP监听的端口有两个:
端口20:用于传输数据
端口21:用于传输指令

二. FTP两种共工作模式及原理

1) ftp的两种工作模式介绍

ftp协议的连接方式有两种,一种是命令连接,一种是数据连接,而ftp的数据连接模式也有两种,一种是主动模式,一种是被动模式。

FTP会话连接时包含了两个通道,一个叫控制通道,端口号21;一个叫数据通道,端口号20

控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的

数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道

FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式

1.FTP的PORT(主动模式)和PASV(被动模式)

(1) PORT(主动模式)

PORT中文称为主动模式,工作的原理:

FTP客户端连接到FTP服务器的21端口→发送用户名和密码登录,登录成功后要list列表或者读取数据时→客户端随机开放一个端口(1024以上)→发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口→FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:

在这里插入图片描述

(2) PASV (被动模式)

PASV是Passive的缩写,中文成为被动模式,工作原理:

FTP客户端连接到FTP服务器的21端口→发送用户名和密码登录,登录成功后要list列表或者读取数据时→发送PASV命令到FTP服务器→ 服务器在本地随机开放一个端口(1024以上)→然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:
在这里插入图片描述

四. ftp的安装

1)服务器端安装:
[root@gaosh-17 ~]# yum install vsftpd
2) 客户端安装:
[root@gaosh-17 ~]# yum install lftp

备注:
从CentOS开始,系统镜像中默认没有ftp客户端命令。取而代之的是lftp命令。

Linux客户端:
lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp、ftps、http、https、hftp、fish(其中ftps和https需要在编译的时候包含openssl库),llftp的界面非常类似一个Shell,有命令补全、历史记录、允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载、等功能。

配置文件结构

vsftpd的核心文件和目录:

  • /etc/pam.d/vsftpd #基于PAM认证的vsftpd验证配置文件
  • /etc/logrotate.d/vsftpd #日志轮转备份配置文件
  • /etc/rc.d/init.d/vsftpd #vsftpd启动脚本,供server调用
  • /etc/vsftpd #vsftpd的主目录
  • /etc/vsftpd/ftpusers #默认的黑名单
  • /etc/vsftpd/user_list #指定允许使用vsftpd的用户列表文件
  • /etc/vsftpd/vsftpd.conf #vsftpd主配置文件
  • /var/ftp #vsftpd默认共享目录(匿名用户的根目录)
  • /etc/vsftpd/vsftpd_conf_migrate.sh #是vsftpd操作的一些变量和设置脚本

服务启动

开启服务,设置开机启动

[root@gaosh-17 ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@gaosh-17 ~]# 

查看监听端口

[root@gaosh-17 ~]# netstat -antup |grep ftp
tcp6       0      0 :::21                   :::*                    LISTEN      3607/vsftpd         
[root@gaosh-17 ~]# 

注: 这里我们只能看到一个端口,20端口只有当有数据传输的时候才会开启。

ftp是使用方法

1. 通过浏览器访问或 打开文件夹,在地址栏输入地址:ftp://192.168.1.17/,

如图:
在这里插入图片描述

2. 使用lftp
[root@gaosh-17 ~]# lftp 192.168.1.17
lftp 192.168.1.17:~> ls                            
drwxr-xr-x    2 0        0               6 Apr 01 04:55 pub
lftp 192.168.1.17:/> 

总结

本文我们主要探讨了FTP的原理及使用,没有涉及到配置文件,下篇文章,我们将探讨配置文件的详细参数。

我是高胜寒,一个在教培行业不忘初心的人。 欢迎留言,与我一起交流。

FTP系列目录:

【Linux】循序渐进学运维-服务篇-FTP的原理及使用

猜你喜欢

转载自blog.csdn.net/xinshuzhan/article/details/107410284