一.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:批量上传文件

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

【网络知识】FTP主被动模式介绍及抓包分析的更多相关文章

  1. 爬虫系列(二) Chrome抓包分析

    在这篇文章中,我们将尝试使用直观的网页分析工具(Chrome 开发者工具)对网页进行抓包分析,更加深入的了解网络爬虫的本质与内涵 1.测试环境 浏览器:Chrome 浏览器 浏览器版本:67.0.33 ...

  2. Wireshark数据抓包分析——网络协议篇

                   Wireshark数据抓包分析--网络协议篇     watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...

  3. 网络协议抓包分析——TCP传输控制协议(连接建立、释放)

    前言 TCP协议为数据提供可靠的端到端的传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方.TCP协议是面向连接的,在两台主机使用TCP协议进行通信之前,会先建立一个TCP连接(三次握手) ...

  4. 网络协议抓包分析——ARP地址解析协议

    前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...

  5. FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接

    一.为什么写这个 昨天遇到个ftp相关的问题,关于ftp匿名访问的.花费了大量的脑细胞后,终于搞定了服务端的配置,现在客户端可以像下图一样,直接在浏览器输入url,即可直接访问. 期间不会弹出输入用户 ...

  6. python编写网络抓包分析脚本

    python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...

  7. 网络协议抓包分析——IP互联网协议

    前言 IP协议是位于OSI模型的第三层协议,其主要目的就是使得网络间可以相互通信.在这一层上运行的协议不止IP协议,但是使用最为广泛的就是互联网协议. 什么是IP数据报 TCP/IP协议定义了一个在因 ...

  8. Java网络编程学习A轮_02_抓包分析TCP三次握手过程

    参考资料: https://huoding.com/2013/11/21/299 https://hpbn.co/building-blocks-of-tcp/#three-way-handshake ...

  9. Wireshark抓包分析/TCP/Http/Https及代理IP的识别

    前言 坦白讲,没想好怎样的开头.辗转三年过去了.一切已经变化了许多,一切似乎从没有改变. 前段时间调研了一次代理相关的知识,简单整理一下分享之.如有错误,欢迎指正. 涉及 Proxy IP应用 原理/ ...

  10. wireshark 抓包分析 TCPIP协议的握手

    wireshark 抓包分析 TCPIP协议的握手 原网址:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇 ...

随机推荐

  1. Go接入kafka

    需要借助的库 github.com/Shopify/sarama // kafka主要的库* github.com/bsm/sarama-cluster // kafka消费组 生产者 package ...

  2. vue在js公用文件中使用this

    main.js 中 let $vue = new Vue({ router, el: '#app', render: h => h(App) }); export default $vue 在j ...

  3. API获取商品评论?

    前言 小伙伴们好,前两天因为个人原因耽误了内容的更新,在这里和所有的小伙伴道个歉,今天CC和大家唠唠商品评论的这个话题,大家在网上购物的决策会因为<商品评论的好坏>吗,相信绝大的一部分的小 ...

  4. ChatGPT 和 Midjourney 初体验

    ChatGPT 和 Midjourney 这两个系统这些天红的发紫,自己也尝试着注册和使用了一下. 一.ChatGPT 我在上周才刚刚注册 OpenAI,注册过程也比较麻烦. 国内的 IP 是无法访问 ...

  5. 关于取消DevTools listening on ws://127.0.0.1…提示的方法

    Python代码写好之后,通过任务计划程序定期执行.py文件,但总会有命令窗口,虽然不影响程序执行,但每次需要手动叉掉比较烦.于是我网上搜索了一些方法. 网上的方法并没有直接解决我的问题,但我借助搜索 ...

  6. day134:2RenMJ:TypeScript的抽象类&装饰器&命名空间&模块&编译配置文件&python中的类型注解

    目录 1.抽象类 2.装饰器 3.命名空间 4.模块 5.编译配置文件 6.python的类型注解 1.抽象类 抽象类(abstract class)做为其它派生类的基类使用. 它们一般不会直接被实例 ...

  7. 快速搭建一个go语言web后端服务脚手架

    快速搭建一个go语言web后端服务脚手架 源码:https://github.com/weloe/go-web-demo web框架使用gin,数据操作使用gorm,访问控制使用casbin 首先添加 ...

  8. MINIO使用

    1.作用 官网地址:https://docs.min.io/ 文件存储.文件对象的上传.下载和删除! 2.使用依赖 <dependency> <groupId>io.minio ...

  9. 一天吃透SpringMVC面试八股文

    说说你对 SpringMVC 的理解 SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个模块. 它通过一套注解,让一个简单的Jav ...

  10. 从原理聊JVM(二):从串行收集器到分区收集开创者G1

    作者:京东科技 康志兴 1 前言 随着Java的进化过程,涌现出各种不同的垃圾回收器,从串行执行到并行执行,从高吞吐到低延迟,终极目标就是让开发人员专注于程序的代码书写而无需关注内存管理. JDK早期 ...