FTP协议
0x0 ftp协议简介
- FTP 英文全称:File Transfer Protocol,中文全称:文件传输协议
- 提供交互式的访问,对传输文件的格式和类型有分类,允许文件具有存取权限。适合异构网络任意计算机的传送。
- FTP是一种多通道,多连接应用(建立两次TCP三次握手)
- PS:由于FTP的报文有很多种,并且不是学习的重点,因此不列出报文格式
0x1 ftp如何工作(how?)
- FTP采用C/S架构,使用TCP可靠的传输服务。一个服务器可为多个设备提供服务1对n。存在主从进程:主进程负责接受新的请求;从属进程负责处理单个请求。
- 建立TCP连接
- 打开21端口(控制端口),使客户进程能够连接上
- 等待客户进程发链接请求。
- 启动从属进程来处理客户进程发来的请求。主进程与从进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
- 回到等待状态,继续接收其他客户进程的请求。
- 控制连接和数据连接?
- 控制连接为数据连接做准备
- 控制连接的作用:协商数据连接所用的端口,传上传、下载指令(文件操作指令)
- 数据连接的作用:传输客户端所需要下载的数据
0x1-1 PORT模式(主动模式)
- 客户端 主动向 服务器的21端口 请求建立连接
- 客户端 告诉 服务器 我开启了一个随机端口
- 服务器 主动用20端口向 客户端 建立连接
0x1-2 PASV模式(被动模式)
- 客户端 主动向 服务器的21端口 请求建立连接
- 服务器 把开启的随机端口告诉 客户端
- 客户端 主动向 服务器 开启的端口建立连接
0x2 ftp报文分析
- 请参考CSDN FTP协议报文详解及FTP穿越NAT