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

浅谈FTP(文件传输协议)相关推荐

  1. 网络协议从入门到底层原理(10)WebSocket、WebService、RESTful、HTTPDNS、FTP文件传输协议、邮件相关协议、IPv6

    其他协议 WebSocket WebSocket - 建立连接 WebService RESTful HTTPDNS FTP文件传输协议 邮件相关的协议(SMTP.POP.IMAP) POP vs I ...

  2. 网络编程之FTP文件传输协议

    FTP文件传输协议: 一.简述: 1.TCP/IP协议簇,应用层协议,采用服务端与客户端通信方式共享文件. 2.FTP根目录:/            (如路径: /hello/) 3.现在的FTP一 ...

  3. 计算机网络 P43 网络应用模型 P44 DNS系统 P45 FTP文件传输协议

    DNS系统: FTP文件传输协议  

  4. Day4:应用层——FTP :文件传输协议、电子邮件(EMail)、DNS(Domain Name System)、P2P应用(一类应用)

    加油!偷博人! 一.FTP文件传输协议  向远程主机上传输文件或从远程主机接收文件  客户/服务器模式  客户端:发起传输的一方  服务器:远程主机  ftp: RFC 959  ftp服 ...

  5. FTP文件传输协议(实现windows与linux文件互传)

    FTP文件传输协议(实现windows与linux文件互传) 目录 FTP文件传输协议(实现windows与linux文件互传) 一.FTP概述 二.FTP通信端口 三.FTP数据连接 四.FTP连接 ...

  6. FTP文件传输协议原理详解(两种工作模式)

    初始FTP     文件传输协议(File Transfer Protocol,缩写:FTP)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议.文件传送(file transfer ...

  7. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

  8. 互联网协议 — FTP 文件传输协议

    目录 文章目录 目录 FTP vsftpd 自动模式和被动模式 PORT 主动模式 PASV 被动模式 访问控制方式 部署配置 FTP Server Global config Anonymous U ...

  9. 中科大 计算机网络13 FTP文件传输协议

    FTP FTP:文件传输协议 早期分享文件采用FTP方式 客户端:下载文件 服务器:上传文件 FTP:控制连接 先建立控制连接[调用一系列Socket API],服务器守候在21端口;进行身份认证[用 ...

最新文章

  1. 计算机里面的百度云怎么弄消失,我换了个手机登录我的百度网盘,里面存的东西都不见了,谁能告诉我怎么弄回来么...
  2. jsp中文件下载的实现
  3. Kotlin实战指南六:可空类型、非可空类型
  4. mysql_fetch_row ()出现段错误_207国道邵阳县段道路指示牌上出现错误,百姓疑惑”唐田市“在哪里...
  5. ssl2344P2835-刻录光盘【Floyd,联通块数,图论】
  6. [改善Java代码]非稳定排序推荐使用List
  7. Angular5.0之 安装指定版本Angular CLI
  8. HTML表格和列表笔记练习!DOCTYPE html html lang=en head meta charset=UTF-8 title关于表格的一些练...
  9. AC日记——「SCOI2015」情报传递 LiBreOJ 2011
  10. CTP: 找ActionDay 和TradingDay说点事
  11. 五脏六腑在脸上的反射区图片_痘痘脸部反射区图痘痘的位置反射五脏六腑的病症 [哈哈镜]...
  12. 采购订单中带账户分配的总账科目确定(M和E的区别)
  13. java安装未指定的错误_安装redistributable(x64)出现0x80240017未指定的错误
  14. 事件研究法python代码
  15. FPGA DDR2操作
  16. Jquery选择器之可见性选择器、属性过滤选择器
  17. ISRC活动来袭,快来领福利!
  18. 苹果手机iOS用fiddler抓不了https的包
  19. 网站外链和反向链接的区别(怎么区分外链与反向链接)
  20. FLT_EPSILON为什么等于1.192093e-007

热门文章

  1. 软件测试具有哪些优势
  2. Pyecharts坑之一---“画图不显示“
  3. 零基础入门天池NLP赛事之——新闻文本分类(5)
  4. pyspark入门教程
  5. 最大似然估计(MLE)与最小二乘估计(LSE)的区别
  6. Android 录音文件有杂音,录音文件时长比实际时长长问题解决
  7. 汇编:CPU结构 - FLAG标志寄存器和相关指令
  8. 您玩过这十三款iOS策略游戏了吗?
  9. 从100PV到1亿级PV网站架构演变(转)
  10. 【弱的C艹之路。。未完待续】