FTP服务
ftp协议:文件传输协议
- 协议定义了一个远程计算机系统和本地计算机系统之间传输文件的一个标准
- FTP运载OSI七层模型的应用层,并利用传输协议TCP在不同主机之间提供可靠的数据传输
- FTP在文件传输中还支持断点续传功能,可以大幅的减少CPU网络带宽的开销
ftp模型
- 用户接口: 提供了一个用户接口并使用用户端协议解释器的服务
- 客户端协议解释器:向远程主机发送命令,并建立客户端数据传输过程
- 服务端协议解释器:响应客户端协议发出的命令并驱动服务器的数据传输
- 客户端数据传输协议:负责完成和服务端数据传输过程及客户端本地文件系统的通信
- 服务端数据传输协议:负责完成和客户端数据传输过程及服务端本地文件系统的通信
- 连接方式:不同的连接方式需要合适的服务质量
- 控制连接: 建立连接及命令发送和响应(需要更小的延迟时间) 21端口
- 数据连接: 用于数据传输(需要更大的数据吞吐量) 20端口
控制连接
- 主要用来传输实际通信中需要执行的FTP命令以及命令响应
- 只需要很小的网络带宽
- FTP服务器监听在21端口来等待控制连接建立
- 建立控制连接之后,还需要验证客户端身份,决定是否建立数据连接
- 当需要目录列表,传输文件时,才建立数据连接,并且每次客户端都会使用不同的随机端口来建立数据连接;当数据传输完毕之后,就断开数据连接
- 在FTP连接期间,控制连接始终保持连接状态,在数据连接存在的期间,控制连接必须存在,一旦控制连接断开,数据连接会自动断开。
数据连接
- FTP服务端监听在20端口上等待数据连接
- 数据连接依赖于控制连接
主动模式
- 三次握手建立控制连接,客户端的端口是随机的,目标端口是21
- 控制连接建立完成之后,客户端进行验证,协商数据连接采用的模式(主动模式)
随后客户端会向FTP服务端发送Port报文,表明自己的IP地址及端口号信息;等待FTP服务端20端口主动地发起数据连接请求 - 服务端发送数据连接请求,连接建立之后开始进行数据传输
被动模式
- 三次握手建立控制连接,客户端的端口是随机的,目标端口是21
- 控制连接建立完成之后,客户端进行验证,协商数据连接采用的模式(被动模式)
客户端向服务端发送PASV报文,表示我们用被动模式 - 服务端在收到PASV报文,向客户端发送Port报文,表明自己的IP地址及端口号信息;
- 客户端发送数据连接请求,建立数据连接
- 关键点: 主动和被动在于服务端是主动建立数据连接还是被动建立数据连接。