FTP 协议
FTP协议的(file Transfer Protocol)文本传输协议,简称为FTP,
**FTP 是一种基于 TCP 的应用层协议,它不支持 UDP 协议。 FTP 工作在一种特殊的服务机制上,**采用的是c/s模式 也就是客户端和服务器
服务器分为两个端口
一个 ‘数据’ 端口20(传输端口)和一个 ‘命令’ 端口21(也称为控制端口)。 通常情况下,端口 21 用作控制连接端口,端口 20 用作数据连接端口
FTP的连接方式
FTP协议是基于TCP连接进行通信的,但它不同于Http等其他协议。
FTP协议是使用两个并行的连接来传输文件的,一个是控制连接,另一个为数据连接
也就是双通道
控制连接
用来在客户端和服务器之间传输控制信息。如:登陆认证时的用户名和密码,上传和下载文件,切换目录等,也就是说和FTP协议相关的命令都是通过控制连接在实现的
数据连接
主要用来实现文件的传输。如上传下载的文件内容都是通过该TCP连接上进行的。
**
当FTP客户端要与远程的FTP服务器端建立TCP连接的时候,客户端首先是连接FTP服务器的21端口。TCP的三次握手成功后,连接成功建立,之后客户端会将登陆使用的用户名和密码通过刚建立的控制连接发送到服务器端,服务器在验证用户名和密码合法后,客户端登陆成功,FTP控制连接会话便成功建立,至此可以进行FTP命令的交互。
FTP数据连接的两种模式
主动模式: 客户端连接成功后,主动告诉服务器数据连接的端口**
被动模式:客户端连接成功后,在进行数据传输时临时连接服务器的20端口,利用此端口进行数据的传输。
FTP主动模式
FTP客户端与服务器端建立完控制连接后,客户端建立数据连接的TCP服务器端并打开监听,并通过PORT命令告知FTP服务器端要连接的端口。 主动模式遵循以下一个步骤:
FTP 客户端连接FTP服务器端的21端口,建立控制连接; FTP客户端在某个端口连接TCP服务器,并进行监听FTP服务器端发送来的数据连接请求。建立完毕后,通过PORT命令通知FTP服务器端要连接的监听端口;
FTP服务器端通过20端口,与FTP服务器的数据连接监听端口进行连接;
通过新建立的数据连接通道进行文件的传输通信;
传输完毕后自动关闭数据连接。
FTP被动模式
FTP客户端与服务器端建立完控制连接后,不再由客户端建立TCP服务器然后发送PORT命令告知FTP服务器,而是发送PASV命令。
FTP服务器在收到此命令后会在高端口上随机选择一个未使用的端口并建立TCP服务器监听该端口,然后告知FTP客户端端口号信息。客户端在这个端口上和服务器连接数据连接并进行通信。
FTP 客户端连接FTP服务器端的21端口,建立控制连接;
FTP客户端通过PASV命令通知FTP服务器端采用被动模式;
FTP服务器端在高端口上随机选择一个端口,并建立TCP服务器监听之,然后对PASV 做出应答将端口告知客户端;
FTP客户端连接FTP服务器端监听的数据连接端口,并进行文件的传输。 传输完毕自动关闭数据连接。
FTP文件传输实验
1.安装FTP并备份文件
yum install -y vsftpd
cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf.bak
2.设置匿名用户访问的FTP服务(最大权限)
#修改配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #开启匿名用户访问。默认已开启
write_enable=YES #开放服务器的写权限(若要上传,必须开启)。默认已开启
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。默认已开启
anon_upload_enable=YES #允许匿名用户上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable =YES #允许删除、重命名、覆盖等操作。需添加
#为匿名访问ftp的根目录下的 pub子目录设置最大权限,以便匿名用户上传数据
chmod 777 /var/ftp/pub/
#开启服务,关闭防火墙和增强型安全功能
systemctl start vsftpd
systemctl stop firewalld
setenforce 0
匿名访问测试
在Windows系统打开 开始 菜单,输入 cmd 命令打开命令提示符
#建立ftp连接
ftp 192.168.163.20
#匿名访问,用户名为ftp,密码为空,直接回车即可完成登录
ftp> pwd #匿名访问ftp的根目录为Linux系统的/var/ftp/目录
ftp> ls #查看当前目录
ftp> cd pub #切换到pub 目录
ftp> get 文件名 #下载文件到当前Windows本地目录
ftp> put 文件名 #上传文件到ftp目录
ftp> quit #退出
我们换到Linux中看看是否有这个文件
小结:
以上关于主动和被动FTP的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 <- 服务器 20端口
2、被动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
-
主动与被动FTP优缺点:文章来源:https://www.toymoban.com/news/detail-440684.html
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。文章来源地址https://www.toymoban.com/news/detail-440684.html
到了这里,关于FTP 协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!