浅谈FTP(文件传输协议)

article/2025/8/18 14:52:46

FTP(文件传输协议)

FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议。是基于TCP协议的应用层协议,用于在网络上传输文件。

在这里插入图片描述

该协议使用的端口号为20和21,其中20是数据端口,21是命令端口(默认情况下)

是否使用20作为传输数据的端口与FTP使用的传输模式有关:如果采用主动模式,那么数据传输端口就是20端口;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定


FTP的目标:

提高文件的共享性和可靠高效地传送数据
在传输文件时,FTP客户端先与服务器建立连接,然后向服务器发送命令。服务器接收到命令后给予响应,并执行命令。
FTP协议与操作系统无关,任何操作系统上的程序只要符合FTP协议,就可以相互传输数据。


FTP协议作用:(提高传输效率)

FTP协议较其他网络协议更为复杂
与一般的C/S应用不同点在于:

一般的C/S应用程序只会建立一个Socket连接,这个连接同时处理服务器端和客户端的连接命令和数据传输。然而FTP协议将命令与数据分开传送,当然这种方法无疑提高了传输效率。


FTP协议简述:

FTP 协议分为两个部分:一部分用于传输控制命令,一部分用于传输数据,比如当前目录或者是要传输的文件。

控制Socket用于传送命令,数据Scoket是用于传送数据

每一个FTP命令发送后,FTP服务器都会返回一串字符串,其中包括一个相应代码和一些说明信息,其中的返回码主要用来判断命令是否被成功执行;

C–>S:命令
S–>C:返回码
每一个FTP发送之后,FTP服务器都会返回一串字符串,其中包括一个返回代码和一串说明信息

FTP 控制帧即指 TELNET 交换信息,包含 TELNET 命令和选项。大多数的FTP控制帧是简单的 ASCII 文本,可以分为 FTP 命令或 FTP 消息。

FTP 消息是对 FTP 命令的响应,由带有解释文本的应答代码构成;



命令端口:

一般来说,客户端有一个Socket用来连接FTP服务器的端口,负责FTP命令的发送和接收返回的响应信息。一些操作如“登陆”,“改变目录”,“删除文件”均依靠这个连接发送命令。


数据端口:

对于有数据传输的操作,主要是显示目录列表,上传,下载文件,这时我们需要依靠另一个Scoket来完成:

使用被动模式:通常服务器会返回一个端口号,客户端需要用另一个Socket来连接这个端口,然后我们可根据操作来发送命令,数据会通过新开的一个端口传输;
在被动模式下,客户端通过控制命令与服务端交互,当需要传输数据时,服务器会在某个端口进行监听,并把端口号通过控制部分返回给客户端,当客户端连接上了这个端口,就可以进行数据的传输。

使用主动模式:通常客户端会发送一个端口号给服务器端,并在这个端口设置监听,服务器需要连接到客户端开放的这个端口,才可以进行数据传输。


简单的 server 和 client 通信的例子:
首先 client 向 server 发送了用户名和密码,server 验证成功后 client 向 server 发送 LIST 请求当前目录的文件列表,并指定使用 PASV 即被动模式。server 打开一个端口,并把地址和端口通过一个六元组的形式返回给了 client,client 只要再连接上这个地址和端口就可以获取到文件列表的数据。
一般来说,被动模式下都是利用类似的方式来传输数据的。



FTP实现的命令:

FTP 控制帧即远程交换信息,包含控制命令和选项
大多数 FTP 控制帧是简单的ASCII文本,用户通过用户PI向服务器PI发出FTP命令,服务器PI执行用户PI的FTP命令,并将执行的结果返回给用户;

FTP 每个命令都有 3 到 4 个字母组成,命令后面跟参数,用空格分开。
每个命令都以"\r\n"结束。

USER [用户名]
PASS [密码]
SIZE:从服务器上返回指定文件的大小。
PWD :显示当前目录。
MKD :创建文件夹。
RMD :删除文件夹。
MLSD :如果目录被命名,列出目录的内容。
TYPE :指定传输模式。
FEAT :获取支持的模式。
LIST :获取当前目录的内容。
CWD : 改变当前目录。
RETR :传输文件。RETR(Retrieve,检索)命令
retr这条命令会让服务器给客户传送一份在路径名中指定的文件的副本。并不会影响该文件在服务器站点上的状态和内容。


FTP 的主要功能如下:

提供文件的共享(计算机程序 / 数据);
支持间接使用远程计算机;
使用户不因各类主机文件存储器系统的差异而受影响;
可靠且有效的传输数据。

FTP传输文件类型:

1.文本(ASCII)方式— A(文本文件的传输采用ASCII方式,一般FTP默认为ASCll文件传输方式)
2.二进制(Binary)----- I (图象、声音文件、加密和压缩文件等非文本文件采用二进制方式传输)
3.EBCDIC文件类型------ E (该文本文件传输方式要求两端都是EBCDIC系统)

FTP返回码/响应码:

(响应代码 / 解释说明)

110 新文件指示器上的重启标记
120 服务器准备就绪的时间(分钟数)
125 打开数据连接,开始传输
150 打开连接
200 成功
202 命令没有执行
211 系统状态回复
212 目录状态回复
213 文件状态回复
214 帮助信息回复
215 系统类型回复
220 服务就绪
221 退出网络
225 打开数据连接
226 结束数据连接
227 进入被动模式(IP 地址、ID 端口)
230 登录完成
250 文件行为完成
257 路径名建立
331 要求密码
332 要求帐号
350 文件行为暂停
421 服务关闭
425 无法打开数据连接
426 结束连接
450 文件不可用
451 遇到本地错误
452 磁盘空间不足
500 无效命令
501 错误参数
502 命令没有执行
503 错误指令序列
504 无效命令参数
530 未登录网络
532 存储文件需要帐号
550 文件不可用
551 不知道的页类型
552 超过存储分配
553 文件名不允许

RETR和STOR命令(重点介绍)

RETR和STOR命令是FTP协议中的下载和上传命令, 可以针对文件和目录:

一. 下载文件

客户端命令序列:

打开Telnet窗口(称为"控制窗口")
telnet 【ip】(连接FTP Server) —> user 【用户名】(登录) —> pass 【密码】 —> rest 0 (从文件最开始出下载) —> pasv (服务器返回连接端口)

—>retr test.txt (下载文件"test.txt"), 在数据窗口中可以看到指定下载的test.txt文件的内容;

对于下载操作来说, 是服务器读出文件内容, 用IP数据包传递到客户端, 客户端写入本地硬盘;

二. 上传文件

打开telnet窗口(称为"控制窗口")
telnet 【ip】–> user 【用户名】 (登录) —> pass 【密码】—> type i (使用二进制传输) —> size xxx.txt, cwd /xxx.txt (判断要上传的xxx.txt文件是否在服务器上已存在) —> pasv (服务器返回连接端口) —> stor xxx.txt (告知服务器准备上传文件xxx.txt)

对于上传操作来说, 是客户端读出文件内容, 传递到服务器端, 服务器端写入本地硬盘. 如果目录中还包括子目录, 则形成了递归操作.


RETR命令复现:(靶机环境下)

我们使用telnet命令进行远程登陆:

命令:telnet 192.168.10.140 110
telnet是Iteret的远程登录协议,可以通过它远程登录来控制别的计算机

在这里插入图片描述

输入:
user [用户名]
pass [密码]
list(输出文件列)

使用retr命令下载文件
RETR和STOR命令是FTP协议中的下载和上传命令, 可以针对文件和目录

在这里插入图片描述

在这里插入图片描述
可以看到使用retr命令后,在kali终端数据窗口中,服务器成功读出文件内容, 并用IP数据包传递到客户端, 客户端写入本地硬盘;


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

相关文章

FTP协议

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

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

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

向量投影公式

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

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

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

向量投影推导

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

向量投影

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

向量的投影与射影

一、概念比较 ①人教A版:已知两个非零向量与,我们把数量叫做与的数量积(或内积),记作,即,其中是与的夹角,()叫做向量在方向上(在方向上&#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主讲的线性代数视频,令我印象最深的,就是他讲过的一堂关于投影的课。倒不是这堂课的内容本身有多么的吸引我,反倒是他在这堂课中所说的一句话,时至今日都另我印象深刻。 他的…

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

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

向量投影证明

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

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

向量b在多维子空间上的投影 回顾:任意向量b在另一个向量上(直线上)的投影 在研究向量在子空间上的投影前,先回顾一下前面学习的一个任意向量b在另一个向量a上的投影,共三个部分。 1,求权重系数(…

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

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

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

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

空间向量之间的投影

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

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

点在直线的投影坐标 n维向量投影坐标 几何投影坐标 【转载请注明出处】http://blog.csdn.net/guyuealian/article/details/53954005 一、点在直线的投影坐标 如下图所示,直线l1:ykxb,直线外有一点P(x0, y0),问:点P在直…