计算机网络知识全面讲解:FTP的工作细节

发布于:2022-07-17 ⋅ 阅读:(449) ⋅ 点赞:(0)

文件传输协议(F?le Trans?er Protocol,FTP)是Internet中使用广
泛的文件传输协议,用于在Internet上控制文件的双向传输。基于不同
的操作系统有不同的FTP应用程序,而所有的这些应用程序都遵守同
一种协议传输文件。FTP屏蔽了各个计算机系统的细节,因而适合在
异构网络中的任意计算机之间传输文件。FTP只提供文件传输的一些
基本服务,它使用TCP实现可靠传输。FTP的主要功能是减小或消除
在不同系统中处理文件的不兼容性。
在FTP的使用当中,用户经常遇到两个概念:“下
载”(download)和“上传”(upload)。“下载”文件就是从远程主机复
制文件至自己的计算机上;“上传”文件就是将文件从自己的计算机中
复制至远程主机上。用Internet语言来说,用户可通过客户端程序向
(从)远程主机上传(下载)文件。

1.4.1 FTP的工作细节

与大多数Internet服务一样,FTP也是一个客户端/服务器系统。用
户通过一个支持FTP的客户端程序连接到在远程主机上的FTP服务器程
序。用户通过客户端程序向FTP服务器程序发出命令,FTP服务器程序
执行用户所发出的命令,并将执行的结果返回到客户端。例如,客户
端程序发出一条命令,要求FTP服务器向客户端传输某一个文件的一
份副本,FTP服务器会响应这条命令,将指定文件送至客户端。客户
端程序代表用户接收到这个文件,将其存放在用户目录中。
一个FTP服务器进程可以为多个客户进程提供服务。FTP服务器由
两大部分组成:一个主进程,负责接收新的请求;若干从属进程,负
责处理单个请求,如图1-23所示。下面是主进程的工作过程。

1)打开熟知端口(如21),使客户进程能够连接上。
(2)等待客户进程发送连接请求。
(3)启动从属进程处理客户进程发送的连接请求,从属进程处理
完请求后结束,从属进程在运行期间可以根据需要创建其他一些子进
程。

(4)回到等待状态,继续接收其他客户进程发起的请求,主进程
与从属进程的处理是并发进行的。
FTP和其他协议不一样的地方就是客户端访问FTP服务器需要建立
两个TCP连接,一个用来传输FTP命令(控制连接),另一个用来传
输数据。FTP控制连接在整个会话期间都保持打开,只用来发送连接
或传输请求。当客户进程向FTP服务器发送连接请求时,寻找连接服
务器进程的熟知端口21,同时还要告诉服务器进程自己的另一个端口
号码,用于建立数据传输连接。接着,服务器进程用自己传输数据的
熟知端口20与客户进程所提供的端口号码建立数据传输连接,FTP使
用了两个不同的端口号,所以数据连接和控制连接不会混乱。
在FTP服务器上需要开放两个端口,一个命令端口(或称为“控制
端口”)和一个数据端口。通常21端口是命令端口,20端口是数据端
口。应注意的是,当混入主动或被动模式的概念时,数据端口就有可
能不是20端口了。
FTP建立传输数据的TCP连接模式分为主动模式和被动模式。

1.主动模式FTP
主动模式下,FTP客户端从任意的非特殊端口1026( >1023)连
入FTP服务器的命令端口——21端口,如图1-24所示。然后客户端在
1027( +1)端口监听。

第①步,FTP客户端提交PORT命令并允许FTP服务器回连它的数
据端口(1027端口)。
第②步,FTP服务器返回确认。
第③步,FTP服务器向客户端发送TCP连接请求,目标端口为
1027,源端口为20,为传输数据发起建立连接的请求。
第④步,FTP客户端发送确认数据报文ACK包,目标端口为20,
源端口为1027,建立起传输数据的连接。
主动模式下FTP服务器防火墙只需要打开TCP的21端口和20端
口,FTP客户端防火墙要将TCP端口号大于1023的端口全部打开。
主动模式下FTP的主要问题实际上在于客户端。FTP客户端并没有
实际建立一个到FTP服务器数据端口的连接,它只是简单地告诉FTP服
务器自己监听的端口号,FTP服务器再回来连接客户端这个指定的端
口。对客户端的防火墙来说,这是从外部系统建立的到内部客户端的
连接,通常会被阻塞,除非关闭客户端防火墙。

2.被动模式FTP
为了解决FTP服务器发起的到客户端的连接问题,人们开发了一
种不同的FTP连接方式。这就是所谓的被动方式,或者叫作“PASV”,
当客户端通知FTP服务器它处于被动模式时才启用。
在被动模式FTP中,命令连接和数据连接都由客户端发起,这样
就可以解决从FTP服务器到客户端建立的数据传输连接请求被客户端
防火墙过滤掉的问题,如图1-25所示。当开启一个FTP连接时,客户
端打开两个任意的非特权的本地端口( >1024和 +1)。第一个端
口连接服务器的21端口,但与主动模式的FTP不同,客户端不会提交
PORT命令并允许服务器回连它的数据端口,而是提交PASV命令。这
样做的结果是FTP服务器会开启一个任意的非特权的端口(
>1024),并发送PORT P命令给客户端。然后客户端发起从本地端口PN
+1到FTP服务器的端口 的连接用来传输数据。 

图1-25 FTP被动模式

 对FTP服务器端的防火墙来说,需要打开TCP的21端口和大于
1023的端口。
第①步,客户端的命令端口与FTP服务器的命令端口建立连接,
并发送命令PASV。
第②步,FTP服务器返回命令PORT 2024,告诉客户端服务器用哪
个端口侦听数据连接。
第③步,客户端初始化一个从自己的数据端口到服务器端指定的
数据端口的数据连接。
第④步,FTP服务器给客户端的数据端口返回一个ACK响应。
被动模式的FTP解决了客户端的许多问题,但同时给服务器端带
来了更多的问题。最大的问题是需要允许从任意远程终端到FTP服务
器高位端口的连接。幸运的是,许多FTP守护程序允许管理员指定FTP
服务器使用的端口范围。


网站公告

今日签到

点亮在社区的每一天
去签到