【网络知识】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:批量上传文件
所有内容只为了记录学习过程,后续会继续补全完善,部分内容来源于网络,侵删。