FTP 协议

article/2025/8/18 14:49:54

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优缺点:

    主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。


http://chatgpt.dhexx.cn/article/YFA49tNI.shtml

相关文章

浅谈FTP(文件传输协议)

FTP(文件传输协议) FTP(File Transfer Protocol) &#xff0c;是一种处于应用层的用于文件传输的协议。是基于TCP协议的应用层协议&#xff0c;用于在网络上传输文件。 该协议使用的端口号为20和21&#xff0c;其中20是数据端口&#xff0c;21是命令端口(默认情况下) 是否使用…

FTP协议

一、FTP的概述 1、文件传送协议FTP (File Transfer Protocol)是互联网上使用得最广泛的文件传送协议&#xff0c;用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问&#xff0c;允许客户指明文件的类型与格式&#xff0c;并允许文件具有存取权限。 3、FTP 屏蔽了…

FTP文件传输协议

目录 一、FTP的概述 1.1 FTP的理念 1.2 FTP数据连接模式 1.2.1 连接模式分类 1.2.2 主动和被动模式的工作原理 二、配置FTP服务 2.1 配置匿名用户FTP服务 2.1.1 关闭防火墙安装vsftpd软件包 2.1.2 开启FTP服务并做备份 ​ 2.1.3 修改配置文件 2.1.4 设置目录下权限&a…

FTP协议详解

一、FTP协议的概述 1、文件传送协议(File Transfer Protocol)是互联网上使用的最广泛的文件传输协议&#xff0c;用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问&#xff0c;允许客户指明文件类型与格式&#xff0c;并允许文件具有存取权限。 3、FTP屏蔽了各…

手推向量投影长度、投影向量

投影 &#xff08;tuyǐng&#xff09;&#xff0c;数学术语&#xff0c;指图形的影子投到一个面或一条线上。 声明向量F为F、 向量F的大小为|F|&#xff0c;向量b为b、向量b的大小为、|b| 当我们得到了投影的大小之后|F| 因为 F 在 b 上 所以 单位向量相同&#xff0c;F 和 b…

向量投影公式

公式一&#xff1a;a.b |a||b|cos(r) cos(r) a.b/|a|/|b| 公式二&#xff1a;|c| |a|cos(r) 公式三&#xff1a;|c| a.b/|b| 公式四&#xff1a;c b/|b| |c| 公式五&#xff1a;c a.b/|b|2 b 公式六&#xff1a;c a.b/b.b b 备注&#xff1a;|b| √b.b 朝向解P…

已知法向量,某一向量投影到其平面,计算投影向量

最近一直在计算旋转矩阵&#xff0c;奈何高中数学实在是差&#xff0c;大学高等数学也不行&#xff0c;线性代数也不行&#xff0c;现在做起研究来真是要了我这个秃头粥的老命。只能边学习边应用了。 第一个&#xff1a;对某一向量进行旋转平移&#xff0c;等于是在其左边乘了…

向量投影推导

给定一个向量u和v&#xff0c;求u在v上的投影向量&#xff0c;如下图。 假设u在v上的投影向量是u’&#xff0c;且向量u和v的夹角为theta。一个向量有两个属性&#xff0c;大小和方向&#xff0c;我们先确定u’的大小&#xff08;即长度&#xff0c;或者模&#xff09;&#xf…

向量投影

给定一个向量u和v&#xff0c;求u在v上的投影向量&#xff0c;如下图。 假设u在v上的投影向量是u’&#xff0c;且向量u和v的夹角为theta。一个向量有两个属性&#xff0c;大小和方向&#xff0c;我们先确定u’的大小&#xff08;即长度&#xff0c;或者模&#xff09;&#xf…

向量的投影与射影

一、概念比较 ①人教A版&#xff1a;已知两个非零向量与&#xff0c;我们把数量叫做与的数量积&#xff08;或内积&#xff09;&#xff0c;记作&#xff0c;即&#xff0c;其中是与的夹角&#xff0c;&#xff08;&#xff09;叫做向量在方向上&#xff08;在方向上&#xff0…

向量的平面投影 ProjectOnPlane

1 定义 - ProjectOnPlane // // 摘要: // Projects a vector onto a plane defined by a normal orthogonal to the plane. // // 参数: // planeNormal: // The direction from the vector towards the plane. // // vector: // The location of the vector a…

线性代数 --- 投影Projection 一(投影向量p)

线性代数中的投影 之前看过Gilbert strang老爷爷在MIT主讲的线性代数视频&#xff0c;令我印象最深的&#xff0c;就是他讲过的一堂关于投影的课。倒不是这堂课的内容本身有多么的吸引我&#xff0c;反倒是他在这堂课中所说的一句话&#xff0c;时至今日都另我印象深刻。 他的…

空间向量在任意平面的投影公式推导 (矩阵方法)

若 V是Rn 的一个子空间&#xff0c;已知V的一组基向量 {b1, b2, b3,... bk} 则&#xff1a; 可构建矩阵 &#xff1a;A(nxk) {b1 b2 b3 b4...bn} 有&#xff1a; x(m,n,q) 为空间向量 矩阵 A 包含平面的基向量 A(3x3) 根据投影的定义有 &#xff1a; 原向量 - 投影向量 投…

向量投影证明

https://stackoverflow.com/questions/52339320/unity-shader-hlsl-equivalent-of-vector3-projectonplane a 在 b 上的投影 感觉向量还是这样写好看 mathmatica Dot[{1&#xff0c;0} , {-1&#xff0c;0}] // 点乘 是一个数 {1&#xff0c;0} x {-1&#xff0c;0} …

线性代数 --- 投影Projection 六(向量在子空间上的投影)

向量b在多维子空间上的投影 回顾&#xff1a;任意向量b在另一个向量上&#xff08;直线上&#xff09;的投影 在研究向量在子空间上的投影前&#xff0c;先回顾一下前面学习的一个任意向量b在另一个向量a上的投影&#xff0c;共三个部分。 1&#xff0c;求权重系数&#xff08;…

方向余弦,向量夹角,向量的投影

方向余弦&#xff1a;用以确定向量的方向的量.向量(或有向直线)与坐标轴正向或基向量的交角称为向量的方向角.向量的方向角的余弦称为向量的方向余弦.一个向量的方向可以用它的方向角或方向余弦来确定.设向量rxiyjzk的方向角为α&#xff0c;β&#xff0c;γ&#xff0c;则&am…

投影向量=投影长度乘以单位向量

得出结论长度乘以一个向量等于一个向量(投影长度乘以单位向量等于投影向量)

空间向量之间的投影

Math memory&#xff1a;高中数学回顾之向量点积 Q: 求空间向量a(x1,y1,z1) 在空间向量b(x2,y2,z2)上的投影: A: 向量点积公式&#xff1a; 很简单&#xff0c;只要有b向量的方向向量e2(e2x,e2y,e2z),上式就解决了&#xff1b;同理&#xff0c;如果知道a向量的方向向量e1(e1…