FTP(File Transfer Protocol)-文件传输协议
基本原理
是一种用于在网络上进行文件传输的标准协议。它基于客户端-服务器模型,通过控制连接和数据连接实现文件的上传和下载操作
连接建立的过程
- 服务器首先运转起来,守候在TCP的21号端口,等待用户通过21号端口与FTP服务器建立连接。
- 客户端请求建立连接:客户端发起建立连接的请求,这个请求通常是TCP SYN包,用来建立TCP连接
- 登录过程:建立控制连接后,客户端通过USER和PASS命令来完成登录的过程,服务器会验证客户端提供的用户名和密码。
- 服务器响应连接:服务器接收连接后,会发送一个TCP SYN-ACK包作为响应,客户端收到后会发送一个TCP ACK包来完成三次握手的过程,从而建立控制连接
-
控制连接:用于发送FTP命令和接收服务器响应。控制连接使用TCP的21端口,整个会话期间一直保持打开状态。
-
数据传输:用于实际的文件数据传输。数据连接的端口和建立方式取决于FTP的工作模式。
工作模式
-
主动模式(PORT):客户端向FTP服务器的数据端口(默认为20)发起连接请求,服务器接收到请求后,从自己的数据端口向客户端发送数据。
-
被动模式(PASV):客户端向FTP服务器的控制端口(默认为21)发送PASV命令,请求服务器开启一个随机的数据端口进行监听,服务器会返回一个包含该数据端口号的响应给客户端,客户端接收到响应后,主动向服务器返回的数据端口发起连接请求。
主动模式和被动模式的本质区别
- 控制和数据连接的发起方:
- 主动模式:服务器发起数据连接。
- 被动模式:客户端发起数据连接。
- 端口使用:
- 主动模式:服务器使用20号端口,客户端使用本地临时端口。
- 被动模式:服务器返回一个临时端口,客户端使用这个临时端口。
- 适用场景:
- 主动模式:适用于客户端在防火墙或NAT(网络地址转换)后面的情况,但服务器必须能够主动连接到客户端的临时端口。
- 被动模式:适用于客户端和服务器都在防火墙或NAT后面的情况,客户端可以主动连接到服务器的临时端口,避免了复杂的端口映射和防火墙规则。
- 总结
- 主动模式:服务器主动发起数据连接,使用20号端口连接到客户端的临时端口。
- 被动模式:客户端主动发起数据连接,使用服务器返回的临时端口连接到服务器的21号端口。
补充说明
- 缺点:用户名和口令都是明文传输的
- 特点:控制连接和数据传输是在两个不同的TCP上进行的
- ftp是有状态的协议,服务器需要维护客户端的状态
- 21端口:用于控制连接,控制连接用于传输FTP命令和服务器响应
- 20端口:用于主动模式下的数据传输
- 随机端口:用于被动模式的数据传输
- FTP使用两条TCP连接完成文件的传输,一条是控制连接,一条是数据连接