最近在做一个项目,要使用ftp服务器,我将其部署在了腾讯云云服务器上面:
我使用127.0.0.1可以连接上该ftp服务,但是使用云服务器公网ip可以连接上,但是出现了使用ls超时的问题:
经过查阅资料发现,卡死的部分前面是我的公网ip,后面的数字253*256+87其实是我的端口号,只需要开放该端口号即可。
并且由于该端口号是随机的,但是它的范围是固定的,端口号的范围是64000-65000,在腾讯云上将它们开放即可。
一些知识
我将自己查询的资料也分享出来。
首先我们需要知道的是使用Ftp服务的时候实际上会建立两个tcp链接,一个称为控制连接(用于客户端向服务端发送指令),一个称为数据链接(用于传输数据)。而主动模式和被动模式是基于数据链接的。
在进行控制连接的时候,客户端会通过21端口号和服务端连接,然后再判断是主动模式还是被动模式,从而确定传输数据的方式。
主动模式服务器通过控制连接知道客户端监听的端口后,使用自己的20号端口作为源端口,“主动”发起TCP数据连接。而被动模式服务器监听1024-65535的一个随机端口,并通过控制连接将该端口告诉客户端,客户端向服务器的该端口发起TCP数据连接,这种情况下数据连接的建立相当于服务器是“被动”的。
在linux下默认是被动模式,而在windows下默认是主动模式。