0x0 ftp协议简介

  • FTP 英文全称:File Transfer Protocol,中文全称:文件传输协议
    1. 提供交互式的访问,对传输文件的格式和类型有分类,允许文件具有存取权限。适合异构网络任意计算机的传送。
    2. FTP是一种多通道,多连接应用(建立两次TCP三次握手)
  • PS:由于FTP的报文有很多种,并且不是学习的重点,因此不列出报文格式

0x1 ftp如何工作(how?)

  • FTP采用C/S架构,使用TCP可靠的传输服务。一个服务器可为多个设备提供服务1对n。存在主从进程:主进程负责接受新的请求;从属进程负责处理单个请求。
    1. 建立TCP连接
    2. 打开21端口(控制端口),使客户进程能够连接上
    3. 等待客户进程发链接请求。
    4. 启动从属进程来处理客户进程发来的请求。主进程与从进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
    5. 回到等待状态,继续接收其他客户进程的请求。
  • 控制连接和数据连接?
    • 控制连接为数据连接做准备
    • 控制连接的作用:协商数据连接所用的端口,传上传、下载指令(文件操作指令)
    • 数据连接的作用:传输客户端所需要下载的数据

0x1-1 PORT模式(主动模式)

  1. 客户端 主动向 服务器的21端口 请求建立连接
  2. 客户端 告诉 服务器 我开启了一个随机端口
  3. 服务器 主动用20端口向 客户端 建立连接

0x1-2 PASV模式(被动模式)

  1. 客户端 主动向 服务器的21端口 请求建立连接
  2. 服务器 把开启的随机端口告诉 客户端
  3. 客户端 主动向 服务器 开启的端口建立连接

0x2 ftp报文分析