一.FTP是什么

FTP,即文件传输协议(File Transfer Protocol,FTP),基于该协议客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成两个连接,一个用来控制连接,传输FTP命令,标准端口为21;另一个用于上传、下载数据,标准端口为20。FTP有两种工作模式,分别是主动模式被动模式,下面将对其进行详细介绍。

##

本次测试环境的客户端和服务端均为linux系统,服务端为Vsftp 服务器

客户端ip:192.168.13.104

服务端ip:192.168.13.111

##

 

二.被动模式(较为常用)

具体流程

1.客户端连接到服务器的21端口(默认命令端口)

2.客户端发送pasv命令,请求服务器进入被动模式(linux客户端默认为passive模式)

3.服务器打开一个监听端口,并告知客户端

4.客户端收到响应后,主动连接到服务器的监听端口

下图为被动模式抓包截图,供参考学习

ACK包就不做分析了

1-3    三次握手,建立tcp连接,由此也能看出来ftp协议是基于tcp协议的

4       服务端响应ftp连接

6       客户端输入用户名

8       服务端提示请输入密码

10     客户端输入密码

11     服务端响应登录成功

13     客户端查询服务器系统类型

14     服务端返回系统类型

16     客户端请求被动模式

17     服务端响应进入被动模式,并将监听的端口13365发给客户端 (52x256+53=13365)

19-21三次握手,建立tcp连接

22      客户端查询目录(dir)

23      服务端响应

24      服务器传递目录详细信息

25,27-29  四次挥手

30      服务端提示传送完毕

32      设定传输模式为二进制模式

33      服务端返回设定的结果 

40      服务端请求下载文件(get 13111.txt)

41      服务端显示当前为binary传输模式

42      开始数据传输

43-46 四次挥手

47      服务端提示传输完成

49      客户端请求退出

50      服务端响应退出请求

 

三.主动模式

具体流程

1.客户端连接到服务器的21端口(默认命令端口)

2.客户端打开一个监听端口,并通过port命令告知服务器

3.服务器收到port命令后,通过服务器的20端口主动连接到客户端的监听端口

下图为主动模式抓包,供参考学习

 上面的被动模式已经说的较为详细,这里只介绍主动模式与其不同的地方

19    客户端给服务端发送监听的ip和端口,等待服务端来主动连接(linux默认为被动模式,输入pass切换到主动模式)

20    服务端响应已经收到port命令

不管是主动还是被动,这个都是相对于服务器而言的。所以被动模式,可以简单的理解为服务器被动的等着客户端来连接它。(人话版本)

 

四.FTP常用的命令

dir:显示服务器目录和文件列表ls:显示服务器简易的文件列表cd:进入服务器指定的目录pwd:查看当前工作目录rename filename newfilename:重命名FTP服务器上的文件delete filename:删除FTP服务器上的文件help[cmd]:显示FTP命令的帮助信息,cmd是命令名,如果不带参数,则显示所有FTP命令close:结束与服务器的FTP会话quit:结束与服务器的FTP会话并退出FTP环境bye: 退出ftp会话过程get:下载指定文件 get filename [newname](filename为下载的FTP服务器上的文件名,newname为保存在本地计算机上时使用的名字,如果不指定newname,文件将以原名保存。mget aa cc:批量下载put aa.txt:上传文件mput aa cc:批量上传文件

 

所有内容只为了记录学习过程,后续会继续补全完善,部分内容来源于网络,侵删。

作者:|母粒|,原文链接: https://www.cnblogs.com/Mourinkun/p/17481140.html

文章推荐

Spring Boot 配置文件总结

稀疏数组

Generative Pre-trained Transformer(GPT)模型技术初探

逍遥自在学C语言 | 位运算符&的高级用法

最强分布式搜索引擎——ElasticSearch

深入学习 Spring Web 开发 —— BeanDefinition(上)

很漂亮的Python验证码(记录)

PHP验证码的语言包&预警信息通知总结

Selenium+Python系列(三) - 常见浏览器操作

一文带你看懂Java中的Lock锁底层AQS到底是如何实现的

关于基础RMQ——ST算法

【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint...