【网络知识】FTP主被动模式介绍及抓包分析
一.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主被动模式介绍及抓包分析的更多相关文章
- 爬虫系列(二) Chrome抓包分析
在这篇文章中,我们将尝试使用直观的网页分析工具(Chrome 开发者工具)对网页进行抓包分析,更加深入的了解网络爬虫的本质与内涵 1.测试环境 浏览器:Chrome 浏览器 浏览器版本:67.0.33 ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...
- 网络协议抓包分析——TCP传输控制协议(连接建立、释放)
前言 TCP协议为数据提供可靠的端到端的传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方.TCP协议是面向连接的,在两台主机使用TCP协议进行通信之前,会先建立一个TCP连接(三次握手) ...
- 网络协议抓包分析——ARP地址解析协议
前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...
- FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接
一.为什么写这个 昨天遇到个ftp相关的问题,关于ftp匿名访问的.花费了大量的脑细胞后,终于搞定了服务端的配置,现在客户端可以像下图一样,直接在浏览器输入url,即可直接访问. 期间不会弹出输入用户 ...
- python编写网络抓包分析脚本
python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...
- 网络协议抓包分析——IP互联网协议
前言 IP协议是位于OSI模型的第三层协议,其主要目的就是使得网络间可以相互通信.在这一层上运行的协议不止IP协议,但是使用最为广泛的就是互联网协议. 什么是IP数据报 TCP/IP协议定义了一个在因 ...
- Java网络编程学习A轮_02_抓包分析TCP三次握手过程
参考资料: https://huoding.com/2013/11/21/299 https://hpbn.co/building-blocks-of-tcp/#three-way-handshake ...
- Wireshark抓包分析/TCP/Http/Https及代理IP的识别
前言 坦白讲,没想好怎样的开头.辗转三年过去了.一切已经变化了许多,一切似乎从没有改变. 前段时间调研了一次代理相关的知识,简单整理一下分享之.如有错误,欢迎指正. 涉及 Proxy IP应用 原理/ ...
- wireshark 抓包分析 TCPIP协议的握手
wireshark 抓包分析 TCPIP协议的握手 原网址:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇 ...
随机推荐
- linux服务器qps查询,查看当前linux服务器的QPS
https://blog.csdn.net/weixin_42119281/article/details/116595205 QPS:每秒查询率(QPS,Queries-per-second)是对一 ...
- Linux 大文件按大小切割,合并还原
工作中,由于堡垒机限制,大文件无法上传,故产生切割大文件上传后合并还原的需求. 不说废话,直接上干货: 切割: 1.1G文件,切割为200M大小的几个文件: split ...
- TypeScript 学习笔记 — 自定义类型:部分属性可选,反选 key,求对象交差并补集等(十三)
目录 将部分属性变为可选属性 根据值的类型 反选 key 写法一:基础原理写法,使用不同的内置类型,Pick 和 Omit 写法二:基础原理写法,使用 Pick 内置类型 + 传参的方式 写法三:使用 ...
- 二进制安装Kubernetes(k8s) v1.24.3 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.24.3 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes(k8s)二进制高可用安装部署,支 ...
- modbus_new_rtu
/** * modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit); * 这个函数会 ...
- [SpringBoot]Spring Boot Framework @ Environment / ApplicationContext & SpringApplication
[#]: 表示较为重要 1 Spring Boot Overview SpringBoot是一个快速开发框架,快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化XML配置,全 ...
- [数据库/Linux]CentOS7安装MySQL Percona版(RPM方式)
OS: CentOS7 (x86_64) MySQL: MySQL Percona 5.7.31-34 0 前置条件 已配置完成YUM源 已卸载先前可能安装的MySQL rpm -qa | grep ...
- Semantic Kernel 入门系列:🛸LLM降临的时代
不论你是否关心,不可否认,AGI的时代即将到来了. 在这个突如其来的时代中,OpenAI的ChatGPT无疑处于浪潮之巅.而在ChatGPT背后,我们不能忽视的是LLM(Large Language ...
- Redis源码之SDS简单动态字符串
Redis 是内存数据库,高效使用内存对 Redis 的实现来说非常重要. 看一下,Redis 中针对字符串结构针对内存使用效率做的设计优化. 一.SDS的结构 c语言没有string类型,本质是ch ...
- Go语言基础: goroutine和通道
并发编程表现为程序由若干个自主的活动单元组成. goroutine 在Go语言里,每一个并发执行的活动称为goroutine.当一个程序启动时,只有一个goroutine来调用main函数,称之为主g ...