FTP是文件传输协议的简称。利用这个协议定义的标准可以建立一个通信模型,用来传输客户端和服务器之间需要传输的各种数据。
为了保证控制信息的安全,这个通信模型使用了两个端口。
看了网上一些资料,思考了一下。
鄙人认为,使用两个端口可以更方便进行实时的文件传输和文件控制操作。这才符合FTP的隐藏含义,可以远端进行实时的命令 操作同时还能进行数据传输。也因为使用两个端口,服务器和客户端的传输也更安全。
再来说说这个两个端口的主动和被动问题。
很多老师讲课,没有主谓宾,以为自己理解了,别人就应该理解。
这样就导致了学生努力听课,却不能理解老师的话,浪费了大好的青春!
闲话少说,主动传输和被动传输的主和从是谁呢?
(在服务器/客户端模型中)既然大家都认可是服务器提供数据,那么就应该是:服务器是主,客户端是从。
主动模式就是服务器传输数据的方式是主动方式,服务器主动传输数据到客户端。
被动模式就是服务器被动进行数据传输,客户端直接向服务器要数据。
这里要注意一个问题,服务器提供数据的前提是客户端提出了请求。但是不能 因为这个请求是客户端提出的就误以为客户端是主!只有客户端提出了要求,服务器才会提供数据。
20端口是用来传输数据的端口,是固定的。
21端口是用来传输控制信息的端口,也是固定的。
FTP传输数据的时候还会用到第三个随机端口来传输数据。
20端口只有服务器在用。客户端使用任意端口都是可行的。
当服务器开启的是20端口,而客户端开启的是随机端口的时候是主动传输模式。(active)
当服务器开启的是随机端口,而客户端开启的也是随机端口的时候是被动传输模式。(passive)
主动模式中,客户端处于内网 防火墙保护下。
客户端随机数据端口不能被防火墙识别。
服务器传输到防火墙的所有数据包都会被丢弃!
参考资料:
https://blog.csdn.net/zhangyuan12805/article/details/71425385
https://blog.csdn.net/uagvdu/article/details/76222993