ftp协议

FTP: 文件传输协议 File Transfer Protocol。

ftp的主要功能是传输文件到远程主机/从远程主机下载文件。

FTP协议

FTP(File Transfer Protocol)是应用层的一个文件传输协议。其主要作用是在服务器和客户端之间实现文件的传输和共享。

FTP协议运行在TCP连接上,保证了文件传输的可靠性(运行在UDP协议上的是TFTP协议)

FTP的两种传输方式

FTP支持两种方式的传输:文本(ASCII)方式和二进制(Binary)方式。

通常文本文件的传输采用ASCII方式,而图象、声音文件、加密和压缩文件等非文本文件采用二进制方式传输。FTP以ASCII方式作为默认的文件传输方式。

FTP的两种传输模式

FTP有两种传输模式:主动(FTP Port)模式和被动(FTP Passive)模式。

由于主动模式存在着安全问题,最近几年,大部分的TFP客户端开始默认使用被动模式。

主动模式(Port)

主动模式的核心是TFP客户端告诉服务端自己开发那个端口作为数据端口,然后让服务端来连接自己。

1 客户端随机打开一个本地大于1024的端口P1。

2 客户端通过端口P1向服务器控制端口(默认端口21)发起连接请求。

3 服务器进行认证成功,请求建立。

4 客户端对本地端口P2进行监听并向服务器发送“Port P1+1”告诉服务器,客户端的数据监听端口。

5 服务器收到端口后,从自己的数据端口(默认端口20)发起连接,连接到客户端指定的数据端口P1+1.

被动方式(Passive)

由于主动方式中,服务端需要主动连客户端,对于客户端的防火墙来说,属于外部连接内部,会出现被阻塞的情况。被动方式解决了这个问题。 被动连接的核心是控制连接请求和数据连接请求都是由客户端发起。

1 客户端任意打开大约1024的两个本地端口(P1和P1+1).

2 P1端口发送请求连接服务器的21端口(控制连接端口)同时提交PASV命令。

3 服务器收到请求后,会开启任意一个大约1024的端口P2. 然后返回如下格式内容:

227 entering passive mode(h1,h2,h3,h4,p1,p2)

4 客户端收到服务端返回的内容后,计算出服务端开放的数据连接端口.

5 客户端通过P1+1端口向服务端的发送连接请求。进行数据传输。 关于服务端返回的报文格式(h1,h2,h3,h4,p1,p2)具体含义如下:

h1,h2,h3,h4代表服务器的ip地址;
p1,p2代表服务器监听的数据连接端口地址。计算方法为P1*256+P2

FTP的限制

对于FTP服务器来讲,他必须在整个会话期间保持用户的状态(state),特别是,服务器必须把特定的用户账户与控制联系起来,用户在远程目录树上不断跳转时,服务器必须追踪到用户在远程树上的当前位置,换句话说,当客户端用户数量不断增多,FTP服务器所要维持的会话总数,也会迅速增长。着会大大限制FTP服务器的性能。