文件传输(FTP)FTP是什么?•FTP是FileTransferProtocol的英文缩写,即“文件传输协议”。•用于在计算机之间传送文件把文件从本地主机传送到远程主机称为“上载”•Upload,Put把文件从远程主机传送到本地主机称为“下载”•Download,GetFTP可以传输各种类型的文件:•文本文件(ASCII)、二进制文件(Binary);•压缩文件、非压缩文件。登录FTP服务器的用户需要注册才能登录,但有的FTP服务器也允许匿名(Anonymous)登录。ftpftp.szu.edu.cnUsername:anonymousPassword:test@abc匿名登录FTPAnonymousFTPServerftp.szu.edu.cnFTP工作原理FTP基于TCP协议,使用TCP协议实现文件的传输。FTP以客户/服务器方式工作:•FTP客户程序,如Cuteftp等,运行在用户计算机上用户通过它发出传输文件的请求•FTP服务程序,如Serv-U等,运行在服务器上接收并响应客户程序的请求,把指定的文件发送到客户端在进行文件传输时,FTP的客户和服务器之间要建立两个TCP连接:•控制连接(ControlConnection):客户程序与FTP服务器的端口21建立控制连接,并在整个FTP会话过程中维持连接;控制连接用于传输请求和应答信息;由FTP客户端发起控制连接。•数据连接(DataConnection):数据连接用于传输文件;每传输一个文件都要建立一个数据连接(在FTP服务器的端口20);由FTP服务器发起数据连接。TCP数据传送控制FTP客户端TCP数据传送控制FTP服务器端X21因特网20Y由客户端发起由服务器端发起FTP的文件传输过程建立控制连接(客户端发起)(1)客户端发送一个TCPSYN(TCP同步)包给服务器端,目的端口为21,源端口为一个临时端口;(2)服务器端发送SYNACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的临时端口;(3)客户端发送一个ACK(确认)包。•控制连接建立后,客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答。主动模式•当用户发出一个文件传输请求时,客户端软件通过控制连接向服务器发出一个PORT命令,在PORT命令中指定一个临时端口,目的是希望服务器在建立数据连接时使用这个临时端口;(1)服务器端发送一个SYN包给客户端,源端口为20,目的端口为客户端在PORT命令中指定的临时端口;(2)客户端发送一个SYNACK包,源端口为临时端口,目的端口为20;(3)服务器端发送一个ACK包。被动模式•客户端发送PASV命令,通知服务器自己处于被动模式•服务器开放P端口监听,同时发出PORTP通知客户端•客户端通过一个临时端口去连接服务器的P端口(由客户端发起连接)建立数据连接文件传输•数据连接建立后,发送数据的一方使用这个连接把文件传送给对方。断开数据连接•当数据传输完成后:(1)发送数据的主机发出一个FIN命令来结束数据连接;(2)接收方以ACK确认;(3)接收方紧接着也发送一个FIN命令;(4)发送数据的主机以ACK确认。断开控制连接•FTP会话结束后:(1)客户端以FIN命令来关闭控制连接(2)服务器端以ACK确认;(3)服务器端发送一个FIN;(4)客户端以ACK确认。ftpClientftpServerTCP:21控制连接初始化,控制端口SYNPortxxxx----------------------Port21SYN,ACKPortxxxx----------------------Port21ACKPortxxxx----------------------Port21控制操作:用户列目录或传输文件Port,IP,PortyyyyPortxxxx----------------------Port21PortSuccessfulPortxxxx----------------------Port21List,RetrorStorPortxxxx----------------------Port21TCP:20数据连接初始化,数据端口SYNPortyyyy----------------------Port20SYN,ACKPortyyyy----------------------Port20ACKPortyyyy----------------------Port20数据操作:数据传输DataPortyyyy---------------------Port20……FTP的基本命令启动FTP•FTP[host]例如:%ftpunivphys.szu.edu.cn(或ftpopenunivphys.szu.edu.cn)username:wanlh实名登录password:******或:username:anonymous匿名登录password:abc@123(1)帮助命令组•列出所有的ftp命令ftp?ftphelp•列出某个ftp命令的使用说明例如:列出open命令的使用说明•ftphelpopen(2)连接命令组•ftpopenhost连接远程主机•ftpclose结束当前连接,不退出ftp•ftpdisconnect结束当前连接,不退出ftp•ftpbye终止所有连接,退出ftp•ftpquit终止所有连接,退出ftp(3)目录操作与列表命令组•ftppwd列出当前目录名•ftpcd进入下一级目录•ftpcdup退回上一级目录•ftpls[remote-dir][local-file]将远程目录中的文件列表存入本地文件中•ftpmlsremote-filelocal-file将远程目录中指定类型的文件列表存入本地文件中例如,要将后缀为txt的文件列表存入dirfile.list文件:ftpmls*.txtdirfile.list•ftpnlist-排序方法[remote-dir][local-file]将远程目录中的文件列表按时间(rt)或字符顺序(rc)存入本地文件。例如:ftpnlist-rt/disk1/testtest.list(4)文件传输命令组•上传文件ftpputlocal-file[remote-file]•若不指定远程文件名,则远程文件名同本地文件名ftpsendlocal-file[remote-file]ftpappendlocal-file[remote-file]ftpmputlocal-file一次上传多个文件•下载文件ftpget[local-file]remote-file•若不指定本地文件名,则本地文件名同远程文件名ftprecv[local-file]remote-fileftpreget[local-file]remote-file•从远程重新下载文件,参数同getftpmgetremote-file一次下载多个文件ftppromptoff关闭确认提示文件传输功能图FTPClientFTPServerputmputgetmgetrecvregetsendappend(5)文件类型操作命令组•ftpascii设置传输文件的类型为文本•ftpbinary设置传输文件的类型为二进制(6)文件属性操作命令组•ftpchmodmoderemote-file设置文件权限,权限由mode规定例如:ftpchmod666aa使同组用户和其他用户都有读写权(7)查看文件内容命令•ftpgetfilename-只显示远程文件filename的内容,-代表本地(8)其他•promtrename、delete,mdelete,size,……FTP使用举例下例左边编号[01]~[15]是后加的。用户的输入部分用带下划线的蓝色斜体字表示。[01]ftphpc.szu.edu.cn[02]Connectedtohpc.szu.edu.cn.[03]220hpc.szu.edu.cnFTPserver(Versionwu-2.5.0(1)TueJul1310:20:43CDT.[04]Name(ftp.szu.edu.cn:teng):anonymous[05]331Guestloginok,sendyourcompletee-mailaddressaspassword.[06]Password:test@123[07]230Guestloginok,accessrestrictionsapply.[08]ftpcd/pub/rfc[09]250CWDcommandsuccessful.[10]ftpgetrfc959.txtftpinfo[11]200PORTcommandsuccessful.[12]150OpeningASCIImodedataconnectionforrfc959.txt(147316bytes).[13]226Transfercomplete.local:ftpinforemote:rfc959.txt151249bytesreceivedin2.1seconds(71.27Kbytes/s)[14]ftpbye[15]221-Youhavetransferred151249bytesin1files.221-Totaltrafficforthissessionwas152964bytesin1transfers.221-ThankyouforusingtheFTPserviceonvineyard.xjtu.edu.cn.221Goodbye.例子中各行信息的解释如下:[01]用户输入FTP命令启动本地FTP客户程序和FTP服务器(hpc.szu.edu.cn)建立连接。[02]本地FTP客户程序显示的连接成功的信息。[03]远地服务器返回的信息,“220”表示“服务就绪”。[04]本地FTP提示用户输入用户名。输入“anonymous”表示请求匿名FTP服务。[05]远地服务器提示“用户名正确”,需要口令。[06]本地FTP提示用户输入口令。用户可以输入自己的邮件地址,例如“test@123”。[07]服务器返回“230”提示信息,表示用户注册成功。[08]“ftp”是FTP的命令提示符。用户可以输入相应的命令,如“help”,“dir”等。这里是改变目录“cd”到RFC文件所在的目录。[09]远地服务器返回信息,表示改变目录命令已经成功。“CWD”代表“ChangeWorkingDirectory”。[10]用户要求获得名为“rfc959.txt”的文件,并改名为“ftpinfo”。[11]远地服务器提示“PORT”信息,表示要建立数据连接。“200”表示命令正确。[12]数字“150”表示“文件状态正确,正在建立数据连接,并进行文件传输”。[13]数字“226”表示“数据传输完毕,释放数据连接”。[14]用户输入退出命令。[15]远地服务器表示FTP工作结束。图形界面下的FTP客户端Windows环境下的FTP传输软件很多,用法各异;图形界面下的FTP,简化了上述命令,并且只要用鼠标点击即可,但基本思路与上述介绍类似。FlashFXPWS_FTPCuteFTPLeapFTPLeechFTP需要记住若干FTP的要素:主机地址:IP地址或域名登录方式:实名或匿名用户标识:k1010或anonymous用户口令:xxxx或abc@edf本地工作目录:c:\远程主机的工作目录:/home/k1010或/pub图形界面下的FTP客户程序图形界面下的FTP程序简化了操作,只要用鼠标点击即可,但执行流程与上述介绍类似。Windows环境下的FTP传输软件包括:•FlashFXP、WS_FTP、CuteFTP、LeapFTP、LeechFTP、……不论在什么界面下进行FTP操作,以下要素都是必须的:主机