文件传输协议——FTP
FTP是在两个计算机之间传输文件的协议。一般有两种情形,一种是需要登录的FTP文件服务器,另外一种FTP服务器是匿名的,它允许任何人进行访问。
FTP的工作机制
FTP使用两条TCP连接:一条用来控制,另一条用来数据传输。
用于控制的TCP连接主要在FTP的控制部分使用。例如:登录用户名和密码的验证,发送文件的名称等。这个连接可以通过ASCII来发送请求和接受应答。(也就是通过命令的方式)该控制连接使用的默认端口是21。当发生GET,PUT以及文件浏览的时候,每次都会建立另外一个TCP连接(默认占用20端口)。这个TCP连接是用来传输数据的,当数据传输完毕的时候,这个TCP连接就会被断开。
当FTP请求成功的时候,服务器也会返回响应,也有和HTTP类似的状态码来标识访问操作的信息。
FTP支持两种模式:
- 客户端发送PORT命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过 20端口连接至客户端的指定端口发送数据。 (从服务器向客户端建立连接)
- 客户端发送PASV命令,FTP服务器收到PASV命令后,随机打开一个临时端口,并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送。(从客户端向服务器建立连接)
大多数防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的20端口无法和内网的客户端建立一个新的连接,造成无法工作。
无论是选择PORT模式还是PASV模式都是取决于客户端的。
FTP服务器传输数据的时候可以选择是ASCII码模式或者是二进制模式。ASCII模式会在传输的时候自动调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
二进制模式中保存文件的位序,以便原始和拷贝的是逐位一一对应的。