FTP概念
FTP(File Transfer Protocol,文件传输协议)是用于Internet上控制文件的双向传输的标准规范。它也是一个应用程序。属于TCP/IP网络模型中的应用层协议。
一、FTP工作原理:
- 客户端向服务器发出连接请求,同时客户端会打开一个大于1024的端口等候服务器连接(例如:1030端口)。
- 当FTP服务器在端口21侦听到该请求,则会在客户端1030端口和服务器的21端口之间建立起一个FTP会话连接。
- 当客户端有数据传输请求时,FTP客户端在动态打开一个大于1024的端口(例如:1031),与FTP服务器的20端口连接,建立数据传输通道。
- 当数据传输完成后,数据传输通道自动断开,两个端口自动关闭。
- FTP客户端断开与FTP服务器的连接时,客户端上动态分配的端口自动释放。
注意:FTP的会话通道的建立,以及传输通道的建立,都是建立在tcp三次握手的应答基础上的。
二、FTP服务器默认端口:
控制连接端口:21
- 主要用于命令传输,包括用户名,密码,设置传输方式等命令(又称命令通道)。
数据连接端口:20
- 主要用于文件数据传送(ftp-data)。
三、FTP服务数据通道建立的两种模式。
1. 主动方式(Active FTP)
2. 被动方式(Passive FTP)
区别:
主动和被动相对于服务器而言:
- 数据连接由服务器发起的称为主动方式,
- 数据连接由客户端发起称为被动连接。
主动连接模式: |
---|
FTP客户端随机开启一个大于1024的端口N(1025),向服务器的21端口发起连接。然后开启一个N+1(1026)端口进行监听,并向服务器发出PORT 1026(指定ip和端口的请求)命令。服务器接收到命令后,会用本地的FTP数据端口20来连接客户端指定的端口1026,进行数据传输。
被动连接模式: |
---|
FTP客户端随机开启一个大于1024的端口N(1025),向服务器的21端口发起连接。同时开启一个N+1(1026)端口,然后向服务器发送PASV(通知服务器开放端口)命令,通知服务器自己属于被动模式。服务器收到命令后,会开放一个大于1024的端口P(1520)进行监听,然后用PORT P(指定ip和端口的请求)命令通知客户端,客户端收到后会通过1026号端口连接服务器的1520号端口,然后两个端口之间进行数据传输。