文件传输之FTP协议(FTP Protocol for File Transfer)
文件传输之FTP协议
文件传送协议FTP
FTP除了提供文件传送的一些基本服务的外,还有一个主要的功能--减少或消除在不同操作系统下处理文件的不兼容性。
例如电脑的Windows系统和Linux系统就是两种不同的操作系统,类似于手机的安卓系统和苹果系统。
这个功能可以实现文件在异构的网络中任意计算机之间的传送。
接下来我们对FTP的基本原理进行了解。
FTP使用TCP可靠运输服务,且使用客户服务器方式。
客户和服务器都是指通信中所涉及的两个应用进程。客户是服务请求方,服务器是服务提供方。
一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:
-
主进程,负责接受新的请求;
-
若干个从属进程。负责处理单个请求。
主进程的工作步骤:
-
打开熟知端口(端口号为21),使客户进程能够连接上。
-
等待客户进程发出连接请求。
-
启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
-
回到等待状态,继续接受其他客户进程发来的请求。主进程和从属进程的处理是并发进行的。
以上主进程的工作步骤类似于一家大型商场(计算机)其中的一个某某销售店(进程),老板(主进程)打开门做生意(对应上面的第一步),来了客人(对应第二步),老板对店员(从属进程)说,“来贵客了,赶紧接待一下”(对应第三步),客人已被店员接待,老板继续等待看是否客人来店消费(对应第四步)。
FTP的工作情况如图所示。图中的椭圆表示在系统中进行的进程。为了简单起见,图中的服务器端主进程没有画上,只画了两个从属进程:控制进程和数据传送进程。而客户端与其相比还多了个用户界面进程用来和用户交互。
文章开头已提到FTP使用TCP的可靠传输,因此在进行文件传输时,FTP的客户和服务器之间要建立TCP连接。
FTP的客户和服务器之间要建立两个并行的TCP连接:
-
控制连接:对客户发出的传送请求进行处理以及对文件的传输进行控制,并不用来传送文件。
-
数据连接:传输文件。
注意:
-
控制连接在整个会话期间一直保持打开,用于传送FTP的相关控制命令。
-
数据连接用于文件传输,在每次文件传输时才建立,传输结束后就关闭。
知识背景:
端口号就是用来标识计算机里面运行的程序(即进程)。一个计算机有很多同时运行着的程序(例如,你同时打开王者和微信),为了区分谁是谁,于是就引入了端口号的概念。
数据连接和控制连接会不会发生混乱呢?
不会!FTP使用了两个不同的端口号。
一个是服务器的熟知端口 21,便于客户进程的查找,进而建立客户和服务器的连接--即建立控制连接。
一个是服务器用自己传送数据的熟知端口 20 与客户进程所提供的端口号建立数据传送连接。
FTP的两种模式:
建立数据通道时,FTP服务器使用熟知端口号20主动连接FTP客户,此情况称为主动模式。
建立数据通道时,FTP服务器被动等待FTP客户的连接,建立时,服务器随机选择临时端口号与客户进行连接,此情况称为被动模式。
注意:
所以:
-
服务器和客户建立数据连接使用TCP 20端口建立数据连接要在具体条件下进行对错判断。
-
唯一确定的就是FTP服务器的控制端口 21 ,让客户进程能够找到。
FTP常见用途:
1.计算机之间传输文件,尤其是用于批量传输文件。
2.网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器。
应用场景
FTP广泛应用于各种场景,包括:
文件共享:允许用户通过FTP客户端程序访问远程服务器上的文件。
跨平台操作:支持在Linux、Windows等不同操作系统之间进行文件传输。
网站开发:在开发网站时,通常利用FTP协议将网页或程序传到Web服务器上4。
安全性问题
尽管FTP在文件传输中表现出色,但它也存在一些安全性问题。由于FTP报文在传输过程中不进行加密,通过抓包软件可以直接查看报文内容,包括用户名和密码,这在一定程度上增加了安全风险5。