ftp协议
如果你想往你的服务器传递文件,这是个很常见的问题,我们不仅仅要传文件,还涉及到下载文件和管理服务器文件。这是ftp协议出现了
FTP:文件传输协议 file transfer protocol
功能:
*传输文件到远程主机/从远程主机下载文件
*应用层模式;
Client/server模式
Client.发起传输的一方
*server.远程主机
ftp:RFC 959
ftp服务器: 端口号 21
和http相比,ftp面向的直接是服务器的文件系统,并且具有维持状态的特点,在文件传输管理上,ftp更胜一筹。
工作流程
*ftp客户先发起建立一个与ftp服务器端口号21之间的tcp控制连接,指定tcp作为传输层协议
*客户在建立的控制连接上获得身份认证
*客户在建立的控制连接上发送命令来浏览远程主机目录
*当服务器接收到一个文件传输命令时,在服务器端口号20创建一个与客户的tcp数据连接
*一个文件传输后,服务器结束这个tcp数据连接
*之后,再次传输,服务器创建第二个tcp与客户的数据连接来传输下一个文件
控制连接:带外发送控制信息(对比http带内控制信息)
ftp服务器要维护状态信息:当前目录,先前目录的身份认证(对比http的无状态连接)
FTP的模块架构
*USER-Pl(protocol interpreter):用户协议解释器
SERVER-Pl:服务器协议解释器
数据连接
user-DTP(Data Transfer Process):用户数据传输进程
server—DTP:服务器数据传输进程
FTP数据连接建立方式
主动模式
客户端发送RORT命令
PORT h1,h2,h3,h4,p1,p2(h1-h4是IP地址,p1-p2是端口号)
服务器根据PORT命令指定的客户端地址和端口号发起数据连接
被动模式
客户端发送PASV命令
服务器返回监听的地址和端口号*客户端发起的数据连接
FTP命令和应答
常见命令
*在控制连接上发送ASCLL文本
*USER username
*PASS password
*LIST 返回当前文件目录的文件或列表
*RETR filename获取远程主机当前目录下的一个文件
*STOR filename存放一个文件到远程主机当前目录下
常见应答
状态码及其相应短语(同http)
321 Username OK,password required
125 data connection already open;transfer starting
425 Can't open data connection*452 Error writing fiel
FTP数据传输模式
*ASCLL模式
假定正在传输的文件为简单的ascll码文本,此时ftp通常会自动地调整文件内容以便于把文件解释成另外一台计算机存储文本文件的格式(例如,互换WINDOWS和UNIX的行结束符)
*二进制模式
在二进制传输中,保存文件的位序,以便拷贝和原始文件是逐位对应的