当前位置:   article > 正文

浅谈FTP(文件传输协议)_ftp retr

ftp retr

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数据包传递到客户端, 客户端写入本地硬盘;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/255398
推荐阅读
相关标签
  

闽ICP备14008679号