FTP协议分析
一、概述
FTP网络共享文件传输协议,FTP客户端程序与服务器建立连接,从而双方可以进行文件的传输,FTP使用两个端口分别用于传输命令和传输数据。
1. 命令端口
命令端口主要负责FTP命令的发送,当客户端向服务器端发送命令时,服务器端会响应相关信息,其中的返回码主要是用于判断命令是否被成功执行了。
2. 数据端口
数据传输主要用于显示目录列表和上传下载文件,通常分为主动模式和被动模式
-
主动模式:客户端发送端口号N给服务器,并在N+1端口进行监听,服务端会使用数据端口(20)连接此端口进行文件的传输
-
被动模式:开启FTP连接时客户端打开两个任意本地端口(N>1024和N+1),第一个端口用于连接服务器的21端口进行命令的传输。服务器会开启任意一个端口(P>1024),返回例如"227 entering passive mode (127,0 ,0,1, 20 ,28)"。此数字前四个表示服务器地址,倒数第二个数字乘256+最后一个数字,则为服务器开放的端口,此时客户端利用N+1端口来连接此端口来进行数据的传输
-
Windows cmd下默认为主动模式,更改ftp为被动的方法:
ftp> quote PASV -
Linux ftp命令下默认为被动模式,更改为主动的方法:
ftp> passive
3. 主要FTP命令
USER:指定用户名
PASS:指定用户密码
SIZE:从服务器返回指定文件大小
CWD:改变工作目录
PASV:进入被动模式,使服务器在数据端口监听
PORT:使服务器在数据端口监听,进入主动模式
RETR:下载文件
STOR:上传文件
QUIT:关闭与服务器的连接
二、实验过程
1. 实验环境
使用xShell连接服务器(Ubuntu)
2. 实验配置
- 在Ubuntu中安装vsftpd来开启ftp服务:sudo apt-get install vsftpd
- 具体Ubuntu中ftp的配置在此处不多赘述
- 在xshell中建立ftp连接
3. 数据包分析
3.1 上传文件
3.2 下载文件