FTP是互联网上广泛使用的文件传输协议,是TCP/IP协议簇中的协议之一,默认情况下FTP协议使用TCP端口20和端口21。其中端口20用于传输数据,端口21用于传输控制消息。
FTP采用客户端/服务器模式,即C/S。FTP服务器存储文件,用户使用FTP客户端,通过FTP协议访问位于FTP服务器上的资源。
FTP使用双TCP连接工作方式,包括控制连接和数据连接。
用于在FTP客户端和FTP服务器之间传输FTP控制命令以及命令执行信息。控制连接在整个FTP会话期间一直处于保持打开状态。
用于传输数据,包括数据的上传、下载和文件列表的发送等。数据传输结束后,该连接将终止。
FTP有两种数据传输方式,包括主动模式和被动模式。
主动模式也称为PORT模式,是FTP默认的数据传输连接方式。
在建立数据传输的过程中,由服务器主动发起连接,因此被称为主动模式。
1)工作原理:
在主动模式下,客户端会开启一个端口号大于1024的端口N和N+1两个端口,N为客户端的控制连接端口,N+1是客户端的数据端口。
2)主动模式的优缺点:
3)如何解决客户端防火墙拦截“数据连接”的建立
(1)如果防火墙开启了【拦截通知】,在使用FTP软件连接服务器时,防火墙会弹出提示,只需要点击【允许访问】即可建立连接。
(2)如果防火墙没有开启“拦截通知”,则需要将应用程序添加到防火墙的【允许的程序和功能】列表中。允许FTP客户端(例如WinSCP)以主动模式连接FTP服务器。
被动模式也称为PASV模式。由于主动模式的数据连接的建立有可能被客户端防火墙拦截,为了解决该问题,FTP衍生出被动连接模式。
在传输过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式 。
1)工作原理:
服务器的数据端口P是随机的,但是P端口的范围是可以设置的。客户端的控制连接端口和数据端口实际中并不是N和N+1的关系,两个端口比较接近而已;
2)被动模式的优缺点
**优点:**被动模式对FTP客户端的管理有利,因为客户端的控制连接端口和数据端口都是【准出】,Windows防火墙对于【准出】状态一般是不拦截的,所以客户端不需要任何多余的配置就可以连接FTP服务器。
**缺点:**对服务器端的管理不利。因为客户端数据端口连到FTP服务器的数据端口P时,有可能被服务器端的防火墙拦截。
3)如何解决服务器端防火墙拦截“数据连接”的建立?
为了解决P端口的放行不被服务器防火墙拦截,需要在服务器端设定P端口的范围,并在防火墙中开启这个范围端口的放行。下图是FTP服务器中指定被动模式的数据端口范围为5000-6000,然后在Windows防火墙中配置5000-6000端口允许放行。
FTP有两种文件传输方式,包括ASCII和二进制流
ASCII是默认的文件传输模式。适用于传输文本文件,本地文件转换成标准的ASCII码再传输。
适用于传送程序文件,文件按照比特流的方式进行传输。