2.11.3FTP
1.FTP概述
FTP是早期的因特网协议之一,采用CS工作模式。FTP通过TCP建立连接,使网络上的不同主机之间能够进行高效的文件传送,实现文件资源共享和信息传递。RFC 959中包含了FTP的正式规范,对其做了具体的说明。FTP具有以下几个功能:
(1)文件共享。
(2)远程文件访问。
(3)对用户透明的文件存储技术。
(4)可靠、有效的数据传送。
2.FTP工作原理
FTP客户端和服务器端的FTP程序通过TCP 20号和21号端口建立连接,一个用于传输文件数据(数据连接),另一个用于传输控制信息(控制连接)。
FTP通过控制连接让客户端可以向服务器发送FTP命令,根据登录用户的权限,获取一定的信息,控制、管理一定的服务器文件。FTP控制连接默认通过TCP 21号端口建立。FTP的控制连接建立过程如下:
①客户端通过任意端口向FTP服务器TCP 21号端口发送连接请求,服务器确认后,双方便建立一个TCP连接。
②客户端向FTP服务器发送登录请求。
③FTP服务器接收到请求后,向客户端要求登录账号。
④客户端向FTP服务器返回登录账号。
⑤FTP服务器验证登录账号(正确)后,向客户端要求登录密码。
⑥客户端向FTP服务器返回登录密码。
⑦FTP服务器验证登录密码(正确)后,双方建立FTP的控制连接。
FTP在控制连接的基础上建立数据连接,每当客户端需要下载或上传文件时就建立数据连接。FTP的数据连接有两种模式:一种是主动模式(PORT),一种是被动模式(PASV)。
(1)主动模式。
①客户端软件向FTP服务器的TCP 21号端口发送一个PORT命令,请求建立数据连接。PORT命令包含了客户端的IP地址和使用端口,告诉了服务器“××××的客户端打开了N端口,请求数据连接”。
②服务器接到请求后准备完毕,便通过PORT命令中的IP地址和端口号主动与客户端建立数据连接。
(2)被动模式。
①客户端软件向FTP服务器的TCP 21号端口发送一个PASV命令,请求建立数据连接。PASV命令只是简单地告诉服务器“××××的客户端请求数据连接”。
②服务器接到请求后准备完毕,便返回PASV命令给该客户端,告知本服务器已经打开了N端口(一般是随机产生,如1389、1390),允许你的连接。
③客户端接到PASV应答之后,自己通过PASV中的端口号N与服务器建立连接。当数据传输完毕,数据发送端便断开数据连接,但此时控制连接仍然保持。客户端可以再次建立数据连接,也可以同时建立几个数据连接,用于传输不同的文件。